<?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>216816</bug_id>
          
          <creation_ts>2020-09-22 01:28:19 -0700</creation_ts>
          <short_desc>An issue about evaluating instanceof</short_desc>
          <delta_ts>2024-07-13 17:31:41 -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 Local Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>270065</dup_id>
          
          <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>
          <dependson>228763</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="NWU_NISL">nisl_grammarly1</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>annulen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</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>1690652</commentid>
    <comment_count>0</comment_count>
    <who name="NWU_NISL">nisl_grammarly1</who>
    <bug_when>2020-09-22 01:28:19 -0700</bug_when>
    <thetext>According to ES10.0, If an object does not define or inherit &quot;@@hasInstance&quot; it uses the default &quot;instanceof&quot; semantics. When changing the value of &quot;__proto__&quot; of an object into &quot;String&quot;, the algorithm to be used will be &quot;Function.prototype[@@hasInstance]&quot; instead of the default semantics. So the output of the testcase below is &quot;false&quot; as other engines do. This may be an issue of javascriptCore.

#### version
dbae081


#### command
webkit/WebKitBuild/Debug/bin/jsc testcase.js testcase.js


#### testcase
var  obj = {__proto__:String};
var result = &quot;hello&quot; instanceof obj;
print(result);


#### output
TypeError: obj is not a function. (evaluating &apos;&quot;hello&quot; instanceof obj&apos;)


#### expected output
false


contributor:Yuan Wang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690900</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-22 15:42:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/69396430&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691752</commentid>
    <comment_count>2</comment_count>
    <who name="NWU_NISL">nisl_grammarly1</who>
    <bug_when>2020-09-24 20:31:27 -0700</bug_when>
    <thetext>sorry, I accidentally entered the wrong command.
#### Right command
webkit/WebKitBuild/Debug/bin/jsc testcase.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693095</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-29 12:59:11 -0700</bug_when>
    <thetext>(In reply to NWU_NISL from comment #0)
&gt; #### testcase
&gt; var  obj = {__proto__:String};
&gt; var result = &quot;hello&quot; instanceof obj;
&gt; print(result);

https://test262.report/browse/language/expressions/instanceof/prototype-getter-with-primitive.js failure seems to be related.

To fix this, JSObject::{hasInstance,defaultHasInstance} should be redesigned to accept a constructor instead of a prototype.
Also, we&apos;d need to make sure that primitives are correctly handled by JIT tiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735021</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-02 14:02:50 -0800</bug_when>
    <thetext>Yes, and if it is possible, we should avoid bloating bytecodes for instanceof. Currently, our implementation is not so good...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735025</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-02 14:13:10 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; Yes, and if it is possible, we should avoid bloating bytecodes for
&gt; instanceof. Currently, our implementation is not so good...

Absolutely, it is the bytecode count that makes this change quite complicated.
The best I could do is +1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735026</commentid>
    <comment_count>6</comment_count>
      <attachid>421996</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-02 14:16:18 -0800</bug_when>
    <thetext>Created attachment 421996
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776383</commentid>
    <comment_count>7</comment_count>
      <attachid>433333</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-12 11:20:07 -0700</bug_when>
    <thetext>Created attachment 433333
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776467</commentid>
    <comment_count>8</comment_count>
      <attachid>433364</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-12 15:09:32 -0700</bug_when>
    <thetext>Created attachment 433364
WIP

Introduce JSCell::isJSFunction(), fix ASSERT in emitNodeInTailPosition() and use correct uint8_t comparison in LLInt&apos;s op_is_cell_with_type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777302</commentid>
    <comment_count>9</comment_count>
      <attachid>433615</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-15 13:01:30 -0700</bug_when>
    <thetext>Created attachment 433615
WIP

Don&apos;t use &apos;bba&apos; in LLInt in attempt to fix MASM build, fix JSCallbackObject&lt;Parent&gt;::customHasInstance() to use callFrame-&gt;thisValue(), fix JSValueIsInstanceOfConstructor to call hasInstance(), don&apos;t perform defaultHasInstance() for JSCallbackConstructor as it&apos;s non-callable, and swap arguments inside checkForbiddenPrototype().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777504</commentid>
    <comment_count>10</comment_count>
      <attachid>433675</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-16 07:20:08 -0700</bug_when>
    <thetext>Created attachment 433675
WIP

Revert r161564 and introduce isNonCallableAPIObjectThatPerformsDefaultHasInstance() instead to ensure correct &apos;instanceof&apos; behavior for API objects, fix arguments for operationInstanceOfOptimize() to fix 32-bit build, and replace &apos;bbb&apos; with LLInt instruction that sets value in attempt to fix MASM build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777567</commentid>
    <comment_count>11</comment_count>
      <attachid>433694</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-16 12:47:37 -0700</bug_when>
    <thetext>Created attachment 433694
WIP

Bring back accidently removed throwException() to JSObject::hasInstance(), remove UntypedUse assert in compileInstanceOf() from 32-bit builds, and hoist &apos;getu&apos; LLInt instructions in attempt to fix MASM build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777731</commentid>
    <comment_count>12</comment_count>
      <attachid>433737</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-17 19:26:00 -0700</bug_when>
    <thetext>Created attachment 433737
WIP

Introduce _llint_slow_path_is_cell_with_type for MSVC targets in attempt to fix Windows builds, augment JSTypeRange with fromBits() / rawBits() to clean up casts, pass correct OpInfo for IsCellWithType in op_iterator_open, and speculate cell for &apos;prototype&apos; in 32-bit compileInstanceOf().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778938</commentid>
    <comment_count>13</comment_count>
      <attachid>434051</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-22 18:30:38 -0700</bug_when>
    <thetext>Created attachment 434051
WIP

Bring back Function.prototype[Symbol.hasInstance] being a built-in function, reland r161564, add microbenchmarks for Function.prototype[Symbol.hasInstance] and Object.prototype.isPrototypeOf, fix &apos;instanceof&apos; not to throw on API objects that lack &apos;hasInstance&apos;, fix JSValueIsInstanceOfConstructor not to invoke Symbol.hasInstance on non-callable targets, merge JSObject::hasInstance() overrides for clarity, and improve testapi coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782640</commentid>
    <comment_count>14</comment_count>
      <attachid>435108</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-08-06 19:57:08 -0700</bug_when>
    <thetext>Created attachment 435108
Patch

Add tests, move js* methods from Operations.h to CommonSlowPaths namespace, refine speculated type for InternalFunction to drop SpecObjectOther, adding DFG use kind / fixup rules and introducing SpecObjectMaybeCallable to preserve correct DFG folding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2046143</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2024-07-13 17:31:41 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 270065 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421996</attachid>
            <date>2021-03-02 14:16:18 -0800</date>
            <delta_ts>2021-07-12 11:20:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>instanceof-4.diff</filename>
            <type>text/plain</type>
            <size>147419</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLWNlbGwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmlt
aXRpdmUtY2VsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
bnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEg
QEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQorICAgIGZ1bmN0aW9uIEJh
cigpIHt9CisKKyAgICB2YXIgbnVtID0gNC41OworICAgIHZhciBzdHIgPSAic3RyIjsKKyAgICB2
YXIgc3ltID0gU3ltYm9sKCk7CisgICAgdmFyIGludCA9IDEwbjsKKworICAgIHZhciByZXMgPSAw
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsraSkgeworICAgICAgICByZXMgfD0g
bnVtIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8fCBzdHIgaW5zdGFuY2VvZiBCYXIKKyAg
ICAgICAgICAgIHx8IHN5bSBpbnN0YW5jZW9mIEZvbworICAgICAgICAgICAgfHwgaW50IGluc3Rh
bmNlb2YgQmFyOworICAgIH0KKworICAgIGlmIChyZXMpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkIGFzc2VydGlvbiEiKTsKK30oKSk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwkobm9uZXhp
c3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1u
b24tY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisoZnVuY3Rpb24oKSB7
CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQorCisgICAgdmFy
IHJlcyA9IDA7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAg
IHJlcyB8PSB1bmRlZmluZWQgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IG51bGwgaW5z
dGFuY2VvZiBCYXIKKyAgICAgICAgICAgIHx8IHRydWUgaW5zdGFuY2VvZiBGb28KKyAgICAgICAg
ICAgIHx8IDEwMDAgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorCisgICAgaWYgKHJlcykKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSgpKTsKSW5kZXg6IEpTVGVz
dHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3Qy
NjIvZXhwZWN0YXRpb25zLnlhbWwJKHJldmlzaW9uIDI3MjgzNykKKysrIEpTVGVzdHMvdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMTYxNCw5ICsxNjE0LDYgQEAK
ICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBTeW50YXhFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKIHRlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvZ2VuZXJhdG9ycy9zY29wZS1wYXJhbS1yZXN0LWVsZW0tdmFyLW9wZW4uanM6
CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq291dHNpZGXC
uywgwqtpbnNpZGXCuykgdG8gYmUgdHJ1ZScKLXRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvaW5z
dGFuY2VvZi9wcm90b3R5cGUtZ2V0dGVyLXdpdGgtcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAi
VGVzdDI2MkVycm9yOiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKLSAgc3RyaWN0IG1v
ZGU6ICJUZXN0MjYyRXJyb3I6IGdldHRlciBmb3IgJ3Byb3RvdHlwZScgY2FsbGVkIgogdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9sb2dpY2FsLWFzc2lnbm1lbnQvbGdjbC1hbmQtYXNzaWdubWVu
dC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjI6IFRoaXMg
c3RhdGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLicKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtbnVsbGlzaC1hc3NpZ25tZW50LW9wZXJhdG9y
LW5vbi1zaW1wbGUtbGhzLmpzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw2IEBACiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3MgbW9kZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSw3
IEBACiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92
ZXJyaWRlc0dldENhbGxEYXRhIHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IFByb2hpYml0
c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRF
bnVtOwotICAgIHN0YXRpY19hc3NlcnQoIShTdHJ1Y3R1cmVGbGFncyAmIEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UpLCAidXNpbmcgY3VzdG9tSGFzSW5zdGFuY2UiKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJv
cGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAg
ICAgfkpTQ2FsbGJhY2tPYmplY3QoKTsKIApAQCAtMjA5LDcgKzIwOCw3IEBACiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKIAotICAgIHN0YXRp
YyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tSGFzSW5zdGFuY2VJbXBsKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25TcGVj
aWFsUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlz
aW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTIgKzExMiwxNiBAQAogdm9pZCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIAogICAgIFZlY3RvcjxKU09iamVjdEluaXRpYWxpemVDYWxsYmFjaywg
MTY+IGluaXRSb3V0aW5lczsKKyAgICBib29sIGN1c3RvbUhhc0luc3RhbmNlID0gZmFsc2U7CiAg
ICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsKICAgICBkbyB7CiAgICAgICAgIGlm
IChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlh
bGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5lcy5hcHBlbmQoaW5pdGlhbGl6ZSk7CisgICAg
ICAgIGlmIChqc0NsYXNzLT5oYXNJbnN0YW5jZSkKKyAgICAgICAgICAgIGN1c3RvbUhhc0luc3Rh
bmNlID0gdHJ1ZTsKICAgICB9IHdoaWxlICgoanNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNz
KSk7CiAgICAgCiAgICAgLy8gaW5pdGlhbGl6ZSBmcm9tIGJhc2UgdG8gZGVyaXZlZApAQCAtMTI4
LDYgKzEzMiw5IEBACiAgICAgfQogICAgIAogICAgIG1fY2xhc3NJbmZvID0gdGhpcy0+Y2xhc3NJ
bmZvKGdldFZNKGdsb2JhbE9iamVjdCkpOworCisgICAgaWYgKGN1c3RvbUhhc0luc3RhbmNlKQor
ICAgICAgICB0aGlzLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgMSwgdGhpcy0+Y3VzdG9tSGFzSW5z
dGFuY2VJbXBsLCBOb0ludHJpbnNpYywgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
QEAgLTQ4OCwxNCArNDk1LDE4IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2VJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkpTQ2FsbGJhY2tPYmplY3QncyBbU3ltYm9sLmhh
c0luc3RhbmNlXSBtZXRob2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9z
KTsKKwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVj
dCkpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIAog
ICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09i
amVjdEhhc0luc3RhbmNlQ2FsbGJhY2sgaGFzSW5zdGFuY2UgPSBqc0NsYXNzLT5oYXNJbnN0YW5j
ZSkgewpAQCAtNTA3LDExICs1MTgsMTEgQEAKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJ
bnN0YW5jZShleGVjUmVmLCB0aGlzUmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRp
b24pKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNz
IFBhcmVudD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAko
cmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDkgKzI4OCw3IEBACiAgICAgSlNWYWx1ZSBqc1Zh
bHVlID0gdG9KUyhnbG9iYWxPYmplY3QsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiBqc0NvbnN0
cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zdHJ1
Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJbnN0YW5j
ZShnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhy
b3duCisgICAgYm9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5kZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgLy8gZmFsc2UgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93
bgogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24p
ID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBw
ZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBw
ZXJNYXAubW0JKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAKIAogICAg
IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3RvclJlZik7CiAgICAg
SlNDOjpKU1ZhbHVlIGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmplY3QsIHBvc3NpYmxlSW5zdGFu
Y2UpOwotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFs
T2JqZWN0LCBpbnN0YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIHJldHVybiBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwogfQogCiBzdGF0aWMgSlNDOjpKU09i
amVjdCogbWFrZVdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBp
ZCB3cmFwcGVkT2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsNyBAQAogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvTnVtYmVyQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24g
MjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICQoUFJPSkVDVF9ESVIp
L2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTnVtYmVy
Q29uc3RydWN0b3IuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9y
LmpzCiskKFBST0pFQ1RfRElSKS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMKICQoUFJPSkVD
VF9ESVIpL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVp
bHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21p
c2VQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgXAorICAgICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVp
bHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxMzEs
NiArNDEzMSw3IEBACiAJCTdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVs
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFBsdXJhbFJ1bGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1
Y3R1cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTRFRTcwRTBFQkI3
QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NDFFOTZCNjI1OEQzOTE4MDBDOUM4MkMgLyogT2JqZWN0UHJvdG90eXBlLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gT2JqZWN0UHJvdG90eXBlLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDkyNUE5QTIyQjMwQ0JBMDBEMURGRkYg
LyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDkyNUE5QjIyQjMwQ0JBMDBEMURGRkYgLyogUmVn
RXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
UmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04ODU1LDYgKzg4NTYsNyBAQAogCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAv
KiBNb2R1bGVMb2FkZXIuanMgKi8sCiAJCQkJQTUyNzA0ODYxRDAyN0M4ODAwMzU0QzM3IC8qIE51
bWJlckNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVDMUI2NUQ5QjEwMDlEQjFFRiAvKiBP
YmplY3RDb25zdHJ1Y3Rvci5qcyAqLywKKwkJCQk4NDFFOTZCNjI1OEQzOTE4MDBDOUM4MkMgLyog
T2JqZWN0UHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVFMUI2NUQ5QjEwMDlEQjFFRiAvKiBQ
cm9taXNlQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUQxQjY1RDlCMTAwOURCMUVGIC8q
IFByb21pc2VPcGVyYXRpb25zLmpzICovLAogCQkJCTdDRkJBQzFDMThCNTM1RTUwMEQwMDc1MCAv
KiBQcm9taXNlUHJvdG90eXBlLmpzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsOSArMTIwLDcgQEAKICAgICBtYWNybyhpc1NoYXJlZFR5cGVkQXJyYXlWaWV3KSBcCiAgICAg
bWFjcm8oaXNEZXRhY2hlZCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRv
cikgXAotICAgIG1hY3JvKGlzQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKKyAgICBtYWNybyhmdW5j
dGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sKSBcCiAgICAgbWFjcm8oaXNBcnJheVNsb3cp
IFwKICAgICBtYWNybyhzYW1lVmFsdWUpIFwKICAgICBtYWNybyhjb25jYXRNZW1jcHkpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90
b3R5cGUuanMJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsMjEgKzQyLDYg
QEAKICAgICByZXR1cm4gdGhpcy5AYXBwbHkodGhpc1ZhbHVlLCBhcmd1bWVudFZhbHVlcyk7CiB9
CiAKLUBvdmVycmlkZGVuTmFtZT0iW1N5bWJvbC5oYXNJbnN0YW5jZV0iCi1mdW5jdGlvbiBzeW1i
b2xIYXNJbnN0YW5jZSh2YWx1ZSkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBp
c0NhbGxhYmxlKHRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoQGlzQm91
bmRGdW5jdGlvbih0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rp
b24odGhpcywgdmFsdWUpOwotCi0gICAgdmFyIHRhcmdldCA9IHRoaXMucHJvdG90eXBlOwotICAg
IHJldHVybiBAaW5zdGFuY2VPZih2YWx1ZSwgdGFyZ2V0KTsKLX0KLQogZnVuY3Rpb24gYmluZCh0
aGlzVmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBbGV4
ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24g
aXNQcm90b3R5cGVPZih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoIUBp
c09iamVjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBAaW5z
dGFuY2VPZih2YWx1ZSwgQHRvT2JqZWN0KHRoaXMpKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjks
NyBAQAogICAgIG1hY3JvKGlzTWFwSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc1NldEl0ZXJhdG9y
KSBcCiAgICAgbWFjcm8oaXNVbmRlZmluZWRPck51bGwpIFwKKyAgICBtYWNybyhpbnN0YW5jZU9m
KSBcCiAgICAgbWFjcm8odGFpbENhbGxGb3J3YXJkQXJndW1lbnRzKSBcCiAgICAgbWFjcm8odGhy
b3dUeXBlRXJyb3IpIFwKICAgICBtYWNybyh0aHJvd1JhbmdlRXJyb3IpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24g
MjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
Ygkod29ya2luZyBjb3B5KQpAQCAtNDAyLDEzICs0MDIsNiBAQAogICAgICAgICBib3R0b21Qcm9m
aWxlOiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpvdmVycmlkZXNfaGFzX2luc3RhbmNlLAotICAg
IGFyZ3M6IHsKLSAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGNvbnN0cnVj
dG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGhhc0luc3RhbmNlVmFsdWU6IFZpcnR1YWxS
ZWdpc3RlciwKLSAgICB9Ci0KIG9wIDppbnN0YW5jZW9mLAogICAgIGFyZ3M6IHsKICAgICAgICAg
ZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC00MzQsNyArNDI3LDggQEAKICAgICBhcmdzOiB7CiAg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIHR5cGU6IEpTVHlwZSwKKyAgICAgICAgZmlyc3RUeXBlOiBKU1R5cGUs
CisgICAgICAgIGxhc3RUeXBlOiBKU1R5cGUsCiAgICAgfQogCiBvcCA6aW5fYnlfdmFsLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDYgQEAKICAg
ICBVU0VTKE9wU2V0UHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKICAgICBVU0VTKE9wQ2hlY2tQ
cml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9w
ZXJ0eSkKLSAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJ
bnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQog
ICAgIFVTRVMoT3BBZGQsIGxocywgcmhzKQogICAgIFVTRVMoT3BNdWwsIGxocywgcmhzKQpAQCAt
NDg4LDcgKzQ4Nyw2IEBACiAgICAgREVGUyhPcEdldEJ5SWRXaXRoVGhpcywgZHN0KQogICAgIERF
RlMoT3BHZXRCeVZhbFdpdGhUaGlzLCBkc3QpCiAgICAgREVGUyhPcEdldFByb3RvdHlwZU9mLCBk
c3QpCi0gICAgREVGUyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBkc3QpCiAgICAgREVGUyhPcElu
c3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9wSW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERF
RlMoT3BHZXRCeVZhbCwgZHN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDEsNyArMjQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJEdW1wKGNvZGVC
bG9jaygpKSwgIikuXG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGlmIChjYWxsZWUoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBl
KSB7CisgICAgICAgICAgICAgICAgaWYgKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKGNhbGxl
ZSgpLT50eXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcmluZyBjYWxsIHRvICIsCkBAIC0yNzAsNyAr
MjcwLDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWlzRGlyZWN0KCkgJiYgaGF2ZUxh
c3RTZWVuQ2FsbGVlKCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQobGFzdFNlZW5DYWxsZWUoKSkpIHsK
LSAgICAgICAgaWYgKGxhc3RTZWVuQ2FsbGVlKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkK
KyAgICAgICAgaWYgKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKGxhc3RTZWVuQ2FsbGVlKCkt
PnR5cGUoKSkpCiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShqc0Nhc3Q8SlNGdW5j
dGlvbio+KGxhc3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9j
bGVhcmVkQnlHQyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcg
QEAKICAgICAvLyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBp
dCB0byByZWZlciB0byBpdHMgZXhlY3V0YWJsZS4KICAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJp
YW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9jYWxs
ZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgaWYgKFR5cGVJbmZvOjppc0pT
RnVuY3Rpb25UeXBlKG1fY2FsbGVlLT50eXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIENhbGxW
YXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1
MCw2IEBACiAgICAgICAgIHJldHVybiAiQmFkQ29uc3RhbnRDYWNoZSI7CiAgICAgY2FzZSBCYWRJ
bmRleGluZ1R5cGU6CiAgICAgICAgIHJldHVybiAiQmFkSW5kZXhpbmdUeXBlIjsKLSAgICBjYXNl
IEJhZFR5cGVJbmZvRmxhZ3M6Ci0gICAgICAgIHJldHVybiAiQmFkVHlwZUluZm9GbGFncyI7CiAg
ICAgY2FzZSBPdmVyZmxvdzoKICAgICAgICAgcmV0dXJuICJPdmVyZmxvdyI7CiAgICAgY2FzZSBO
ZWdhdGl2ZVplcm86CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICAgICBCYWRDYWNo
ZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBC
YWRDb25zdGFudENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBj
b25zdGFudCAodXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgogICAgIEJhZEluZGV4aW5n
VHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCi0g
ICAgQmFkVHlwZUluZm9GbGFncywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNv
cnJlY3QgYXNzdW1wdGlvbiBhYm91dCB3aGF0IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4K
ICAgICBPdmVyZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVn
YXRpdmVaZXJvLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6
ZXJvLgogICAgIE5lZ2F0aXZlSW5kZXgsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRl
cmVkIGEgbmVnYXRpdmUgaW5kZXggaW4gYSBwbGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNl
T2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4
LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2
bSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewotICAgIC8vIEZJWE1FOiBXZSB3b3Vs
ZG4ndCBoYXZlIHRvIGJhaWwgZm9yIG5vbkNlbGwgaWYgd2UgdGF1Z2h0IE1hdGNoU3RydWN0dXJl
IGhvdyB0byBoYW5kbGUgbm9uCi0gICAgLy8gY2VsbHMuIElmIHdlIGZpeGVkIHRoYXQgdGhlbiB3
ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHVzZSBzdW1tYXJ5KCk7Ci0gICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAorICAgIEFTU0VSVCghc3R1YkluZm8t
PnNhd05vbkNlbGwpOwogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1
YkluZm86OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1t
YXJ5KSkKICAgICAgICAgcmV0dXJuIEluc3RhbmNlT2ZTdGF0dXMoc3VtbWFyeSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJ
KHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDcgQEAKICAgICB2KGlz
RGV0YWNoZWQsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvciwg
bnVsbHB0cikgXAogICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCi0g
ICAgdihpc0JvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKLSAgICB2KGhhc0luc3RhbmNlQm91bmRG
dW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoZnVuY3Rpb25Qcm90b3R5cGVIYXNJbnN0YW5jZVN5
bWJvbCwgbnVsbHB0cikgXAogICAgIHYoaW5zdGFuY2VPZiwgbnVsbHB0cikgXAogICAgIHYoQnVp
bHRpbkxvZywgbnVsbHB0cikgXAogICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBudWxscHRyKSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTEgQEAK
ICAgICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0ludGVybmFsRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50
KCJJbnRlcm5hbEZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3Ry
aW5nKSA9PSBTcGVjU3RyaW5nKQpAQCAtNTE2LDEwICs1MjEsMTMgQEAKIAogICAgIGlmIChjbGFz
c0luZm8tPmlzU3ViQ2xhc3NPZihKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIGlmIChj
bGFzc0luZm8gPT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpCi0gICAgICAgICAgICByZXR1cm4g
U3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5jZTsKLSAgICAgICAgcmV0dXJuIFNw
ZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5zdGFuY2U7CisgICAgICAgICAgICByZXR1cm4gU3Bl
Y0JvdW5kRnVuY3Rpb247CisgICAgICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsKICAg
ICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5jdGlvbjo6
aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOworCiAgICAgaWYg
KGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTUHJvbWlzZTo6aW5mbygpKSkKICAgICAgICAgcmV0
dXJuIFNwZWNQcm9taXNlT2JqZWN0OwogICAgIApAQCAtNjg0LDkgKzY5MiwxMyBAQAogICAgIHJl
dHVybiBOb3RUeXBlZEFycmF5OwogfQogCi1PcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3Vs
YXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQorT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNw
ZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKEpTVHlwZVJhbmdlIHJhbmdlKQogewotICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGlmIChyYW5nZS5maXJzdCA9PSBJbnRlcm5hbEZ1bmN0aW9uVHlwZSAm
JiByYW5nZS5sYXN0ID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICByZXR1cm4gU3BlY0ludGVy
bmFsRnVuY3Rpb24gfCBTcGVjRnVuY3Rpb247CisKKyAgICBBU1NFUlQocmFuZ2UubGFzdCA9PSBy
YW5nZS5maXJzdCk7CisgICAgc3dpdGNoIChyYW5nZS5sYXN0KSB7CiAgICAgY2FzZSBTdHJpbmdU
eXBlOgogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNlIFN5bWJvbFR5cGU6CkBA
IC05NTgsNiArOTcwLDggQEAKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJyYXk7CiAgICAg
aWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0RhdGFWaWV3T2JqZWN0Iiwgc3RybGVuKCJT
cGVjRGF0YVZpZXdPYmplY3QiKSkpCiAgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7
CisgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0ludGVybmFsRnVuY3Rpb24iLCBz
dHJsZW4oIlNwZWNJbnRlcm5hbEZ1bmN0aW9uIikpKQorICAgICAgICByZXR1cm4gU3BlY0ludGVy
bmFsRnVuY3Rpb247CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY09iamVjdE90
aGVyIiwgc3RybGVuKCJTcGVjT2JqZWN0T3RoZXIiKSkpCiAgICAgICAgIHJldHVybiBTcGVjT2Jq
ZWN0T3RoZXI7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY09iamVjdCIsIHN0
cmxlbigiU3BlY09iamVjdCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTQgKzM2LDE1IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgU3RydWN0dXJlOworc3Ry
dWN0IEpTVHlwZVJhbmdlOwogCiB0eXBlZGVmIHVpbnQ2NF90IFNwZWN1bGF0ZWRUeXBlOwogc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyB5ZXQuCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9iamVjdCAgICAgICAgICAgICAgICAgICAg
ICAgPSAxdWxsIDw8IDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRmluYWxPYmplY3QuCiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8IDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5z
dGFuY2UgICAgPSAxdWxsIDw8IDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gdGhh
dCBoYXMgaXRzIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgdHlwZSBpbmZvIGZsYWdzIGJp
dCBzZXQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbldpdGhO
b25EZWZhdWx0SGFzSW5zdGFuY2UgPSAxdWxsIDw8IDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
RnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBoYXZlIGl0cyBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlIHR5cGUgaW5mbyBmbGFncyBiaXQgc2V0Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Z1bmN0aW9u
V2l0aERlZmF1bHRIYXNJbnN0YW5jZSB8IFNwZWNGdW5jdGlvbldpdGhOb25EZWZhdWx0SGFzSW5z
dGFuY2U7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24uCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb3VuZEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQm91bmRGdW5jdGlvbi4KK3N0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkJvdW5kRnVuY3Rpb24gICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUg
b2YgaXRzIHN1YmNsYXNzZXMsIGJ1dCBub3QgYSBKU0JvdW5kRnVuY3Rpb24uCitzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjQm91bmRGdW5jdGlvbiB8IFNwZWNOb25Cb3VuZEZ1bmN0aW9uOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0Z1bmN0aW9uLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50OEFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0OyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gSW50OEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgNTsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50MzJBcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA2OyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gSW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCkBAIC0x
MDksOCArMTEwLDkgQEAKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0lu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwQmlnSW50OwogI2VuZGlmCiBz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDQ1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZXJuYWxGdW5jdGlvbiAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0NjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSW50ZXJu
YWxGdW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2
ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24t
T2JqZWN0IEpTVmFsdWUuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJy
YXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1l
bnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhw
T2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmpl
Y3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVj
dCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIg
fCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55
IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmpl
Y3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVj
RGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3Qg
fCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8
IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVj
V2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVj
T2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3QgfCBTcGVjSW50ZXJuYWxGdW5jdGlvbjsg
Ly8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGlj
dGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJv
bCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
SlNDZWxsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQmlnSW50MzIgfCBTcGVjQnl0
ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4
Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBD
b3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEgYnl0ZWNvZGUgbG9jYWwuCkBA
IC0yMzEsNyArMjMzLDcgQEAKIAogaW5saW5lIGJvb2wgaXNGdW5jdGlvblNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRnVuY3Rpb247
CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0Z1bmN0aW9uKSA9PSB2YWx1ZTsK
IH0KIAogaW5saW5lIGJvb2wgaXNQcm94eU9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQpAQCAtNTA4LDcgKzUxMCw3IEBACiAvLyBJZiBpdCdzIGFuIGFueUludCgpLCBpdCds
bCByZXR1cm4gc3BlY3VsYXRlZCB0eXBlcyBmcm9tIHRoZSBJbnQ1MiBsYXR0aWNlLgogLy8gT3Ro
ZXJ3aXNlLCBpdCdsbCByZXR1cm4gdHlwZXMgZnJvbSB0aGUgSlNWYWx1ZSBsYXR0aWNlLgogSlNf
RVhQT1JUX1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgaW50NTJBd2FyZVNwZWN1bGF0aW9uRnJvbVZh
bHVlKEpTVmFsdWUpOwotT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpT
VHlwZShKU1R5cGUpOworT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpT
VHlwZVJhbmdlKEpTVHlwZVJhbmdlKTsKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9t
VHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2
aWV3cy4KIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2Myw2ICsxNDYzLDExIEBACiAgICAgT3BKbmVxUHRyOjplbWl0
KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3Rh
bnQ6OmFwcGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGNv
bmQsIExpbmtUaW1lQ29uc3RhbnQgY29uc3RhbnQsIExhYmVsJiB0YXJnZXQpCit7CisgICAgT3BK
bmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIGNv
bnN0YW50KSwgdGFyZ2V0LmJpbmQodGhpcykpOworfQorCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5KFJlZ2lzdGVySUQq
IGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7CiAgICAgT3BKbmVxUHRyOjplbWl0PE9wY29kZVNpemU6
OldpZGUzMj4odGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6aGFzT3duUHJvcGVydHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsK
QEAgLTE3MDEsMTIgKzE3MDYsMTIgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAg
ICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTdHJp
bmdUeXBlKTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRz
dCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSwgU3RyaW5nVHlwZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN5
bWJvbCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElz
Q2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3ltYm9sVHlwZSk7Cisg
ICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFs
dWUsIFN5bWJvbFR5cGUsIFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJiaWdpbnQiKSB7CkBA
IC0xNzE0LDcgKzE3MTksNyBAQAogI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgICAgICBP
cElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSk7CiAjZWxzZQotICAgICAgICAg
ICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFw
QmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlz
LCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlLCBIZWFwQmlnSW50VHlwZSk7CiAjZW5k
aWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTIzNTEs
MTIgKzIzNTYsNiBAQAogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGNv
bnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKQotewotICAgIE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2U6OmVtaXQodGhpcywgZHN0LCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VW
YWx1ZSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogLy8gSW5kaWNhdGVzIHRoZSBsZWFzdCB1cHBl
ciBib3VuZCBvZiByZXNvbHZlIHR5cGUgYmFzZWQgb24gbG9jYWwgc2NvcGUuIFRoZSBieXRlY29k
ZSBsaW5rZXIKIC8vIHdpbGwgc3RhcnQgd2l0aCB0aGlzIFJlc29sdmVUeXBlIGFuZCBjb21wdXRl
IHRoZSBsZWFzdCB1cHBlciBib3VuZCBpbmNsdWRpbmcgaW50ZXJjZXB0aW5nIHNjb3Blcy4KIFJl
c29sdmVUeXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlwZSgpCkBAIC00NTA1LDEwICs0
NTA0LDE2IEBACiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNDZWxsV2l0
aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSB0eXBlKQogewot
ICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOworICAgIE9w
SXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUsIHR5cGUpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNDZWxs
V2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZVJhbmdlIHJh
bmdlKQoreworICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHJhbmdl
LmZpcnN0LCByYW5nZS5sYXN0KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKQogewogICAgIE9wSXNPYmplY3Q6OmVtaXQodGhpcywgZHN0LCBzcmMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNyAr
Nzk1LDYgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3Qp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAKLSAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiB2YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNl
VmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKTsKQEAgLTg5Niw2ICs4OTUsNyBAQAogICAgICAgICB2b2lkIGVtaXRK
dW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9p
ZCBlbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJn
ZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQq
IGNvbmQsIExhYmVsJiB0YXJnZXQpOworICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RMaW5rVGlt
ZUNvbnN0YW50KFJlZ2lzdGVySUQqIGNvbmQsIExpbmtUaW1lQ29uc3RhbnQsIExhYmVsJiB0YXJn
ZXQpOwogICAgICAgICB1bnNpZ25lZCBlbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJv
cGVydHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgcmVj
b3JkSGFzT3duU3RydWN0dXJlUHJvcGVydHlJbkZvckluTG9vcChTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQmLCB1bnNpZ25lZCBicmFuY2hPZmZzZXQsIExhYmVsJiBnZW5lcmljUGF0aCk7CiAKQEAgLTky
MSw2ICs5MjEsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9JbmRleFN0cmluZyhSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGluZGV4KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlw
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlUmFuZ2UpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJu
IGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SXNBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FzeW5j
R2VuZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzSlNBcnJheShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBBcnJheVR5cGUpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzI4MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMzcsNiArMTIzNywxNiBAQAogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldFByb3RvdHlwZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVl
LmdldCgpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19pbnN0YW5jZU9mKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5t
X25leHQpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2YoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7Cit9CisK
IHN0YXRpYyBKU1Byb21pc2U6OkZpZWxkIHByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUo
KSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTI5MzIs
OSArMjk0Miw4IEBACiAKIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBoYXNJbnN0YW5jZVZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgSlNWYWx1ZSgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaXNPYmplY3QgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGlzQ3VzdG9tID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9y
TGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQ
dXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvciA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKQEAgLTI5NDEsMjIgKzI5NTAsMTYgQEAKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSk7CiAgICAgUmVmPExhYmVsPiBjdXN0b20gPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICBS
ZWY8TGFiZWw+IHR5cGVFcnJvciA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCi0gICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgIGdlbmVyYXRvci5lbWl0SXNPYmplY3QoaXNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdG9y
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGlzT2JqZWN0LmdldCgpLCB0
eXBlRXJyb3IuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJhdG9y
LmVtaXRJc0NlbGxXaXRoVHlwZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9y
LmdldCgpLCBKU1R5cGVSYW5nZSB7IEludGVybmFsRnVuY3Rpb25UeXBlLCBKU0Z1bmN0aW9uVHlw
ZSB9KSwgY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRv
ci52bSgpLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sKTsKIAotICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKGlzQ3VzdG9tLmdldCgpLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZOb3RMaW5rVGltZUNvbnN0YW50KGhhc0luc3RhbmNlVmFsdWUuZ2V0KCksIExp
bmtUaW1lQ29uc3RhbnQ6OmZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wsIGN1c3Rv
bS5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShnZW5lcmF0b3IuZW1pdElz
T2JqZWN0KGRzdFJlZy5nZXQoKSwgdmFsdWUuZ2V0KCkpLCBkb25lLmdldCgpKTsKIAogICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoaXNDdXN0b20uZ2V0KCksIGN1c3Rv
bS5nZXQoKSk7Ci0KLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3Rv
dHlwZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC0yOTYzLDEwICsyOTY2LDYgQEAKICAg
ICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2YoZHN0UmVnLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
dG90eXBlLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKLQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHlwZUVycm9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdFRocm93VHlwZUVycm9yKCJSaWdodCBoYW5kIHNpZGUgb2YgaW5zdGFuY2VvZiBpcyBub3Qg
YW4gb2JqZWN0Iik7Ci0KICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGN1c3RvbS5nZXQoKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzI4MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NzAsNyArMTQ3MCw3IEBACiAgICAgICAgICAgICBib29s
IGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZToKLSAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0NlbGwoKSAmJiBjaGlsZC52
YWx1ZSgpLmFzQ2VsbCgpLT50eXBlKCkgPT0gbm9kZS0+cXVlcmllZFR5cGUoKSkpOworICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2Vs
bCgpICYmIG5vZGUtPnF1ZXJpZWRUeXBlKCkuY29udGFpbnMoY2hpbGQudmFsdWUoKS5hc0NlbGwo
KS0+dHlwZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBU
eXBlT2ZJc1VuZGVmaW5lZDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4oCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBPcHRpb25h
bDxib29sPiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm1fc3RydWN0dXJlLmZv
ckVhY2goCiAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0g
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlwZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IG5vZGUtPnF1ZXJpZWRUeXBl
KCkuY29udGFpbnMoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CkBAIC00Mjg4LDEwICs0Mjg4LDYgQEAKICAgICBjYXNlIFB1dEdsb2JhbFZhcmlhYmxlOgogICAg
IGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBPdmVycmlkZXNI
YXNJbnN0YW5jZToKLSAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29s
ZWFuKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEluc3RhbmNlT2Y6
CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNDQxOCw0MyArNDQxNCw2IEBACiAgICAgY2Fz
ZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ2hlY2tUeXBl
SW5mb0ZsYWdzOiB7Ci0gICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgdW5zaWduZWQgYml0cyA9IG5vZGUt
PnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAgICAgIGlmIChi
aXRzID09IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIGlmIChh
YnN0cmFjdFZhbHVlLm1fdHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNl
KSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmco
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGFic3RyYWN0VmFsdWUudmFsdWUoKSkgewot
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhp
cyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5
IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAgLy8gYW5kIHdlIGNhbiByZWFkIGl0cyBpbmxp
bmUgdHlwZSBpbmZvIGZsYWdzLiBUaGVzZSBmbGFncyBkb24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAg
ICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGltZS4KLSAgICAgICAgICAgICAgICBpZiAo
KHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0
dXJlLmlzRmluaXRlKCkpIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAg
ICAgYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICBvayAmPSAoc3RydWN0dXJlLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykgPT0gYml0czsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91
bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNl
IFBhcnNlSW50OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAm
IH5TcGVjSW50MzJPbmx5KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
ODY5LDE3ICs1ODY5LDYgQEAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NoZWNrX3Rkeik7
CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6IHsK
LSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgICAgIE5vZGUqIGNvbnN0cnVjdG9yID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbnN0cnVjdG9yKSk7Ci0gICAgICAgICAg
ICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2hhc0luc3RhbmNlVmFsdWUpKTsKLQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIE9wSW5mbyht
X2dyYXBoLmZyZWV6ZShkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbikpLCBjb25zdHJ1
Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfb3Zl
cnJpZGVzX2hhc19pbnN0YW5jZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBjYXNlIG9wX2lkZW50
aXR5X3dpdGhfcHJvZmlsZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJZGVudGl0eVdpdGhQcm9maWxlPigpOwogICAgICAgICAgICAgTm9k
ZSogc3JjRHN0ID0gZ2V0KGJ5dGVjb2RlLm1fc3JjRHN0KTsKQEAgLTU5MjksNyArNTkxOCw3IEBA
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgdmFsdWUsIHBy
b3RvdHlwZSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElu
c3RhbmNlT2YsIEVkZ2UodmFsdWUsIENlbGxVc2UpLCBFZGdlKHByb3RvdHlwZSkpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2luc3RhbmNlb2YpOwogICAgICAgICB9CiAKQEAgLTYwMDAs
NyArNTk4OSw3IEBACiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0
aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJh
bmQpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdp
dGhUeXBlLCBPcEluZm8oYnl0ZWNvZGUubV90eXBlKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlw
ZVJhbmdlIHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZh
bHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAK
ICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9m
bG93OgogICAgIGNhc2Ugb3BfbW92OgotICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZToKICAgICBjYXNlIG9wX2lkZW50aXR5X3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX2luc3Rh
bmNlb2Y6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mX2N1c3RvbToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDcgKzI5OSw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgSXNDZWxsV2l0aFR5
cGU6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+cXVlcmllZFR5cGUoKSkpOwor
ICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNl
X2Nhc3Q8dWludDE2X3Q+KG5vZGUtPnF1ZXJpZWRUeXBlKCkpKSkpOwogICAgICAgICByZXR1cm47
CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgpAQCAtMTE3MywxMSArMTE3Myw2IEBACiAgICAgY2Fz
ZSBDaGVja0RldGFjaGVkOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICByZXR1
cm47IAotICAgICAgICAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAgcmVh
ZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oQ2hlY2tU
eXBlSW5mb0ZsYWdzTG9jLCBKU0NlbGxfdHlwZUluZm9GbGFncywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7Ci0gICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgUGFyc2VJbnQ6CiAg
ICAgICAgIC8vIE5vdGU6IFdlIHdvdWxkIGhhdmUgZWxpbWluYXRlZCBhIFBhcnNlSW50IHRoYXQg
aGFzIGp1c3QgYSBzaW5nbGUgY2hpbGQgYXMgYW4gSW50MzJVc2UgaW5zaWRlIGZpeHVwLgpAQCAt
MTE4OSwxMSArMTE4NCw2IEBACiAgICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAgICAgcmVhZChKU0NlbGxf
dHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oT3ZlcnJpZGVzSGFzSW5z
dGFuY2VMb2MsIEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAg
ICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVj
dHVyZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAyMyw0NiArMTAyMyw2IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIENoZWNrVHlwZUlu
Zm9GbGFnczogewotICAgICAgICAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0
VmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJpdHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYml0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJpdHMgPT0gSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1
ZS5tX3R5cGUgPT0gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gYWJzdHJhY3RWYWx1ZS52YWx1ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25v
dyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQg
d2UgY2FuIHJlYWQgaXRzIGlubGluZSB0eXBlIGluZm8gZmxhZ3MuIFRoZXNlIGZsYWdzIGRvbid0
IGNoYW5nZSBvdmVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlm
ZXRpbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxp
bmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVy
ZS5pc0Zpbml0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
b2sgJj0gKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09
IGJpdHM7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBpZiAo
b2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld0Z1bmN0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAKICAgICBjYXNl
IENvbXBhcmVCZWxvd0VxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgIGNhc2UgUHJvZmls
ZUNvbnRyb2xGbG93OgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJ
c0VtcHR5OgogICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBUeXBlT2ZJc09i
amVjdDoKQEAgLTE4Nyw3ICsxODYsNiBAQAogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRl
cjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgotICAgIGNhc2UgQ2hl
Y2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11
bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBWYWx1ZVJlcDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk4NSw3ICsxOTg1LDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVBy
b21pc2U6CkBAIC0yMDY5LDI1ICsyMDY4LDE3IEBACiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW50
cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRjaFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxs
IGNoZWNrLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NTc4NAogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgSW5zdGFuY2VPZjogewotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVDZWxsKCkKLSAgICAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hv
dWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAgICAgJiYgaXM2NEJpdCgpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIElu
QnlJZDogewpAQCAtMjgwNyw3ICsyNzk4LDYgQEAKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGNhc2UgRGly
ZWN0Q2FsbDoKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2Ug
VGFpbENhbGxJbmxpbmVkQ2FsbGVyOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsSW5saW5l
ZENhbGxlcjoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSwxNSArMTA5LDcgQEAKICAgICBjYXNlIEJ1dHRlcmZseUxvYzoKICAgICAgICAg
b3V0LnByaW50KCJCdXR0ZXJmbHlMb2MiKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAg
ICBjYXNlIENoZWNrVHlwZUluZm9GbGFnc0xvYzoKLSAgICAgICAgb3V0LnByaW50KCJDaGVja1R5
cGVJbmZvRmxhZ3NMb2MiKTsKLSAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlkZXNI
YXNJbnN0YW5jZUxvYzoKLSAgICAgICAgb3V0LnByaW50KCJPdmVycmlkZXNIYXNJbnN0YW5jZUxv
YyIpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIGNhc2UgQ2xvc3VyZVZhcmlhYmxl
TG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJpYWJsZUxvYyIpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVh
cExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDYgQEAKICAgICBBcnJheU1h
c2tMb2MsCiAgICAgVmVjdG9yTGVuZ3RoTG9jLAogICAgIEJ1dHRlcmZseUxvYywKLSAgICBDaGVj
a1R5cGVJbmZvRmxhZ3NMb2MsCi0gICAgT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MsCiAgICAgQ2xv
c3VyZVZhcmlhYmxlTG9jLAogICAgIERpcmVjdEFyZ3VtZW50c0xvYywKICAgICBHZXR0ZXJMb2Ms
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjcyODM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MzYsMTAgKzE0MzYsMTAgQEAKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gSXNDZWxsV2l0aFR5
cGU7CiAgICAgfQogCi0gICAgSlNUeXBlIHF1ZXJpZWRUeXBlKCkKKyAgICBKU1R5cGVSYW5nZSBx
dWVyaWVkVHlwZSgpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx1
aW50OF90LCBzdGQ6OnVuZGVybHlpbmdfdHlwZTxKU1R5cGU+Ojp0eXBlPjo6dmFsdWUsICJFbnN1
cmUgdGhhdCB1aW50OF90IGlzIHRoZSB1bmRlcmx5aW5nIHR5cGUgZm9yIEpTVHlwZS4iKTsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV9vcEluZm8uYXM8dWludDMyX3Q+KCkp
OworICAgICAgICBBU1NFUlQob3AoKSA9PSBJc0NlbGxXaXRoVHlwZSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mby5hc0pTVHlwZVJhbmdlKCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNTcGVjdWxh
dGVkVHlwZUZvclF1ZXJ5KCkKQEAgLTE0NDksNyArMTQ0OSw3IEBACiAKICAgICBPcHRpb25hbDxT
cGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkpOworICAgICAgICByZXR1
cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlUmFuZ2UocXVlcmllZFR5cGUoKSk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgaGFzUmVzdWx0KCkKQEAgLTE4NzcsNyArMTg3Nyw2IEBACiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENoZWNrSXNDb25zdGFudDoKICAgICAgICAgICAg
IHJldHVybiBpc0NlbGwoY2hpbGQxKCkudXNlS2luZCgpKTsKLSAgICAgICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgpAQCAt
MTk1MiwxNyArMTk1MSw2IEBACiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxVbmlxdWVkU3Ry
aW5nSW1wbCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNUeXBlSW5mb09wZXJhbmQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tUeXBlSW5mb0ZsYWdzOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIHR5cGVJbmZvT3BlcmFuZCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFz
VHlwZUluZm9PcGVyYW5kKCkgJiYgbV9vcEluZm8uYXM8dWludDMyX3Q+KCkgPD0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KFVDSEFSX01BWCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWlu
dDMyX3Q+KCk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMzMwMyw2ICszMjkxLDEwIEBACiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TmV3QXJyYXlCdWZmZXJEYXRhPih1LmludDY0
KTsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVHlwZVJhbmdlIGFzSlNUeXBl
UmFuZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEpTVHlwZVJhbmdlPihzdGF0aWNfY2FzdDx1aW50MTZfdD4odS5pbnQ2NCkpOworICAgICAgICB9
CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgdWludDMyX3QgaW50MzI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyNzI4MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4Nyw3ICsyODcsNiBAQAogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
LSAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRha2Vz
IGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9cCiAg
ICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhlIHNh
bWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlvbiAq
L1wKICAgICBtYWNybyhDaGVja05vdEpTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCkBAIC0zMzgs
NyArMzM3LDcgQEAKICAgICBtYWNybyhDb21wYXJlQmVsb3dFcSwgTm9kZVJlc3VsdEJvb2xlYW4p
IFwKICAgICBtYWNybyhDb21wYXJlRXEsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVTdHJpY3RFcSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
LSAgICBtYWNybyhDb21wYXJlRXFQdHIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8o
Q29tcGFyZUVxUHRyLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhTYW1lVmFsdWUsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgXAogICAgIC8qIENh
bGxzLiAqL1wKQEAgLTM5NCw3ICszOTMsNiBAQAogICAgIG1hY3JvKFBoYW50b21OZXdSZWdleHAs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogTm9kZXMg
Zm9yIG1pc2Mgb3BlcmF0aW9ucy4gKi9cCi0gICAgbWFjcm8oT3ZlcnJpZGVzSGFzSW5zdGFuY2Us
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKEluc3Rh
bmNlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3Jv
KEluc3RhbmNlT2ZDdXN0b20sIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAogICAgIG1hY3JvKE1hdGNoU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkocmV2
aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRf
dD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1v
ZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KICAgICBleHBsaWNp
dCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52
YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oSlNUeXBlUmFuZ2UgcmFuZ2UpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnQxNl90PihyYW5nZSkp
KSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhU
KiBwdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBAQAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChjb25zdHJ1Y3Rvci0+
dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0
b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CisgICAgaWYgKFR5cGVJbmZvOjppc0pT
RnVuY3Rpb25UeXBlKGNvbnN0cnVjdG9yLT50eXBlKCkpICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8g
cmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURh
dGFBbmRBbGxvY2F0aW9uUHJvZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5KTsKICAg
ICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogYWxsb2NhdGlvblByb2ZpbGUgPSByYXJlRGF0
YS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNiw3ICsxMDM2
LDYgQEAKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGNhc2UgQ29tcGFy
ZUVxUHRyOgogICAgICAgICBjYXNlIFNhbWVWYWx1ZToKLSAgICAgICAgY2FzZSBPdmVycmlkZXNI
YXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBjYXNlIEluc3Rh
bmNlT2ZDdXN0b206CiAgICAgICAgIGNhc2UgSXNFbXB0eToKQEAgLTEzMTYsNyArMTMxNSw2IEBA
CiAKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50
MzI6Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgICAgICBjYXNlIEFycmF5
aWZ5OgogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ2hl
Y2tUaWVyVXBJbkxvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw5ICsyNTIsNyBA
QAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAg
IGNhc2UgU2FtZVZhbHVlOgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2Ug
UGFyc2VJbnQ6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIElzRW1w
dHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYzLDIwICszNzYzLDYgQEAK
ICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQotewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3IgY2hlY2tpbmcgaWYg
YSBzaW5nbGUgYml0IGlzIHNldC4gSWYgd2Ugd2FudCB0byBjaGVjayBtb3JlCi0gICAgLy8gdGhh
biBvbmUgYml0IGF0IG9uY2UsIHdlJ2xsIG5lZWQgdG8gZml4IHRoaXM6Ci0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcwNQotICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZUluZm9GbGFncywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJh
bmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihub2RlLT50eXBlSW5mb09wZXJhbmQoKSkpKTsKLQotICAgIG5vUmVzdWx0KG5v
ZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSogbm9k
ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKTsKQEAgLTM4
MzQsMTE4ICszODIwLDUyIEBACiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5v
ZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBu
b2RlKQogewotICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWVOb2RlID0gbm9kZS0+Y2hpbGQyKCku
bm9kZSgpOwotICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3REZWZhdWx0OwotICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpT
VmFsdWVPcGVyYW5kIGhhc0luc3RhbmNlVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKwogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogCi0gICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigp
OwogCi0gICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgY29uc3RhbnQgZm9sZGluZyBoYW5kbGVk
IGF1dG9tYXRpY2FsbHkgdGhlIGNhc2Ugd2hlcmUgd2Uga25ldyB0aGUgaGFzSW5zdGFuY2UgZnVu
Y3Rpb24KLSAgICAvLyB3YXMgYSBjb25zdGFudC4gVW5mb3J0dW5hdGVseSwgdGhlIGZvbGRpbmcg
cnVsZSBmb3IgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgaXMgaW4gdGhlIHN0cmVuZ3RoIHJlZHVjdGlv
biBwaGFzZQotICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICBpZiAoIWhhc0lu
c3RhbmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1
bmN0aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewotICAgICAgICBKU1Zh
bHVlUmVncyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJl
Z3MoKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVn
cy5ncHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwotI2Vsc2UKLSAg
ICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGhhc0luc3RhbmNl
VmFsdWVSZWdzKSk7Ci0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIo
KSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwotI2VuZGlmCi0gICAgfQor
ICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3M7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAotICAgIC8vIENoZWNrIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZScuCi0gICAgbV9qaXQudGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSwgcmVzdWx0R1BSKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQu
anVtcCgpOworICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogCi0gICAgaWYgKCFub3REZWZhdWx0LmVtcHR5KCkpIHsKLSAgICAgICAgbm90RGVmYXVs
dC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZXN1
bHRHUFIpOworICAgICAgICBwcm90b3R5cGVSZWdzID0gSlNWYWx1ZVJlZ3MocHJvdG90eXBlLmdw
cigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5v
ZGUsIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBw
cm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpKTsKICAgICB9CiAK
LSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
Rm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBw
cm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVn
IHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKLXsKICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAogICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1
c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIo
KSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAor
ICAgICAgICB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIs
IHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlz
VHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAg
IHByb3RvdHlwZVJlZ3MpOworICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCksIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzKTsK
ICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKLX0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKLXsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAg
ICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgICAgIAotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRo
aXMpOwotICAgICAgICAKLSAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0g
ICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7Ci0gICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7Ci0gICAgICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUs
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIAotICAgICAgICBibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0gICAgCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0g
ICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
IEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgCi0g
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKLSAgICAKLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOwotICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJl
Z3MoKTsKLSAgICAKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWVSZWdzKTsKLSAgICBtb3ZlRmFs
c2VUbyhyZXN1bHRHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7Ci0gICAgCi0gICAgaXNDZWxsLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVS
ZWdzKTsKLSAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVn
cywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBz
bG93Q2FzZSk7Ci0gICAgCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICByZXR1cm47CiB9CkBAIC00NzgwLDE4ICs0
NzAwLDE4IEBACiAgICAgLy8gU3ltYm9sLmhhc0luc3RhbmNlIGJlY29tZXMgcG9wdWxhciB3aWxs
IGxpa2VseSByZW1haW4gdGhhdCB3YXkuCiAKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3Io
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIGNvbnN0cnVjdG9yKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBH
UFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25zdHJ1Y3Rvci5ncHIoKTsKKyAgICBKU1ZhbHVlUmVn
cyBjb25zdHJ1Y3RvclJlZ3MgPSBjb25zdHJ1Y3Rvci5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFs
dWVSZWdzIGhhc0luc3RhbmNlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5qdW1wKCk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgY29u
c3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1
Y3RvclJlZ3MsIGhhc0luc3RhbmNlUmVncykpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtNDgwOCwxMCArNDcyOCw3IEBACiAKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVl
UmVncyk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLAotICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9k
ZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5pc0NlbGxXaXRoVHlwZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBub2RlLT5xdWVyaWVkVHlw
ZSgpLCByZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0R1BSKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAtNDgzMCwxMCAr
NDc0Nyw3IEBACiAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBtX2ppdC5jb21wYXJl
OChKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhj
ZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUik7Cisg
ICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKGNlbGxHUFIsIG5vZGUtPnF1ZXJpZWRUeXBlKCks
IHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1bHRHUFIpOwogICAgICAgICBi
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBA
IC0xMDg5Nyw3ICsxMDgxMSw3IEBACiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1
bmN0aW9uKEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgc3BlY3VsYXRlQ2VsbFR5cGUo
ZWRnZSwgY2VsbCwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgREZHX1RZUEVf
Q0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNGdW5jdGlv
biwgbV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKQEAgLTEzMjE0LDcgKzEzMTI4LDcg
QEAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7CiAgICAg
R1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwg
ZnVuY3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgIHNwZWN1bGF0
ZUZ1bmN0aW9uKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbkdQUik7CiAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0R1BSKTsKICAgICBhdXRvIGhhc0V4ZWN1dGFi
bGUgPSBtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgcmVzdWx0R1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOwogICAg
IG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyks
IHJlc3VsdEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OSwxMCArNzQ5LDgg
QEAKICAgICB2b2lkIGdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9v
bCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUq
LCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9m
Rm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5
cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRj
aDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7
CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5z
dGFuY2VPZkN1c3RvbShOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0aFR5cGUoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUlzVHlwZWRBcnJheVZpZXcoTm9kZSopOwpAQCAtMTMwMSw3ICsxMjk5LDYg
QEAKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKIAotICAgIHZvaWQg
Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJ
ZGVudChOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVQYXJzZUludChOb2RlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MTgsMTYgKzM2MTgs
NiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFn
czogewotICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKG5vZGUpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOiB7Ci0gICAgICAg
IGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCiAgICAgY2FzZSBJbnN0YW5jZU9mOiB7CiAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKG5v
ZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDI3MywyMSArNDI3MywxMSBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0Zs
YWdzKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7
CiAgICAgICAgIGNvbXBpbGVQYXJzZUludChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICBjb21waWxlT3ZlcnJp
ZGVzSGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2Ug
SW5zdGFuY2VPZjogewogICAgICAgICBjb21waWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMSwyNiArMzExLDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSBkbyB0aGlzIGluIGNvbnN0
YW50IGZvbGRpbmcgYnV0IHRoaXMgY3VycmVudGx5IHJlbGllcyBvbiBPU1IgZXhpdCBoaXN0b3J5
OgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
ODMyCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6IHsKLSAgICAgICAgICAgIGlm
ICghbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCktPmlzQ2VsbENvbnN0YW50KCkpCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLm5vZGUoKS0+
YXNDZWxsKCkgIT0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbih0cnVl
KSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgfSBl
bHNlIGlmICghbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFk
VHlwZUluZm9GbGFncykpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBvcHRpbWlzdGljYWxseSBh
c3N1bWUgdGhhdCB3ZSB3aWxsIG5vdCBzZWUgYSBmdW5jdGlvbiB0aGF0IGhhcyBhIGN1c3RvbSBp
bnN0YW5jZW9mIG9wZXJhdGlvbiBhcyB0aGV5IHNob3VsZCBiZSByYXJlLgotICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9ub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVj
a1R5cGVJbmZvRmxhZ3MsIG1fbm9kZS0+b3JpZ2luLCBPcEluZm8oSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSksIEVkZ2UobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIENlbGxVc2UpKTsKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFu
KGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBGSVhNRTog
V2UgaGF2ZSBhIGxvdCBvZiBzdHJpbmcgY29uc3RhbnQtZm9sZGluZyBydWxlcyBoZXJlLiBJdCB3
b3VsZCBiZSBncmVhdCB0bwogICAgICAgICAvLyBtb3ZlIHRoZXNlIHRvIHRoZSBhYnN0cmFjdCBp
bnRlcnByZXRlciBvbmNlIEFic3RyYWN0VmFsdWUgY2FuIHN1cHBvcnQgTGF6eUpTVmFsdWUuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyMDQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDggKzI3MCw2IEBACiAgICAgY2FzZSBJ
c0NhbGxhYmxlOgogICAgIGNhc2UgSXNDb25zdHJ1Y3RvcjoKICAgICBjYXNlIElzVHlwZWRBcnJh
eVZpZXc6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgY2FzZSBPdmVycmlkZXNI
YXNJbnN0YW5jZToKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBJbnN0YW5jZU9mQ3Vz
dG9tOgogICAgIGNhc2UgRG91YmxlUmVwOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDgwLDEyICsxNDgwLDYgQEAKICAgICAgICAgY2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICBjb21w
aWxlVHlwZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJ
bmZvRmxhZ3M6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAg
ICAgICAgIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9m
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyNDQwLDY1ICsxMjQzNCwyMyBAQAogICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlT3ZlcnJpZGVz
SGFzSW5zdGFuY2UoKQotICAgIHsKLSAgICAgICAgRnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJbnN0
YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxsT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQoZGVm
YXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNlbGwoKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0o
KSkpOwotCi0gICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgZGVmYXVsdEhhc0luc3RhbmNlID0gbV9v
dXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKLQotICAgICAgICAvLyBVbmxpa2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qgd29y
cnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVwIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZl
IHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBpcyBhIGNvbnN0YW50IGFzIEIzIHNob3VsZCBm
aXggaXQgZm9yIHVzLgotCi0gICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJbnN0
YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJbnN0YW5jZSwgZnJvemVuUG9pbnRlcihkZWZh
dWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGRl
ZmF1bHRIYXNJbnN0YW5jZSkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oZGVmYXVsdEhhc0luc3RhbmNlLCBjb250aW51YXRpb24pOwotICAgICAgICBW
YWx1ZUZyb21CbG9jayBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQu
YW5jaG9yKG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4
dDMyKGNvbnN0cnVjdG9yLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50MzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKLSAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJ
bnQzMiwgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVmYXVsdEhhc0lu
c3RhbmNlUmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0Zs
YWdzKCkKLSAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZFR5cGVJbmZv
RmxhZ3MsIG5vVmFsdWUoKSwgbnVsbHB0ciwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8z
MigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7Ci0gICAgfQot
ICAgIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoKQogICAgIHsKICAgICAgICAgTm9kZSog
bm9kZSA9IG1fbm9kZTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisKKyAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVlOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFs
dWUgcHJvdG90eXBlOwotICAgICAgICBib29sIHZhbHVlSXNDZWxsOwogICAgICAgICBib29sIHBy
b3RvdHlwZUlzQ2VsbDsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IENlbGxVc2UKLSAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKLSAgICAgICAgICAgIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAg
ICAgICAgICAgIHByb3RvdHlwZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHZhbHVlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAgICAgIHByb3Rv
dHlwZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHBy
b3RvdHlwZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHZhbHVlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5p
c1R5cGUoU3BlY0NlbGwpOwogICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0gYWJzdHJhY3RW
YWx1ZShtX25vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMTI1MjYsMTQgKzEyNDc4LDYgQEAKICAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZUp1bXA7Ci0gICAgICAgICAgICAgICAg
aWYgKCF2YWx1ZUlzQ2VsbCkgewotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgaXNDZWxsID0gaml0LmJyYW5jaElmQ2VsbCh2YWx1ZUdQUik7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZChmYWxzZSwgcmVzdWx0R1BSKTsKLSAgICAgICAgICAg
ICAgICAgICAgZG9uZUp1bXAgPSBqaXQuanVtcCgpOwotICAgICAgICAgICAgICAgICAgICBpc0Nl
bGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAg
ICAgICAgaWYgKCFwcm90b3R5cGVJc0NlbGwpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVHUFIpKTsKQEAgLTEyNTU2LDEz
ICsxMjUwMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0dTc2lKSiBvcHRpbWl6YXRpb25GdW5jdGlv
biA9IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
dmFsdWVHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxs
KCk7CkBAIC0xMjU3NSw5ICsxMjUxNyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChkb25lSnVtcC5pc1NldCgpKQotICAgICAg
ICAgICAgICAgICAgICBkb25lSnVtcC5saW5rKCZqaXQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBUaGlzIHJldHVybnMgYSBib3hlZCBib29sZWFuLgpAQCAtMTI1ODgs
NyArMTI1MjcsNyBAQAogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZh
bHVlIGNvbnN0cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZh
bHVlIGNvbnN0cnVjdG9yID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
TFZhbHVlIGhhc0luc3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAogICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbklu
c3RhbmNlT2ZDdXN0b20sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlLCBjb25zdHJ1
Y3RvciwgaGFzSW5zdGFuY2UpKSk7CkBAIC0xODYwNiwxNSArMTg1NDUsMTEgQEAKICAgICAKICAg
ICBMVmFsdWUgaXNGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZh
bHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBw
cm92ZW47Ci0gICAgICAgIHJldHVybiBpc1R5cGUoY2VsbCwgSlNGdW5jdGlvblR5cGUpOworICAg
ICAgICByZXR1cm4gaXNDZWxsV2l0aFR5cGUoY2VsbCwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9u
VHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9LCBTcGVjRnVuY3Rpb24sIHR5cGUpOwogICAgIH0K
ICAgICBMVmFsdWUgaXNOb3RGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNGdW5jdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gaXNOb3RUeXBlKGNlbGwsIEpTRnVuY3Rpb25U
eXBlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoaXNGdW5jdGlvbihjZWxsLCB0
eXBlKSk7CiAgICAgfQogICAgICAgICAgICAgCiAgICAgTFZhbHVlIGlzRXhvdGljRm9yVHlwZW9m
KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
MSwxMyArNjIxLDEzIEBACiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1zdGF0aWMgYm9vbCBjaGVj
a0ZvcmJpZGRlblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBKU1ZhbHVlIHByb3RvKQorc3RhdGljIGJvb2wgY2hlY2tGb3JiaWRkZW5Qcm90b3R5
cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHZhbHVlLCBKU09iamVj
dCogcHJvdG8pCiB7CiAgICAgaWYgKHZhbHVlID09IHByb3RvKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiBwcm90byBoYXNu
J3QgYmVlbiBtb2RpZmllZCB0byBpbmNsdWRlIHZhbHVlLgotICAgIHJldHVybiBKU09iamVjdDo6
ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgcHJvdG8sIHZhbHVlKTsKKyAgICByZXR1
cm4gcHJvdG8tPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiB9CiAKIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNjk0LDcgKzY5NCw3IEBACiAg
ICAgICAgICAgICBpZiAodmFsdWUuaW5oZXJpdHM8UHJveHlPYmplY3Q+KHZtKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIAotICAgICAgICAgICAg
aWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJv
dG90eXBlKSkKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc09iamVjdCgpICYmIG9iamVjdC0+aXNQ
cm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpCiAgICAgICAgICAgICAg
ICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgYXJyYXktPmxlbmd0aCgpLCB2
YWx1ZSk7CiAKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZp
c2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg2LDggKzEwODYsMjIgQEAKICAgICBKdW1wIGJyYW5j
aElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2Vs
bEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsg
fQogICAgIEp1bXAgYnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVy
biBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9Ci0gICAgSnVtcCBi
cmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2Vs
bEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQ
UlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlv
blR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9uVHlwZSwg
SlNCb3VuZEZ1bmN0aW9uVHlwZSB9KTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihH
UFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTVHlwZVJh
bmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSk7IH0KKworICAgIHZv
aWQgaXNDZWxsV2l0aFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZVJhbmdlIHJhbmdlLCBHUFJS
ZWcgZHN0KQorICAgIHsKKyAgICAgICAgaWYgKHJhbmdlLmxhc3QgPT0gcmFuZ2UuZmlyc3QpIHsK
KyAgICAgICAgICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBkc3QpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHJhbmdlLmxhc3Qg
PiByYW5nZS5maXJzdCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgICAgIGxvYWQ4KEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIocmFuZ2UuZmly
c3QpLCBzY3JhdGNoKTsKKyAgICAgICAgY29tcGFyZTMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwg
VHJ1c3RlZEltbTMyKHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCksIGRzdCk7CisgICAgfQogICAg
IAogICAgIHZvaWQgaXNFbXB0eShHUFJSZWcgZ3ByLCBHUFJSZWcgZHN0KQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw2
IEBACiAgICAgICAgIERFRklORV9PUChvcF9zZXRfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
cHJvdG90eXBlX29mKQotICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9PUChv
cF9pbnN0YW5jZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2VtcHR5KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjksNyArNTY5LDYgQEAK
ICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE5LDMyICsxMTksNiBAQAogICAgIGVtaXRTdG9yZUNlbGwoZHN0
LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAg
IFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5j
ZVZhbHVlOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihoYXNJbnN0YW5jZVZhbHVlLCBy
ZWdUMCk7Ci0KLSAgICAvLyBXZSBkb24ndCBqdW1wIGlmIHdlIGtub3cgd2hhdCBTeW1ib2wuaGFz
SW5zdGFuY2Ugd291bGQgZG8uCi0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVlID0gYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpKTsKLQot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8v
IENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGku
ZS4gdGhlIG9iamVjdCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgot
ICAgIHRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7
Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKLSAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7Ci0KLSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7
Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDApOwotCi0g
ICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKLX0K
LQogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5zdGFuY2VvZj4oKTsKQEAgLTE1Nyw4ICsxMzEsNiBAQAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3RvLCByZWdUMSk7CiAgICAgCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuIGJh
c2VWYWwgbXVzdCBiZSBhIGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9ieV9pZCBm
b3IgU3ltYm9sLmhhc0luc3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMiwgdmFsdWUpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJv
dG8pOwogCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCkBAIC0zMTIsMTIgKzI4NCwx
MSBAQAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxs
V2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKLSAgICBpbnQg
dHlwZSA9IGJ5dGVjb2RlLm1fdHlwZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7
CiAKLSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOworICAgIGlzQ2VsbFdpdGhU
eXBlKHJlZ1QwLCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5t
X2xhc3RUeXBlIH0sIHJlZ1QwKTsKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7
IHJlZ1QwIH0pOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjcyODM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsMzQgKzExNyw2IEBACiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVy
blZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxS
ZWdpc3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3RydWN0b3I7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7
Ci0KLSAgICBlbWl0TG9hZFBheWxvYWQoaGFzSW5zdGFuY2VWYWx1ZSwgcmVnVDApOwotICAgIC8v
IFdlIGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5oYXNJbnN0YW5jZSB3b3VsZCBk
by4KLSAgICBKdW1wIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChoYXNJbnN0YW5jZVZhbHVlKTsKLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkpOwot
Ci0gICAgLy8gV2Uga25vdyB0aGF0IGNvbnN0cnVjdG9yIGlzIGFuIG9iamVjdCBmcm9tIHRoZSB3
YXkgYnl0ZWNvZGUgaXMgZW1pdHRlZCBmb3IgaW5zdGFuY2VvZiBleHByZXNzaW9ucy4KLSAgICBl
bWl0TG9hZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8vIENoZWNrIHRoYXQg
Y29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGkuZS4gdGhlIG9iamVj
dCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgotICAgIHRlc3Q4KFpl
cm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7Ci0gICAgSnVtcCBk
b25lID0ganVtcCgpOwotCi0gICAgaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwubGluayh0aGlzKTsK
LSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7Ci0gICAgbW92ZShUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBlbWl0U3RvcmVC
b29sKGRzdCwgcmVnVDApOwotCi19Ci0KIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CkBAIC0xNTcsOCArMTI5
LDYgQEAKICAgICBlbWl0TG9hZFBheWxvYWQodmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0TG9hZFBh
eWxvYWQocHJvdG8sIHJlZ1QxKTsKIAotICAgIC8vIENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxz
LiBiYXNlVmFsIG11c3QgYmUgYSBjZWxsIC0gdGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlf
aWQgZm9yIFN5bWJvbC5oYXNJbnN0YW5jZS4KLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwodmFsdWUpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAg
CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCkBAIC0yMDksOSArMTc5LDkgQEAKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2RlLm1faGFzSW5zdGFu
Y2VWYWx1ZTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwotICAgIGVtaXRM
b2FkUGF5bG9hZChjb25zdHJ1Y3RvciwgcmVnVDIpOwotICAgIGVtaXRMb2FkKGhhc0luc3RhbmNl
VmFsdWUsIHJlZ1Q0LCByZWdUMyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5j
ZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCksIHJlZ1QyLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpKTsKKyAgICBlbWl0TG9h
ZChjb25zdHJ1Y3RvciwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0TG9hZChoYXNJbnN0YW5jZVZh
bHVlLCByZWdUNSwgcmVnVDQpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
ZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVn
VDQpKTsKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDcgKzIxNzMsNyBAQAogfQogI2VuZGlmCiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3Qs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3Rh
bmNlKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9t
LCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRDb25zdHJ1Y3RvciwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjE4MCwxMSArMjE4MCwxMCBAQAogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRDb25zdHJ1Y3Rvcik7CiAgICAgSlNWYWx1ZSBoYXNJbnN0
YW5jZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRIYXNJbnN0YW5jZSk7CiAKLSAgICBp
ZiAoY29uc3RydWN0b3ItPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3Rh
bmNlVmFsdWUpKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
anNJbnN0YW5jZW9mT3BlcmF0b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhh
c0luc3RhbmNlVmFsdWUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vi
c2NyaXB0KQpAQCAtMjcxMSwzNCArMjcxMCwzMiBAQAogICAgIHJldHVybiBKU1dpdGhTY29wZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgb2JqZWN0KTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvdG8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3RvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAgIAogICAg
IHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIGJvb2wgcmVzdWx0ID0g
SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90byk7
CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywg
YXNPYmplY3QodmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwq
IHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAg
IAotICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBwcm90byk7CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2Yo
Z2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgIAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgdmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKHZtKSkpCisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5l
cmljKHZtLCBjb2RlQmxvY2ssIHZhbHVlLT5zdHJ1Y3R1cmUodm0pKSkKICAgICAgICAgcmVwYXRj
aEluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlLCBwcm90bywgKnN0dWJJ
bmZvLCByZXN1bHQpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlc3VsdCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOCArMjY3LDggQEAKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBzaXplX3QsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBK
U09iamVjdCogb2JqZWN0KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklu
c3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8p
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXpl
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogdmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFy
Z3VtZW50cywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYXJndW1l
bnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFy
Z3MsIGludDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywg
aW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNG
cmFtZSwgQ2FsbEZyYW1lKiwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSk7CkBAIC0yOTYsNyArMjk2LDcgQEAKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eldpdGhDYWxsRnJh
bWUsIHZvaWQsIChWTSopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25D
aGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyLCBpbnQzMl90LCAo
Vk0qKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5j
ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9t
LCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
SGFzSW5zdGFuY2UpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1
ZUFkZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNywxNCArMTExNywxMiBA
QAogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAotICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91bmQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0
OwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlVmFsdWUuaXNDZWxsKCkpOyAvLyBzaG91
bGRDb25zaWRlckNhY2hpbmcgcmVqZWN0cyBub24tY2VsbHMuCi0gICAgCiAgICAgaWYgKGZvcmNl
SUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgIApAQCAtMTEzMSw3ICsxMTI5LDYgQEAKICAgICB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICAK
LSAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CkBAIC0x
MTgwLDExICsxMTc3LDExIEBACiB9CiAKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUg
dmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNGb3VuZCkKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHRyeUNhY2hlSW5zdGFu
Y2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUs
IHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICBpZiAodHJ5Q2FjaGVJ
bnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZSwgcHJvdG90eXBlVmFsdWUs
IHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKICAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiB2b2lkIHJl
cGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hl
YWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKK3ZvaWQgcmVwYXRjaEluc3RhbmNlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3Rv
dHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihW
TSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxs
ZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtEaXJl
Y3RGb3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua1Nsb3dGb3IoQ2FsbEZyYW1lKiwg
Q2FsbExpbmtJbmZvJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCwyMyAr
NjEwLDE3IEBACiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVl
KTsKICAgICBKU1ZhbHVlIHByb3RvID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
cHJvdG90eXBlKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pKSk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmpl
Y3QodmFsdWUpKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFu
Y2VvZl9jdXN0b20pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbnN0YW5jZW9mQ3VzdG9tPigpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBjb25zdHJ1
Y3RvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2NvbnN0cnVjdG9yKTsKICAg
ICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9oYXNJbnN0YW5jZVZhbHVlKTsKLQotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci5pc09iamVj
dCgpKTsKLSAgICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UoKSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5n
ZXRPYmplY3QoKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VW
YWx1ZSkpOwotICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJbnN0YW5jZW9mT3BlcmF0b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF90cnlfZ2V0X2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjcyODM3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC01NjAsNyArNTYwLDYgQEAKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNv
bnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBjb25zdGV4cHIgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAotY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IGNvbnN0ZXhwciBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlCiBjb25zdCBPdmVycmlkZXNHZXRQcm90b3R5cGVPdXRP
ZkxpbmUgPSBjb25zdGV4cHIgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lCiAKICMgQnl0
ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODYsMzYgKzEyODYsNyBAQAogICAgIGRp
c3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92
ZXJyaWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQo
bV9kc3QsIHQzKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
IAotICAgICMgRmlyc3QgY2hlY2sgaWYgaGFzSW5zdGFuY2VWYWx1ZSBpcyB0aGUgb25lIG9uIEZ1
bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdCi0gICAgZ2V0KG1faGFzSW5zdGFu
Y2VWYWx1ZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAs
IENlbGxUYWcsIHQyLCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCkKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSwgdDIpCi0gICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsCi0KLSAgICAjIFdlIGRv
bid0IG5lZWQgaGFzSW5zdGFuY2VWYWx1ZSdzIHRhZyByZWdpc3RlciBhbnltb3JlLgotICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDFdLCB0MQotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2Z1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uW3QxXSwgdDEKLSAgICBiaW5lcSB0MSwgdDIsIC5vcE92ZXJy
aWRlc2hhc0luc3RhbmNlVmFsdWVOb3REZWZhdWx0Ci0KLSAgICAjIFdlIGtub3cgdGhlIGNvbnN0
cnVjdG9yIGlzIGEgY2VsbC4KLSAgICBnZXQobV9jb25zdHJ1Y3RvciwgdDApCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoc2l6ZSwgdDAsIHQxKQotICAgIHRieiBK
U0NlbGw6Om1fZmxhZ3NbdDFdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MAotICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQot
Lm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGw6Ci0ub3BPdmVycmlkZXNoYXNJbnN0
YW5jZVZhbHVlTm90RGVmYXVsdDoKLSAgICBzdG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQotICAgIGRpc3BhdGNoKCkKLWVuZCkKLQotCiBsbGludE9wV2l0aFJldHVybihvcF9pc19l
bXB0eSwgT3BJc0VtcHR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAg
IGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEs
IHQyLCB0MykKQEAgLTEzNjksOSArMTM0MCwxMSBAQAogICAgIGdldChtX29wZXJhbmQsIHQxKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwLCB0MykKICAgICBiaW5lcSB0
MCwgQ2VsbFRhZywgLm5vdENlbGxDYXNlCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBl
LCBtX3R5cGUsIHQwKQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgdDEKLSAgICBy
ZXR1cm4oQm9vbGVhblRhZywgdDEpCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBt
X2ZpcnN0VHlwZSwgdDApCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2xhc3RU
eXBlLCB0MikKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgLm5vdENlbGxDYXNlCisg
ICAgYmJndCBKU0NlbGw6Om1fdHlwZVt0M10sIHQyLCAubm90Q2VsbENhc2UKKyAgICByZXR1cm4o
Qm9vbGVhblRhZywgMSkKIC5ub3RDZWxsQ2FzZToKICAgICByZXR1cm4oQm9vbGVhblRhZywgMCkK
IGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMTMyMSwyOSArMTMyMSw2IEBACiBlbmQpCiAKIAotbGxpbnRPcChvcF9vdmVycmlkZXNfaGFz
X2luc3RhbmNlLCBPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCkKLSAgICBnZXQobV9kc3QsIHQzKQotCi0gICAgZ2V0KG1faGFzSW5zdGFuY2VWYWx1ZSwg
dDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
Ml0sIHQyCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb25bdDJdLCB0MgotICAgIGJxbmVxIHQwLCB0MiwgLm9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2VOb3REZWZhdWx0U3ltYm9sCi0KLSAgICBnZXQobV9jb25zdHJ1Y3RvciwgdDEp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgdGJ6IEpTQ2Vs
bDo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIHQxCi0gICAgb3Jx
IFZhbHVlRmFsc2UsIHQxCi0gICAgc3RvcmVxIHQxLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRj
aCgpCi0KLS5vcE92ZXJyaWRlc0hhc0luc3RhbmNlTm90RGVmYXVsdFN5bWJvbDoKLSAgICBzdG9y
ZXEgVmFsdWVUcnVlLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KLQogbGxp
bnRPcFdpdGhSZXR1cm4ob3BfaXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKQEAgLTE0MTQsMTMgKzEzOTEsMTQgQEAKIGVuZAog
CiBsbGludE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlw
ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXR1KHNpemUsIE9w
SXNDZWxsV2l0aFR5cGUsIG1fdHlwZSwgdDApCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhU
eXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBt
X2xhc3RUeXBlLCB0MikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5ub3RD
ZWxsQ2FzZQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgdDEKLSAgICBvcnEgVmFs
dWVGYWxzZSwgdDEKLSAgICByZXR1cm4odDEpCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QzXSwg
dDAsIC5ub3RDZWxsQ2FzZQorICAgIGJiZ3QgSlNDZWxsOjptX3R5cGVbdDNdLCB0MiwgLm5vdENl
bGxDYXNlCisgICAgcmV0dXJuKFZhbHVlVHJ1ZSkKIC5ub3RDZWxsQ2FzZToKICAgICByZXR1cm4o
VmFsdWVGYWxzZSkKIGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsNiBAQAogICAgIHVz
aW5nIFRvU3RyaW5nTmFtZUZ1bmN0aW9uUHRyID0gU3RyaW5nICgqKShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgVG9TdHJpbmdOYW1lRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKHRvU3RyaW5nTmFtZSk7CiAKLSAgICB1c2luZyBDdXN0b21IYXNJbnN0YW5jZUZ1
bmN0aW9uUHRyID0gYm9vbCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwotICAgIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGN1
c3RvbUhhc0luc3RhbmNlKTsKLQogICAgIHVzaW5nIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsKICAgICBEZWZpbmVPd25Qcm9wZXJ0eUZ1
bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWZpbmVPd25Qcm9wZXJ0eSk7CiAKQEAgLTE2
NCw3ICsxNjEsNiBAQAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRFbnVtZXJhYmxlTGVuZ3RoLCBc
CiAgICAgICAgICZDbGFzc05hbWU6OmNsYXNzTmFtZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0
b1N0cmluZ05hbWUsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFzSW5zdGFuY2UsIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6cHJldmVudEV4dGVuc2lvbnMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6aXNFeHRlbnNp
YmxlLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlv
bi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MSw3ICs2Miw3IEBACiAgICAgKmNhbGxGdW5jdGlvbiA9
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCksIGZ1
bmN0aW9uUHJvdG90eXBlQ2FsbENvZGVHZW5lcmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+YmluZCwgZnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgICpoYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvblBy
b3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7
CisgICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wuaGFzSW5zdGFuY2VdIl9zLCBmdW5jdGlvblByb3Rv
RnVuY0hhc0luc3RhbmNlU3ltYm9sKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wsICpoYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAgICAgCkBA
IC0xNTEsNCArMTUyLDE0IEBACiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3Rv
RnVuY0hhc0luc3RhbmNlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgYm9vbCByZXN1
bHQgPSBhc09iamVjdCh0aGlzVmFsdWUpLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lv
biAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRDYWxsRGF0YTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRDYWxsRGF0YTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTAgKzc2
LDcgQEAKIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7Ci0gICAgICAgIEFTU0VSVCghY2Fs
bGVlLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlw
ZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCi0gICAgICAgIEFTU0VSVChwcm90b3R5cGUpOwot
ICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShn
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3RvdHlwZSk7CisgICAgICAgIGJvb2wgaGFzSW5z
dGFuY2UgPSBjYWxsZWUtPmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNPYmpl
Y3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAg
ICAgICBpZiAoaGFzSW5zdGFuY2UpIHsKICAgICAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBk
ZXNjcmlwdG9yKGluc3RhbmNlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CkBA
IC0xMDUsMTAgKzEwMiw3IEBACiAgICAgaWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAgIHJl
dHVybiBpbnN0YW5jZTsKIAotICAgIEFTU0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVy
aXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0
cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBh
c3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJl
IGRlbGV0ZWQuCi0gICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5jZSA9
IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBw
cm90b3R5cGUpOworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCwxOSArMTQ0LDYgQEAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0
YSwgYXJncywgbmV3VGFyZ2V0KSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaXNC
b3VuZEZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShzdGF0aWNf
Y2FzdDxib29sPihqc0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+
dm0oKSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSkpKSk7Ci19Ci0KLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZE9iamVjdCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGJvdW5kT2JqZWN0LT50YXJnZXRGdW5jdGlvbigpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmpl
Y3QsIHZhbHVlKSkpOwotfQotCiBpbmxpbmUgU3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRh
cmdldEZ1bmN0aW9uKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTIxMCwxMSArMTk3LDYgQEAKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLWJvb2wg
SlNCb3VuZEZ1bmN0aW9uOjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiBq
c0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4ob2JqZWN0KS0+bV90YXJnZXRGdW5jdGlvbi0+aGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci19Ci0KIEpTQm91bmRGdW5jdGlvbjo6SlNCb3Vu
ZEZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJn
ZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3Vu
ZEFyZ3MsIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsLCBkb3VibGUgbGVuZ3RoKQogICAgIDogQmFz
ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Rhcmdl
dEZ1bmN0aW9uKHZtLCB0aGlzLCB0YXJnZXRGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzI4Mzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKTsKLUpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwpOwotSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCk7Ci1KU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QpOwotSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24pOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTiho
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pOwotCiBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gZmluYWwg
OiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJh
c2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzICYgfkltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U7Ci0gICAgc3Rh
dGljX2Fzc2VydChTdHJ1Y3R1cmVGbGFncyAmIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgIiIpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC00OSw4ICs0MCw2
IEBACiAgICAgfQogCiAgICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBkb3VibGUgbGVuZ3RoLCBKU1N0cmlu
ZyogbmFtZU1heUJlTnVsbCk7Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFu
Y2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgSlNPYmplY3Qq
IHRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gbV90YXJnZXRGdW5jdGlvbi5nZXQoKTsgfQogICAg
IEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9ib3VuZFRoaXMuZ2V0KCk7IH0KQEAgLTcx
LDcgKzYwLDcgQEAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNCb3VuZEZ1
bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV90YXJnZXRGdW5jdGlvbik7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjcyODM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNiBAQAogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCShyZXZpc2lvbiAy
NzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogLy8gVGhlIGZpcnN0IGFuZCBsYXN0IEpTVHlwZSBh
cmUgaW5jbHVzaXZlCiBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIGJvb2wgY29udGFpbnMoSlNU
eXBlIHR5cGUpIGNvbnN0IHsgcmV0dXJuIGZpcnN0IDw9IHR5cGUgJiYgdHlwZSA8PSBsYXN0OyB9
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IHsgb3V0LnByaW50KCJKU1R5
cGVSYW5nZSB7ICIsIGZpcnN0LCAiLCAiLCBsYXN0LCAiIH0iKTsgfQogCiAgICAgSlNUeXBlIGZp
cnN0OwogICAgIEpTVHlwZSBsYXN0OwpAQCAtNzEsNyArNzIsNyBAQAogICAgIG1hY3JvKEpTU3Ry
aW5nSXRlcmF0b3IsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJp
bmdJdGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBM
YXN0T2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxP
YmplY3RUeXBlLCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAotICAgIG1hY3JvKEpTRnVuY3Rp
b24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKKyAg
ICBtYWNybyhKU0Z1bmN0aW9uLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTQm91
bmRGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6Oklu
dGVybmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAg
ICBtYWNybyhOdWxsU2V0dGVyRnVuY3Rpb24sIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlw
ZSwgSlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwg
SlNUeXBlOjpBcnJheVR5cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyNzI4MzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzMsMTIgKzIzMyw2IEBACiAgICAgcmV0dXJuIGNsYXNzSW5mbyh2bSktPmNsYXNzTmFt
ZTsKIH0KIAotYm9vbCBKU0NlbGw6OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKQotewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3Mjgz
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsNyArMjU1LDYgQEAKIAogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNv
bnN0IEpTT2JqZWN0KiwgVk0mKTsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25z
dCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNp
b24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAKIHsKICAgICBpZiAoIWlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7Ci0gICAgaWYgKHR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUodHlw
ZSgpKSkKICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmIChpbmxpbmVUeXBl
RmxhZ3MoKSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAo
Y29uY3VycmVuY3kgPT0gQ29uY3VycmVuY3k6Ok1haW5UaHJlYWQpCkBAIC0yNzEsNyArMjcxLDcg
QEAKICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhp
cykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0
YXRlOjpGYWxzZTsKICAgICAvLyBXZSBrbm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3REYXRhIG9m
IGJvdGggdHlwZXMgYXJlIGNvbmN1cnJlbmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNsYXNzZXMg
b2YgSlNGdW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlvbgogICAgIC8vIG5ldmVyIG92ZXJyaWRl
IGdldENvbnN0cnVjdERhdGEgKHRoaXMgaXMgZW5zdXJlZCBieSBBU1NFUlQgaW4gSlNGdW5jdGlv
biBhbmQgSW50ZXJuYWxGdW5jdGlvbikuCi0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSB8fCB0eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUpCisgICAgaWYgKHR5cGUoKSA9PSBJ
bnRlcm5hbEZ1bmN0aW9uVHlwZSB8fCBUeXBlSW5mbzo6aXNKU0Z1bmN0aW9uVHlwZSh0eXBlKCkp
KQogICAgICAgICByZXR1cm4gKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlz
KS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3Rh
dGU6OkZhbHNlOwogICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lv
biAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw2IEBACiAgICAgOiBCYXNlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFn
SW52YXJpYW50cygpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGds
b2JhbE9iamVjdCk7CiB9CiAKQEAgLTExMSw3ICsxMTAsNyBAQAogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0s
IHRoaXMpKTsKLSAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKKyAgICBBU1NF
UlQoVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUodHlwZSgpKSk7CiAgICAgLy8gSlNDZWxsOjp7
Z2V0Q2FsbERhdGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucy4KICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09
ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9kVGFibGUo
dm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAtMTIxLDcg
KzEyMCw3IEBACiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSk7CisgICAgQVNTRVJUKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKHR5cGUoKSkpOwogICAg
IC8vIEpTQ2VsbDo6e2dldENhbGxEYXRhLGdldENvbnN0cnVjdERhdGF9IHJlbGllcyBvbiB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMuCiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29u
c3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJU
KG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENhbGxEYXRh
KTsKQEAgLTg4MSwxNiArODgwLDQgQEAKICAgICByZXR1cm4gUHJvcGVydHlTdGF0dXM6OlJlaWZp
ZWQ7CiB9CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotdm9pZCBKU0Z1bmN0aW9uOjphc3NlcnRUeXBl
SW5mb0ZsYWdJbnZhcmlhbnRzKCkKLXsKLSAgICAvLyBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSds
bCBuZWVkIHRvIHVwZGF0ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9Jbmhlcml0YW5jZS4KLSAg
ICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8odm0oKSk7Ci0gICAgaWYgKCEoaW5s
aW5lVHlwZUZsYWdzKCkgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSk7Ci0gICAgZWxz
ZQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvICE9IEpTQm91bmRGdW5jdGlvbjo6aW5mbygp
KTsKLX0KLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9u
IDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDEyICsyMDksNiBAQAogICAgIFByb3BlcnR5U3RhdHVzIHJl
aWZ5TGF6eU5hbWVJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
ICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlCb3VuZE5hbWVJZk5lZWRlZChWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgdm9p
ZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7Ci0jZWxzZQotICAgIHZvaWQgYXNzZXJ0
VHlwZUluZm9GbGFnSW52YXJpYW50cygpIHsgfQotI2VuZGlmCi0KICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgdWludHB0cl90IG1fZXhlY3V0YWJsZU9yUmFy
ZURhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDYgQEAKICAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFi
bGVPclJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQogewotICAg
IGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKIH0KIAogaW5saW5lIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYwLDYgKzY2MCw4IEBACiAgICAgICAgIH0pOwogCiAg
ICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmN0aW9uUHJvdG90eXBlSGFz
SW5zdGFuY2VTeW1ib2wpXS5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24p
OworCiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CiAgICAgICAgICAg
ICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JGdW5jdGlv
bigpOwpAQCAtODA4LDE0ICs4MTAsOCBAQAogICAgICAgICB9KTsKICAgICBtX3Byb3h5T2JqZWN0
U3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVj
dHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJsZSA9IGZhbHNlOwotICAg
ICAgICAgICAgaW5pdC5zZXQoUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lm93bmVyLCBqc051bGwoKSwgaXNDYWxsYWJsZSkpOworICAgICAgICAgICAgaW5pdC5zZXQo
UHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwo
KSkpOwogICAgICAgICB9KTsKLSAgICBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuaW5p
dExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkg
ewotICAgICAgICAgICAgYm9vbCBpc0NhbGxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGluaXQu
c2V0KFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNO
dWxsKCksIGlzQ2FsbGFibGUpKTsKLSAgICAgICAgfSk7CiAgICAgbV9wcm94eVJldm9rZVN0cnVj
dHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChQcm94eVJldm9rZTo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGluaXQub3duZXIsIGluaXQub3duZXItPm1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKQEAgLTEyMjcsMTUgKzEyMjMsNiBAQAogICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTdWJhcnJh
eUNyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZp
ZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKSk7CiAgICAgICAgIH0pOwotICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQm91
bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1
bmN0aW9uKSk7Ci0gICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbild
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0
aW9uKSk7Ci0gICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omluc3RhbmNlT2YpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZikpOwotICAgICAg
ICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpCdWlsdGluTG9nKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmlu
ZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZykpOwogICAgICAgICB9KTsKQEAgLTIwMjAsNyArMjAw
Nyw2IEBACiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVy
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxNyw3ICs0MTcsNiBAQAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RT
dHJ1Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eVJldm9rZVN0cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NT
dHJ1Y3R1cmUgbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKIApAQCAtODIwLDcgKzgxOSw2
IEBACiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG1v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdl
dCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSogY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KICAgICBTdHJ1Y3R1cmUqIHByb3h5UmV2b2tlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wcm94eVJldm9rZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlc3RQ
YXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBhcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyk7IH0KICAgICBTdHJ1
Y3R1cmUqIG9yaWdpbmFsUmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG9y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXBBbmFseXplci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNjcsNiArNjgsNyBAQAogY29uc3QgQVNDSUlMaXRl
cmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvciB7ICJB
dHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiJfcyB9OwogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJv
cGVydHlDaGFuZ2VFbnVtZXJhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51
bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBjb25z
dCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJy
b3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmln
dXJhYmxlIHByb3BlcnR5LiJfcyB9OworY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90
b3R5cGVOb3RPYmplY3RFcnJvciB7ICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0
aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MgfTsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTT2JqZWN0KSB9OwogCkBAIC0yMjg1LDEyICsyMjg3LDM0
IEBACiAgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9w
ZXJ0eU5hbWUpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWluc3RhbmNl
b2ZvcGVyYXRvcgorYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CisgICAgICAgIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAg
ICBpZiAoaGFzSW5zdGFuY2VWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBkZWZhdWx0SGFzSW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisKKyAgICByZXR1cm4gaGFzSW5zdGFuY2UoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSk7Cit9CisKIGJvb2wgSlNPYmplY3Q6Omhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpT
VmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKIHsKKyAgICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSk7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpICYmIGhhc0luc3RhbmNlVmFsdWUgIT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7CisgICAgaWYgKCFoYXNJbnN0YW5j
ZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgYXV0byBjYWxsRGF0YSA9IEpT
Qzo6Z2V0Q2FsbERhdGEodm0sIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBpZiAoY2FsbERh
dGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0
ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIHRoaXMpKTsK
QEAgLTIzMDUsNDggKzIzMjksNDQgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKICAgICB9CiAKLSAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZt
KS0+dHlwZUluZm8oKTsKLSAgICBpZiAoaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdEhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkpOwotICAgIH0KLSAgICBp
ZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWV0aG9kVGFi
bGUodm0pLT5jdXN0b21IYXNJbnN0YW5jZSh0aGlzLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7Ci0g
ICAgfQorICAgIGlmIChpc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogCiAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNl
b2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtb3JkaW5hcnloYXNpbnN0YW5jZQorYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0lu
c3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBoYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVl
KSk7Ci19CisgICAgaWYgKCFpc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci1ib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90bykKLXsKLSAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGlmIChpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhpcyktPnRh
cmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIAogICAg
IGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgSlNW
YWx1ZSBwcm90byA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCiAgICAgaWYgKCFw
cm90by5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHBy
b3RvdHlwZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBJbnN0YW5jZW9mUHJvdG90eXBlTm90T2JqZWN0RXJyb3IpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZh
bHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KHByb3RvKS0+aXNQ
cm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpOworfQorCitib29sIEpT
T2JqZWN0Ojppc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwpAQCAtMjM1MywyMCArMjM3MywxMiBAQAogICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2Jq
ZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2Jq
ZWN0KG9iamVjdFZhbHVlKTsKLSAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKKyAgICAgICAg
aWYgKG9iamVjdCA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90
bykpKTsKLX0KLQogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNp
b24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1
bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1
ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUodmFsdWUuYXNDZWxsKCktPnR5cGUo
KSkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KQEAgLTgzLDYgKzgzLDcgQEAKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJ
SUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9y
OwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3Vy
YWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJpbGl0eUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9Q
UklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3Jp
dGFiaWxpdHlFcnJvcjsKK2V4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVy
YWwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yOwogCiBjbGFzcyBKU0ZpbmFsT2Jq
ZWN0OwogCkBAIC02NzQsNyArNjc1LDggQEAKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0SGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNQcm90b3R5cGVP
ZihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heGltdW1Qcm90b3R5cGVDaGFpbkRlcHRoID0gNDAwMDA7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKQEAgLTEyMzcsOCArMTIzOSw2IEBA
CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOwotCiBpbmxpbmUgSlNGaW5hbE9iamVjdCog
SlNGaW5hbE9iamVjdDo6Y3JlYXRlV2l0aEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5h
bE9iamVjdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3
ICs1MzEsNyBAQAogICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7Ci0gICAgaWYgKGNlbGwtPnR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUo
Y2VsbC0+dHlwZSgpKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKGNl
bGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2Fs
bERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJlc3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBlOjpO
b25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CkBAIC01NDMsNyArNTQzLDcgQEAKICAgICBp
ZiAoIXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2VsbCogY2Vs
bCA9IHZhbHVlLmFzQ2VsbCgpOwotICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUpCisgICAgaWYgKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKGNlbGwtPnR5cGUoKSkpCiAg
ICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwpOwogICAgIENh
bGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShj
ZWxsKTsKICAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgfHwg
dmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogICAg
IENBU0UoRmluYWxPYmplY3RUeXBlKQogICAgIENBU0UoSlNDYWxsZWVUeXBlKQogICAgIENBU0Uo
SlNGdW5jdGlvblR5cGUpCisgICAgQ0FTRShKU0JvdW5kRnVuY3Rpb25UeXBlKQogICAgIENBU0Uo
SW50ZXJuYWxGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKQog
ICAgIENBU0UoTnVtYmVyT2JqZWN0VHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksMTAgQEAKICAgICBP
YmplY3RUeXBlLAogICAgIEZpbmFsT2JqZWN0VHlwZSwKICAgICBKU0NhbGxlZVR5cGUsCi0gICAg
SlNGdW5jdGlvblR5cGUsCiAgICAgSW50ZXJuYWxGdW5jdGlvblR5cGUsCiAgICAgTnVsbFNldHRl
ckZ1bmN0aW9uVHlwZSwKKyAgICBKU0Z1bmN0aW9uVHlwZSwKKyAgICBKU0JvdW5kRnVuY3Rpb25U
eXBlLAogICAgIE51bWJlck9iamVjdFR5cGUsCiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAgICAg
UHVyZUZvcndhcmRpbmdQcm94eVR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYg
QEAKIC8vIElubGluZSBmbGFncy4KIAogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgotc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAxOwogc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRDYWxsRGF0YSA9IDEgPDwgMjsgLy8gTmVlZCB0
aGlzIGZsYWcgaWYgeW91IGltcGxlbWVudCBbW0NhbGxhYmxlXV0gaW50ZXJmYWNlLCB3aGljaCBt
ZWFucyBvdmVycmlkaW5nIGdldENhbGxEYXRhLiBUaGUgb2JqZWN0IG1heSBub3QgYmUgY2FsbGFi
bGUgc2luY2UgZ2V0Q2FsbERhdGEgY2FuIHNheSBpdCBpcyBub3QgY2FsbGFibGUuCiBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMzsK
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzVG9UaGlzID0gMSA8PCA0OyAvLyBJ
ZiB0aGlzIGlzIGZhbHNlIHRoZW4gdGhpcyByZXR1cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuICd0
aGlzJy4gTm9uLW9iamVjdCBjZWxscyB0aGF0IGFyZSB2aXNpYmxlIHRvIEpTIGhhdmUgdGhpcyBz
ZXQgYXMgZG8gc29tZSBleG90aWMgb2JqZWN0cy4KQEAgLTQ3LDcgKzQ2LDYgQEAKIAogLy8gT3V0
IG9mIGxpbmUgZmxhZ3MuCiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0hh
c0luc3RhbmNlID0gMSA8PCA4Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eU5hbWVzID0gMSA8PCA5Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBP
dmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyA9IDEgPDwgMTA7CiBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgMTE7CkBAIC05
MCw4ICs4OCw2IEBACiAKICAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFnczIpIDw8IG51bWJlck9mSW5saW5lQml0cykgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFncyk7IH0KICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQ+KCk7IH0KLSAgICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJu
IGlzU2V0T25GbGFnczI8SW1wbGVtZW50c0hhc0luc3RhbmNlPigpOyB9Ci0gICAgYm9vbCBpbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRD
YWxsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVzR2V0Q2FsbERh
dGE+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsg
cmV0dXJuIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxhZ3MoKSk7IH0K
ICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoSW5saW5lVHlwZUZs
YWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsg
fQpAQCAtMTEyLDYgKzEwOCwxMiBAQAogICAgIGJvb2wgaXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3QoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPElzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0PigpOyB9CiAgICAgYm9vbCBpbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkgY29uc3QgeyByZXR1cm4gaXNTZXRP
bkZsYWdzMjxJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvPigpOyB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSlNGdW5j
dGlvblR5cGUoSlNUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBKU0Z1
bmN0aW9uVHlwZQorICAgICAgICAgICAgfHwgdHlwZSA9PSBKU0JvdW5kRnVuY3Rpb25UeXBlOwor
ICAgIH0KKwogICAgIHN0YXRpYyBib29sIGlzQXJndW1lbnRzVHlwZShKU1R5cGUgdHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0eXBlID09IERpcmVjdEFyZ3VtZW50c1R5cGUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogY2xhc3MgTnVt
YmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCiAgICAgc3RhdGljIE51bWJlckNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1i
ZXJQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzI4
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3Rv
RnVuY0xvb2t1cEdldHRlcik7CkBAIC01OCw3ICs1Nyw3IEBACiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZiwgb2JqZWN0
UHJvdG9GdW5jVmFsdWVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDApOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJv
dG9GdW5jSGFzT3duUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxLCBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYyk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+cHJvcGVy
dHlJc0VudW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7Ci0gICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc1Byb3Rv
dHlwZU9mLCBvYmplY3RQcm90b3R5cGVJc1Byb3RvdHlwZU9mQ29kZUdlbmVyYXRvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fZGVm
aW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fZGVmaW5lU2V0
dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fbG9va3VwR2V0dGVyX18s
IG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwpAQCAtMTIyLDMzICsxMjEsNiBAQAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdFByb3RvdHlwZUhhc093blByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpOwogfQogCi1KU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotCi0gICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0KLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7Ci0gICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkK
LSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0KLSAgICBKU1ZhbHVlIHYgPSBhc09i
amVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKCF2LmlzT2JqZWN0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICBp
ZiAodiA9PSB0aGlzT2JqKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4odHJ1ZSkpOwotICAgICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgfQotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlz
aW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMzUgQEAKICAgICByZXR1cm4gcmVzdWx0ID09
IFRyaVN0YXRlOjpUcnVlOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wganNJc1Byb3RvdHlwZU9m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBKU09iamVj
dCogdmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXByb3RvdHlwZS5p
c09iamVjdCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworfQorCitBTFdBWVNf
SU5MSU5FIGJvb2wganNJbnN0YW5jZW9mT3BlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgSlNWYWx1ZSBoYXNJbnN0
YW5jZVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjb25zdHJ1Y3Rv
ci5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJSaWdodCBoYW5kIHNpZGUgb2YgaW5zdGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gaGFzSW5zdGFuY2VWYWx1ZQorICAgICAgICA/IGFzT2JqZWN0KGNvbnN0cnVjdG9y
KS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkKKyAg
ICAgICAgOiBhc09iamVjdChjb25zdHJ1Y3RvciktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCiB7CiAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsMTIgKzQ4LDYgQEAKIHsKIH0KIAotU3RydWN0dXJlKiBQcm94eU9iamVjdDo6c3Ry
dWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFy
Z2V0KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gdGFy
Z2V0LmlzQ2FsbGFibGUodm0pID8gZ2xvYmFsT2JqZWN0LT5jYWxsYWJsZVByb3h5T2JqZWN0U3Ry
dWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3RydWN0dXJlKCk7Ci19Ci0KIHZv
aWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKIHsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MSwxMSArNjUsNiBAQAogICAg
IEpTT2JqZWN0KiB0YXJnZXRBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCk7CiAK
ICAgICBtX2lzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDYWxsYWJsZSh2bSk7Ci0gICAg
aWYgKG1faXNDYWxsYWJsZSkgewotICAgICAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZt
KS0+dHlwZUluZm8oKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5pbXBsZW1lbnRzSGFz
SW5zdGFuY2UoKSAmJiBpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAg
fQotCiAgICAgbV9pc0NvbnN0cnVjdGlibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDb25zdHJ1Y3Rv
cih2bSk7CiAKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIHRhcmdldEFzT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkocmV2aXNp
b24gMjcyODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1LDE1IEBACiAgICAgc3RhdGljIFByb3h5T2Jq
ZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQs
IEpTVmFsdWUgaGFuZGxlcikKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gUHJveHlPYmplY3Q6OnN0cnVj
dHVyZUZvclRhcmdldChnbG9iYWxPYmplY3QsIHRhcmdldCk7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVyZSgpOwogICAgICAg
ICBQcm94eU9iamVjdCogcHJveHkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm94eU9i
amVjdD4odm0uaGVhcCkpIFByb3h5T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94
eS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsKICAg
ICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBib29sIGlzQ2FsbGFibGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBmbGFncyA9IFN0cnVjdHVyZUZsYWdz
OwotICAgICAgICBpZiAoaXNDYWxsYWJsZSkKLSAgICAgICAgICAgIGZsYWdzIHw9IChJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKTsKLSAgICAgICAg
U3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgZmxhZ3MpLCBpbmZvKCksIE5vbkFy
cmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICBTdHJ1Y3R1cmUqIHJlc3Vs
dCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oUHJveHlPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgTm9uQXJyYXkgfCBN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSkp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzcsNyArNzQsNiBAQAogcHJpdmF0ZToKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBQcm94eU9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIHN0cnVjdHVyZUZvclRhcmdldChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgdGFyZ2V0KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjYsNyArNTI2LDcgQEAKICAg
ICAgICAgICAgICAgICBtX2xpdmVDZWxsUG9pbnRlcnMuYWRkKGNhbGxlZSk7CiAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICBpZiAoY2FsbGVlQ2VsbC0+dHlwZSgpICE9IEpTRnVuY3Rpb25U
eXBlKSB7CisgICAgICAgICAgICBpZiAoIVR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKGNhbGxl
ZUNlbGwtPnR5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihjYWxsZWVDZWxsLT52bSgpLCBjYWxsZWVDZWxsKSkK
ICAgICAgICAgICAgICAgICAgICAgYWRkQ2FsbGVlKG9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkocmV2aXNp
b24gMjcyODM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rv
ckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU0RPTU9iamVjdDsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwgSlNDOjpPdmVy
cmlkZXNHZXRDYWxsRGF0YTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRh
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjcy
ODM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTI5MTQsNyArMjkxNCw2IEBACiAgICAgJHN0cnVjdHVyZUZs
YWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hw
b2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc0lt
bXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6
Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSJ9ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IjsKICAgICAgICAgCiAg
ICAgIyBQcm90b3R5cGUKICAgICB1bmxlc3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlw
ZSgkaW50ZXJmYWNlKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433333</attachid>
            <date>2021-07-12 11:20:07 -0700</date>
            <delta_ts>2021-07-12 16:40:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210712212006.patch</filename>
            <type>text/plain</type>
            <size>167564</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTEyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHN0cmVz
cy93YXNtLWxvb3AtY29uc2lzdGVuY3kuanMgc2hvdWxkIHJlcXVpcmUgdGhlIC0tdXNlRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6PWZhbHNlIEpTQyBvcHRpb24KSW5kZXg6IEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5hbC1mdW5jdGlvbi5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLWludGVy
bmFsLWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlv
bigpIHsKKyAgICBmdW5jdGlvbiBmbigpIHt9CisgICAgdmFyIGFyciA9IFtdOworICAgIHZhciBy
ZSA9IC8oPzopLzsKKyAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlOworICAgIHZhciBtYXAgPSBuZXcg
TWFwOworICAgIHZhciBzZXQgPSBuZXcgU2V0OworCisgICAgdmFyIGFjYyA9IDA7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhY2MgKz0gZm4gaW5zdGFuY2Vv
ZiBGdW5jdGlvbgorICAgICAgICAgICAgJiYgYXJyIGluc3RhbmNlb2YgQXJyYXkKKyAgICAgICAg
ICAgICYmIHJlIGluc3RhbmNlb2YgUmVnRXhwCisgICAgICAgICAgICAmJiBkYXRlIGluc3RhbmNl
b2YgRGF0ZQorICAgICAgICAgICAgJiYgbWFwIGluc3RhbmNlb2YgTWFwCisgICAgICAgICAgICAm
JiBzZXQgaW5zdGFuY2VvZiBTZXQ7CisgICAgfQorICAgIGlmIChhY2MgIT09IGkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLWNlbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmlt
aXRpdmUtY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACisoZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQorCisgICAg
dmFyIG51bWJlciA9IDQuNTsKKyAgICB2YXIgc3RyaW5nID0gInN0ciI7CisgICAgdmFyIHN5bWJv
bCA9IFN5bWJvbCgpOworICAgIHZhciBiaWdpbnQgPSAxMG47CisKKyAgICB2YXIgYWNjID0gMDsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyArPSBudW1i
ZXIgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IHN0cmluZyBpbnN0YW5jZW9mIEJhcgor
ICAgICAgICAgICAgfHwgc3ltYm9sIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8fCBiaWdp
bnQgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1p
dGl2ZS1ub24tY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisoZnVuY3Rp
b24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQorCisg
ICAgdmFyIGFjYyA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsraSkgeworICAg
ICAgICBhY2MgKz0gdW5kZWZpbmVkIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8fCBudWxs
IGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCB0cnVlIGluc3RhbmNlb2YgRm9vCisgICAg
ICAgICAgICB8fCBpIGluc3RhbmNlb2YgQmFyOworICAgIH0KKyAgICBpZiAoYWNjKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRleDogSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcm94eS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5LmpzCShub25leGlzdGVudCkKKysr
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJveHkuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIFRhcmdldCgp
IHt9CisgICAgdmFyIHZhbHVlID0gbmV3IFRhcmdldCgpOworICAgIHZhciBwcm94eSA9IG5ldyBQ
cm94eShUYXJnZXQsIFJlZmxlY3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkr
KykgeworICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIHByb3h5KSkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDog
SlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMv
dGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjc5ODQxKQorKysgSlNUZXN0cy90
ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk5LDkgKzE1OTks
NiBAQCB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2NvCiAgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2dlbmVyYXRvcnMvc2NvcGUtcGFyYW0tcmVzdC1lbGVtLXZhci1vcGVuLmpzOgogICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtvdXRzaWRlwrssIMKraW5zaWRl
wrspIHRvIGJlIHRydWUnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2luc3RhbmNlb2YvcHJv
dG90eXBlLWdldHRlci13aXRoLXByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJv
cjogZ2V0dGVyIGZvciAncHJvdG90eXBlJyBjYWxsZWQiCi0gIHN0cmljdCBtb2RlOiAiVGVzdDI2
MkVycm9yOiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKIHRlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtYW5kLWFzc2lnbm1lbnQtb3BlcmF0b3It
bm9uLXNpbXBsZS1saHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBz
aG91bGQgbm90IGJlIGV2YWx1YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2lj
YWwtYXNzaWdubWVudC9sZ2NsLW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxl
LWxocy5qczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5ODQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwOCBAQAorMjAyMS0wNy0xMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6
OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UpOgorICAgICAgICAqIEFQSS9KU1Zh
bHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKGNvbnN0cnVjdG9ySGFzSW5z
dGFuY2UpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0aW9u
UHJvdG90eXBlLmpzOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuc3ltYm9sSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChpc1Byb3RvdHlwZU9mKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlz
aXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgorICAgICAgICAoSlND
OjpDYWxsVmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9TdHJpbmcpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1
bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFu
Y2UpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZSk6CisgICAgICAg
IChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbVN0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAg
ICAgKEpTQzo6aXNGdW5jdGlvblNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2luc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29u
c3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9j
YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpxdWVyaWVkVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3Bl
Y3VsYXRlZFR5cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6OmFzSlNUeXBl
UmFuZ2UgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1R5cGVJbmZvT3BlcmFu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dHlwZUluZm9PcGVyYW5kKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZH
T3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3Vz
dG9tKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdp
dGhUeXBlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tU
eXBlSW5mb0ZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpjaGVja0ZvcmJpZGRlblByb3RvdHlw
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3Rh
bmNlcyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmTm90RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhf
dHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292
ZXJyaWRlc19oYXNfaW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaElu
c3RhbmNlT2YpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgIChKU0M6OkpTVHlwZVJhbmdl
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSk6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5j
dGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm94eU9iamVjdFN0cnVjdHVyZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsYWJsZVByb3h5T2JqZWN0U3Ry
dWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtBdXhpbGlhcnlBbmRWaXNpdE91dE9mTGluZVBy
b3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmlzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6Z2V0SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjptYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlzSlNGdW5jdGlvblR5
cGUpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0hhc0luc3RhbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc0lzUHJvdG90eXBlT2YpOgorICAgICAg
ICAoSlNDOjpqc0luc3RhbmNlb2ZPcGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNz
VW52ZXJpZmllZFN0YWNrVHJhY2VzKToKKwogMjAyMS0wNy0xMiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpJVENhZ2UgYWxyZWFkeSBpbmNsdWRl
cyBndWFyZCBwYWdlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xMzM2LDYgKzEzMzYsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Nb2R1bGVM
b2FkZXIuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvTnVtYmVyQ29uc3Ry
dWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvT2JqZWN0Q29uc3Ry
dWN0b3IuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvT2JqZWN0UHJvdG90
eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1
Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Qcm9taXNlT3BlcmF0
aW9ucy5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Qcm9taXNlUHJvdG90
eXBlLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAgJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpz
CiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKICQoUFJPSkVDVF9ESVIp
L2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9P
YmplY3RDb25zdHJ1Y3Rvci5qcworJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvT2JqZWN0UHJvdG90
eXBlLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKICQo
UFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCiAkKFBST0pFQ1RfRElS
KS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsx
MTQsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvTnVtYmVyQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvUHJvbWlzZU9wZXJhdGlvbnMuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1Byb21pc2VQcm90b3R5cGUuanMgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNDYWxsYmFja0Nv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwgOiBwdWJsaWMgUGFyZW50IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gUGFyZW50OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3Zl
cnJpZGVzR2V0Q2FsbERhdGEgfCBPdmVycmlkZXNQdXQgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3Rh
bmNlIHwgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIHwgR2V0T3duUHJvcGVydHlTbG90TWF5QmVX
cm9uZ0Fib3V0RG9udEVudW07Ci0gICAgc3RhdGljX2Fzc2VydCghKFN0cnVjdHVyZUZsYWdzICYg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksICJ1c2luZyBjdXN0b21IYXNJbnN0YW5jZSIp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBPdmVycmlk
ZXNQdXQgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIHwgR2V0T3duUHJvcGVydHlTbG90
TWF5QmVXcm9uZ0Fib3V0RG9udEVudW07CiAKICAgICB+SlNDYWxsYmFja09iamVjdCgpOwogCkBA
IC0yMDEsNiArMjAwLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKFZNJiwgU3Vic3BhY2VBY2Nlc3MpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgY3VzdG9tVG9QcmltaXRpdmUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTF9BVFRSSUJVVEVTIGN1c3RvbUhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTIxMSw4ICsyMTEs
NiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCk7CiAKLSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBnZXRPd25T
cGVjaWFsUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKIAogICAgIHN0YXRpYyBDYWxsRGF0
YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTEgKzExNSwxNCBAQCB2b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6aW5pdChKU0dsCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICAKICAgICBib29sIGhhc0NvbnZlcnRUb1R5cGUgPSBmYWxzZTsKKyAgICBib29s
IGhhc0N1c3RvbUhhc0luc3RhbmNlID0gZmFsc2U7CiAgICAgVmVjdG9yPEpTT2JqZWN0SW5pdGlh
bGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9
IGNsYXNzUmVmKCk7CiAgICAgZG8gewogICAgICAgICBpZiAoanNDbGFzcy0+Y29udmVydFRvVHlw
ZSkKICAgICAgICAgICAgIGhhc0NvbnZlcnRUb1R5cGUgPSB0cnVlOworICAgICAgICBpZiAoanND
bGFzcy0+aGFzSW5zdGFuY2UpCisgICAgICAgICAgICBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IHRy
dWU7CiAgICAgICAgIGlmIChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXplID0g
anNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5lcy5hcHBlbmQoaW5p
dGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykp
OwpAQCAtMTI5LDYgKzEzMiwxMSBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5p
dChKU0dsCiAgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MSwgIltTeW1ib2wudG9QcmltaXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgfQorICAgIGlmIChoYXNDdXN0b21IYXNJbnN0YW5jZSkgeworICAgICAgICB0aGlzLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sLAorICAgICAg
ICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLmhh
c0luc3RhbmNlXSJfcywgY3VzdG9tSGFzSW5zdGFuY2UpLAorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIH0KICAgICAK
ICAgICAvLyBpbml0aWFsaXplIGZyb20gYmFzZSB0byBkZXJpdmVkCiAgICAgZm9yIChpbnQgaSA9
IHN0YXRpY19jYXN0PGludD4oaW5pdFJvdXRpbmVzLnNpemUoKSkgLSAxOyBpID49IDA7IGktLSkg
ewpAQCAtNTAxLDE0ICs1MDksMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGlmICgh
dGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkpTQ2FsbGJhY2tPYmplY3RbU3ltYm9sLmhhc0luc3RhbmNlXSBtZXRob2QgY2Fs
bGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9zKTsKKwogICAgIEpTQ29udGV4dFJl
ZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVjdCkpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJh
Y2sgaGFzSW5zdGFuY2UgPSBqc0NsYXNzLT5oYXNJbnN0YW5jZSkgewpAQCAtNTIwLDExICs1MzIs
MTEgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhhcwogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGhhc0luc3RhbmNlKGV4ZWNSZWYsIHRoaXNSZWYsIHZhbHVlUmVmLCAm
ZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgdG9KUyhn
bG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRv
SlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsOSArMjg4LDcg
QEAgYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoSlNDbwogICAgIEpTVmFsdWUg
anNWYWx1ZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAKICAgICBKU09iamVjdCoganND
b25zdHJ1Y3RvciA9IHRvSlMoY29uc3RydWN0b3IpOwotICAgIGlmICghanNDb25zdHJ1Y3Rvci0+
c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgcmVzdWx0ID0ganNDb25zdHJ1Y3Rvci0+aGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgLy8gZmFsc2UgaWYgYW4gZXhjZXB0aW9uIGlz
IHRocm93bgorICAgIGJvb2wgcmVzdWx0ID0ganNDb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3Rh
bmNlKGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IC8vIGZhbHNlIGlmIGFuIGV4Y2VwdGlvbiBpcyB0
aHJvd24KICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0
aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
cmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
cmFwcGVyTWFwLm1tCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0
YXRpYyBib29sIGNvbnN0cnVjdG9ySGFzSW5zdGFuY2UoSlNDb24KIAogICAgIEpTQzo6SlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3RvclJlZik7CiAgICAgSlNDOjpKU1ZhbHVl
IGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmplY3QsIHBvc3NpYmxlSW5zdGFuY2UpOwotICAgIHJl
dHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0
YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSkpOworICAgIHJldHVybiBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3RhbmNlKGds
b2JhbE9iamVjdCwgaW5zdGFuY2UpOwogfQogCiBzdGF0aWMgSlNDOjpKU09iamVjdCogbWFrZVdy
YXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBpZCB3cmFwcGVkT2Jq
ZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3OTg0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTg5LDYgKzQxODksNyBAQAogCQk4NDkyNUE5
QTIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDkyNUE5QjIyQjMw
Q0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8q
IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0RjE1M0ZFMjY5QTA4NzIwMDBCOUNERSAvKiBPYmpl
Y3RQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBPYmplY3RQcm90b3R5cGUuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAv
KiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fz
c2VtYmxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk4Myw2ICs4
OTg0LDcgQEAKIAkJCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpz
ICovLAogCQkJCUE1MjcwNDg2MUQwMjdDODgwMDM1NEMzNyAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5REIxRUYgLyogT2JqZWN0Q29uc3RydWN0b3Iu
anMgKi8sCisJCQkJODRGMTUzRkUyNjlBMDg3MjAwMEI5Q0RFIC8qIE9iamVjdFByb3RvdHlwZS5q
cyAqLywKIAkJCQk3Q0Y5QkM1RTFCNjVEOUIxMDA5REIxRUYgLyogUHJvbWlzZUNvbnN0cnVjdG9y
LmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBQcm9taXNlT3BlcmF0aW9u
cy5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyogUHJvbWlzZVByb3RvdHlw
ZS5qcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkgKzEyMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGlzU2hhcmVkVHlwZWRBcnJheVZpZXcpIFwKICAgICBt
YWNybyhpc0RldGFjaGVkKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheURlZmF1bHRDb21wYXJhdG9y
KSBcCi0gICAgbWFjcm8oaXNCb3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oaGFzSW5zdGFuY2VC
b3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oaW5zdGFuY2VPZikgXAorICAgIG1hY3JvKGZ1bmN0
aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wpIFwKICAgICBtYWNybyhpc0FycmF5U2xvdykg
XAogICAgIG1hY3JvKHNhbWVWYWx1ZSkgXAogICAgIG1hY3JvKGNvbmNhdE1lbWNweSkgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3Rv
dHlwZS5qcwkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMSArNDIsNiBA
QCBmdW5jdGlvbiBhcHBseSh0aGlzVmFsdWUsIGFyZ3VtZW50VmFsdWVzCiAgICAgcmV0dXJuIHRo
aXMuQGFwcGx5KHRoaXNWYWx1ZSwgYXJndW1lbnRWYWx1ZXMpOwogfQogCi1Ab3ZlcnJpZGRlbk5h
bWU9IltTeW1ib2wuaGFzSW5zdGFuY2VdIgotZnVuY3Rpb24gc3ltYm9sSGFzSW5zdGFuY2UodmFs
dWUpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNDYWxsYWJsZSh0aGlzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKEBpc0JvdW5kRnVuY3Rpb24odGhpcykp
Ci0gICAgICAgIHJldHVybiBAaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKHRoaXMsIHZhbHVlKTsK
LQotICAgIHZhciB0YXJnZXQgPSB0aGlzLnByb3RvdHlwZTsKLSAgICByZXR1cm4gQGluc3RhbmNl
T2YodmFsdWUsIHRhcmdldCk7Ci19Ci0KIGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmpl
Y3RQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL09iamVjdFByb3RvdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQWxleGV5IFNodmF5a2EgPHNodmFp
a2FsZXNoQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGlzUHJvdG90eXBlT2YodmFs
dWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNPYmplY3QodmFsdWUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQGluc3RhbmNlT2YodmFsdWUsIEB0
b09iamVjdCh0aGlzKSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgZW51bSBjbGFzcyBM
aW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCiAg
ICAgbWFjcm8oaXNTZXRJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzVW5kZWZpbmVkT3JOdWxsKSBc
CisgICAgbWFjcm8oaW5zdGFuY2VPZikgXAogICAgIG1hY3JvKHRhaWxDYWxsRm9yd2FyZEFyZ3Vt
ZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBcCiAgICAgbWFjcm8odGhyb3dSYW5n
ZUVycm9yKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTQwMiwxMyArNDAyLDYg
QEAgb3AgOmlkZW50aXR5X3dpdGhfcHJvZmlsZSwKICAgICAgICAgYm90dG9tUHJvZmlsZTogdW5z
aWduZWQsCiAgICAgfQogCi1vcCA6b3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwKLSAgICBhcmdzOiB7
Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBjb25zdHJ1Y3RvcjogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBoYXNJbnN0YW5jZVZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIs
Ci0gICAgfQotCiBvcCA6aW5zdGFuY2VvZiwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLApAQCAtNDM0LDcgKzQyNyw4IEBAIG9wIDppc19jZWxsX3dpdGhfdHlwZSwK
ICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBvcGVy
YW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHR5cGU6IEpTVHlwZSwKKyAgICAgICAgZmly
c3RUeXBlOiBKU1R5cGUsCisgICAgICAgIGxhc3RUeXBlOiBKU1R5cGUsCiAgICAgfQogCiBvcCA6
aW5fYnlfdmFsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQs
NyArMjM0LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAg
IFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSGFzUHJpdmF0ZU5h
bWUsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BIYXNQcml2YXRlQnJhbmQsIGJhc2UsIGJy
YW5kKQotICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0lu
c3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCiAg
ICAgVVNFUyhPcEFkZCwgbGhzLCByaHMpCiAgICAgVVNFUyhPcE11bCwgbGhzLCByaHMpCkBAIC00
OTAsNyArNDg5LDYgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwog
ICAgIERFRlMoT3BHZXRCeUlkV2l0aFRoaXMsIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWxXaXRo
VGhpcywgZHN0KQogICAgIERFRlMoT3BHZXRQcm90b3R5cGVPZiwgZHN0KQotICAgIERFRlMoT3BP
dmVycmlkZXNIYXNJbnN0YW5jZSwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3QpCiAg
ICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWwsIGRz
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZv
aWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGNhbGxlZSA9IGpz
Q2FzdDxKU09iamVjdCo+KG1fY2FsbGVlT3JDb2RlQmxvY2suZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIGlmIChjYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkgeworICAgICAgICAgICAg
ICAgIGlmIChUeXBlSW5mbzo6aXNKU0Z1bmN0aW9uVHlwZShjYWxsZWUtPnR5cGUoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNsZWFyaW5nIGNhbGwgdG8gIiwKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIENhbGxM
aW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWlz
RGlyZWN0KCkgJiYgaGF2ZUxhc3RTZWVuQ2FsbGVlKCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQobGFz
dFNlZW5DYWxsZWUoKSkpIHsKLSAgICAgICAgaWYgKGxhc3RTZWVuQ2FsbGVlKCktPnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgaWYgKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBl
KGxhc3RTZWVuQ2FsbGVlKCktPnR5cGUoKSkpCiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0Nh
bGxlZShqc0Nhc3Q8SlNGdW5jdGlvbio+KGxhc3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZl
cnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgog
ICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQor
ICAgICAgICBpZiAoVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUobV9jYWxsZWUtPnR5cGUoKSkp
CiAgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVuY3Rpb24qPihtX2Nh
bGxlZSktPmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0
cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIkJhZENvbnN0YW50Q2FjaGUiOwogICAg
IGNhc2UgQmFkSW5kZXhpbmdUeXBlOgogICAgICAgICByZXR1cm4gIkJhZEluZGV4aW5nVHlwZSI7
Ci0gICAgY2FzZSBCYWRUeXBlSW5mb0ZsYWdzOgotICAgICAgICByZXR1cm4gIkJhZFR5cGVJbmZv
RmxhZ3MiOwogICAgIGNhc2UgT3ZlcmZsb3c6CiAgICAgICAgIHJldHVybiAiT3ZlcmZsb3ciOwog
ICAgIGNhc2UgTmVnYXRpdmVaZXJvOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIGVu
dW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBCYWRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1
c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFudENhY2hlLCAvLyBX
ZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAodXN1YWxseSBhIHBy
b3RvdHlwZSkgd2FzIHdyb25nLgogICAgIEJhZEluZGV4aW5nVHlwZSwgLy8gV2UgZXhpdGVkIGJl
Y2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCi0gICAgQmFkVHlwZUluZm9GbGFncywg
Ly8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBhYm91
dCB3aGF0IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4KICAgICBPdmVyZmxvdywgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJvLCAvLyBXZSBleGl0
ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgogICAgIE5lZ2F0aXZlSW5k
ZXgsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGEgbmVnYXRpdmUgaW5kZXgg
aW4gYSBwbGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lv
biAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzczLDcgQEAgSW5zdGFuY2VPZlN0YXR1
cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdQogI2lmIEVOQUJMRShERkdfSklUKQogSW5zdGFuY2VP
ZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7Ci0g
ICAgLy8gRklYTUU6IFdlIHdvdWxkbid0IGhhdmUgdG8gYmFpbCBmb3Igbm9uQ2VsbCBpZiB3ZSB0
YXVnaHQgTWF0Y2hTdHJ1Y3R1cmUgaG93IHRvIGhhbmRsZSBub24KLSAgICAvLyBjZWxscy4gSWYg
d2UgZml4ZWQgdGhhdCB0aGVuIHdlIHdvdWxkbid0IGJlIGFibGUgdG8gdXNlIHN1bW1hcnkoKTsK
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Nzg0Cisg
ICAgQVNTRVJUKCFzdHViSW5mby0+c2F3Tm9uQ2VsbCk7CiAgICAgU3R1YkluZm9TdW1tYXJ5IHN1
bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeSh2bSwgc3R1YkluZm8pOwogICAgIGlm
ICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQogICAgICAgICByZXR1cm4gSW5zdGFuY2VPZlN0YXR1
cyhzdW1tYXJ5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgs
OCArNTgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGlzRGV0YWNoZWQsIG51bGxw
dHIpIFwKICAgICB2KHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvciwgbnVsbHB0cikgXAogICAg
IHYodHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCi0gICAgdihpc0JvdW5kRnVu
Y3Rpb24sIG51bGxwdHIpIFwKLSAgICB2KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0
cikgXAorICAgIHYoZnVuY3Rpb25Qcm90b3R5cGVIYXNJbnN0YW5jZVN5bWJvbCwgbnVsbHB0cikg
XAogICAgIHYoaW5zdGFuY2VPZiwgbnVsbHB0cikgXAogICAgIHYoQnVpbHRpbkxvZywgbnVsbHB0
cikgXAogICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBudWxscHRyKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsyMzAsMTEgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cgogICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgi
RGF0YVZpZXciKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZh
bHNlOworCisgICAgICAgICAgICBpZiAodmFsdWUgJiBTcGVjSW50ZXJuYWxGdW5jdGlvbikKKyAg
ICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkludGVybmFsRnVuY3Rpb24iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IFNwZWNTdHJpbmcpCkBAIC01MTgsMTAg
KzUyMywxMyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9JCiAKICAg
ICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAg
ICAgICBpZiAoY2xhc3NJbmZvID09IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKQotICAgICAgICAg
ICAgcmV0dXJuIFNwZWNGdW5jdGlvbldpdGhOb25EZWZhdWx0SGFzSW5zdGFuY2U7Ci0gICAgICAg
IHJldHVybiBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlOworICAgICAgICAgICAg
cmV0dXJuIFNwZWNCb3VuZEZ1bmN0aW9uOworICAgICAgICByZXR1cm4gU3BlY05vbkJvdW5kRnVu
Y3Rpb247CiAgICAgfQogCisgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEludGVybmFs
RnVuY3Rpb246OmluZm8oKSkpCisgICAgICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbiB8
IFNwZWNPYmplY3RPdGhlcjsKKwogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU1By
b21pc2U6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICAK
QEAgLTY4Niw2ICs2OTQsMTYgQEAgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGVGcm9tU3Bl
Y3VsYQogICAgIHJldHVybiBOb3RUeXBlZEFycmF5OwogfQogCitzdGQ6Om9wdGlvbmFsPFNwZWN1
bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSByYW5nZSkK
K3sKKyAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbiA9IFNwZWNOb25lOworICAgIGZvciAo
dWludDhfdCB0eXBlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4ocmFuZ2UuZmlyc3QpOyB0eXBlIDw9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJhbmdlLmxhc3QpOyB0eXBlKyspCisgICAgICAgIHNwZWN1
bGF0aW9uIHw9IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShzdGF0aWNfY2FzdDxKU1R5cGU+KHR5cGUp
KS52YWx1ZV9vcihTcGVjTm9uZSk7CisgICAgaWYgKHNwZWN1bGF0aW9uID09IFNwZWNOb25lKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzcGVjdWxhdGlvbjsKK30K
Kwogc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpT
VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNjk1LDYgKzcxMywxMCBAQCBz
dGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvCiAgICAgICAgIHJldHVybiBT
cGVjU3ltYm9sOwogICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVj
SGVhcEJpZ0ludDsKKyAgICBjYXNlIEludGVybmFsRnVuY3Rpb25UeXBlOgorICAgICAgICByZXR1
cm4gU3BlY0ludGVybmFsRnVuY3Rpb247CisgICAgY2FzZSBKU0Z1bmN0aW9uVHlwZToKKyAgICAg
ICAgcmV0dXJuIFNwZWNOb25Cb3VuZEZ1bmN0aW9uOwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAg
ICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTk2
MCw2ICs5ODIsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29uCiAg
ICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIGlmICghc3RybmNtcChzcGVjdWxh
dGlvbiwgIlNwZWNEYXRhVmlld09iamVjdCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0Iikp
KQogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OworICAgIGlmICghc3RybmNtcChz
cGVjdWxhdGlvbiwgIlNwZWNJbnRlcm5hbEZ1bmN0aW9uIiwgc3RybGVuKCJTcGVjSW50ZXJuYWxG
dW5jdGlvbiIpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOwogICAgIGlm
ICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09i
amVjdE90aGVyIikpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICgh
c3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxNSBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0cnVjdHVyZTsKK3N0cnVjdCBKU1R5cGVSYW5nZTsKIAog
dHlwZWRlZiB1aW50NjRfdCBTcGVjdWxhdGVkVHlwZTsKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7IC8vIFdl
IGRvbid0IGtub3cgYW55dGhpbmcgeWV0Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjRmluYWxPYmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAx
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlICAgID0gMXVsbCA8PCAy
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIHRoYXQgaGFzIGl0cyBJbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlIHR5cGUgaW5mbyBmbGFncyBiaXQgc2V0Lgotc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhhc0luc3RhbmNl
ID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIHRoYXQgZG9lcyBu
b3QgaGF2ZSBpdHMgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3Mg
Yml0IHNldC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5zdGFu
Y2UgfCBTcGVjRnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhhc0luc3RhbmNlOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0Z1bmN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
Qm91bmRGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0JvdW5kRnVuY3Rpb24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNOb25Cb3VuZEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLCBi
dXQgbm90IGEgSlNCb3VuZEZ1bmN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JvdW5kRnVuY3Rp
b24gfCBTcGVjTm9uQm91bmRGdW5jdGlvbjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlv
bi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDU7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nl
cy4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyQXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNjsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgpAQCAtMTA5LDggKzExMCw5IEBAIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0kKIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNI
ZWFwQmlnSW50OwogI2VuZGlmCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNE
YXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ1OyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50ZXJuYWxGdW5jdGlvbiAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0NjsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgSW50ZXJuYWxGdW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJp
bmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmln
SW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCi1zdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
RmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZp
ZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJp
bmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlz
ZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmpl
Y3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJy
YXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNl
ZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVj
VHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50
cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3Qg
fCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3Bl
Y1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNw
ZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3QgfCBT
cGVjSW50ZXJuYWxGdW5jdGlvbjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkg
a2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBT
cGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBT
cGVjQmlnSW50MzIgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJl
IGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJs
ZUltcHVyZU5hTi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2Rl
VG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBT
cGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGlu
IGEgYnl0ZWNvZGUgbG9jYWwuCkBAIC0yMzEsNyArMjMzLDcgQEAgaW5saW5lIGJvb2wgaXNBcnJh
eVNwZWN1bGF0aW9uKFNwZWN1bGF0ZQogCiBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNGdW5j
dGlvbjsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjRnVuY3Rpb24pID09IHZh
bHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc1Byb3h5T2JqZWN0U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC01MTgsNiArNTIwLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYQogLy8gSWYgaXQncyBhbiBhbnlJbnQoKSwgaXQnbGwgcmV0dXJuIHNw
ZWN1bGF0ZWQgdHlwZXMgZnJvbSB0aGUgSW50NTIgbGF0dGljZS4KIC8vIE90aGVyd2lzZSwgaXQn
bGwgcmV0dXJuIHR5cGVzIGZyb20gdGhlIEpTVmFsdWUgbGF0dGljZS4KIEpTX0VYUE9SVF9QUklW
QVRFIFNwZWN1bGF0ZWRUeXBlIGludDUyQXdhcmVTcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVl
KTsKK3N0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJh
bmdlKEpTVHlwZVJhbmdlKTsKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0
aW9uRnJvbUpTVHlwZShKU1R5cGUpOwogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21U
eXBlZEFycmF5VHlwZShUeXBlZEFycmF5VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9yIHR5cGVkIHZp
ZXdzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcsMTEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bgogICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKSwgdGFy
Z2V0LmJpbmQodGhpcykpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElm
Tm90TGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50IGNv
bnN0YW50LCBMYWJlbCYgdGFyZ2V0KQoreworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25k
LCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBjb25zdGFudCksIHRhcmdldC5iaW5kKHRo
aXMpKTsKK30KKwogdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWRlSnVtcElmTm90
RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQog
ewogICAgIE9wSm5lcVB0cjo6ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGNvbmQsIG1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3Bl
cnR5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CkBAIC0xNzM1LDEyICsxNzQwLDEyIEBA
IGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgIHJl
d2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0
LCBvcC5tX3ZhbHVlLCBTdHJpbmdUeXBlKTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhU
eXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSwgU3RyaW5nVHlwZSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gInN5bWJvbCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAg
ICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1
ZSwgU3ltYm9sVHlwZSk7CisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0
aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5bWJvbFR5cGUsIFN5bWJvbFR5cGUpOwogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVl
ID09ICJiaWdpbnQiKSB7CkBAIC0xNzQ4LDcgKzE3NTMsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RXF1YWxpdHlPcEltCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgICAg
IE9wSXNCaWdJbnQ6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKICNlbHNlCi0gICAgICAg
ICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhl
YXBCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRo
aXMsIGRzdCwgb3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUsIEhlYXBCaWdJbnRUeXBlKTsKICNl
bmRpZgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjQy
NCwxMiArMjQyOSw2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAog
ICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPdmVycmlkZXNI
YXNJbnN0YW5jZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdp
c3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKQotewotICAgIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U6
OmVtaXQodGhpcywgZHN0LCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgcmV0
dXJuIGRzdDsKLX0KLQogLy8gSW5kaWNhdGVzIHRoZSBsZWFzdCB1cHBlciBib3VuZCBvZiByZXNv
bHZlIHR5cGUgYmFzZWQgb24gbG9jYWwgc2NvcGUuIFRoZSBieXRlY29kZSBsaW5rZXIKIC8vIHdp
bGwgc3RhcnQgd2l0aCB0aGlzIFJlc29sdmVUeXBlIGFuZCBjb21wdXRlIHRoZSBsZWFzdCB1cHBl
ciBib3VuZCBpbmNsdWRpbmcgaW50ZXJjZXB0aW5nIHNjb3Blcy4KIFJlc29sdmVUeXBlIEJ5dGVj
b2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlwZSgpCkBAIC00NjA2LDkgKzQ2MDUsMTUgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb0luZAogICAgIHJldHVybiBkc3Q7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZVJhbmdlIHJhbmdlKQoreworICAgIE9w
SXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHJhbmdlLmZpcnN0LCByYW5nZS5s
YXN0KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBK
U1R5cGUgdHlwZSkKIHsKLSAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3Jj
LCB0eXBlKTsKKyAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBl
LCB0eXBlKTsKICAgICByZXR1cm4gZHN0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw3ICs3OTgsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEluc3RhbmNlT2ZDdXN0b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2
YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFs
dWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKTsKQEAgLTkxNiw2ICs5MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0SnVtcElmRmFsc2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7
CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25k
LCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25BcHBs
eShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0SnVt
cElmTm90TGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50
LCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdW5zaWduZWQgZW1pdFdpZGVKdW1wSWZOb3RGdW5j
dGlvbkhhc093blByb3BlcnR5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAg
ICAgICB2b2lkIHJlY29yZEhhc093blN0cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoU3RydWN0
dXJlRm9ySW5Db250ZXh0JiwgdW5zaWduZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1Bh
dGgpOwogCkBAIC05NDAsNiArOTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRFbnVtZXJhdG9yR2VuZXJpY1Byb3BlcnR5TmFtZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGVudW1lcmF0b3IsIFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBp
bmRleCk7CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGVSYW5nZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywg
SlNUeXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzR2VuZXJhdG9yKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEpTR2VuZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXN5bmNH
ZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJ
c0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBc3luY0dlbmVyYXRvclR5cGUpOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDUsNiArMTM0NSwxNiBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfCiAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0R2V0UHJvdG90eXBlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgdmFsdWUuZ2V0KCkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2luc3RhbmNlT2YoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBBU1NFUlQo
IW5vZGUtPm1fbmV4dCk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgp
KTsKK30KKwogc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRl
eChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmVudHJ5
KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOwpA
QCAtMzE2MCwyOSArMzE3MCwyMSBAQCBSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6
OmVtaXRCCiAKIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBoYXNJbnN0YW5jZVZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpc09iamVjdCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXNDdXN0b20gPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9leHByMSk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgbV9leHByMik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhhc0luc3RhbmNlVmFsdWUg
PSBnZW5lcmF0b3IubW92ZUVtcHR5VmFsdWUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxl
ZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVy
ZShnZW5lcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3IgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobV9leHByMik7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZyA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBkc3RSZWcgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHBy
b3RvdHlwZS5nZXQoKSk7CiAgICAgUmVmPExhYmVsPiBjdXN0b20gPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICBS
ZWY8TGFiZWw+IHR5cGVFcnJvciA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCi0gICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgIGdlbmVyYXRvci5lbWl0SXNPYmplY3QoaXNPYmplY3QuZ2V0KCksIGNvbnN0cnVjdG9y
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGlzT2JqZWN0LmdldCgpLCB0
eXBlRXJyb3IuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJhdG9y
LmVtaXRJc0NlbGxXaXRoVHlwZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9y
LmdldCgpLCBKU1R5cGVSYW5nZSB7IEludGVybmFsRnVuY3Rpb25UeXBlLCBKU0Z1bmN0aW9uVHlw
ZSB9KSwgY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRv
ci52bSgpLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sKTsKIAotICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKGlzQ3VzdG9tLmdldCgpLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSk7Ci0KLSAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGlzQ3VzdG9tLmdldCgpLCBjdXN0b20uZ2V0
KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChoYXNJbnN0
YW5jZVZhbHVlLmdldCgpLCBMaW5rVGltZUNvbnN0YW50OjpmdW5jdGlvblByb3RvdHlwZUhhc0lu
c3RhbmNlU3ltYm9sLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFs
c2UoZ2VuZXJhdG9yLmVtaXRJc09iamVjdChkc3RSZWcuZ2V0KCksIHZhbHVlLmdldCgpKSwgZG9u
ZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3Rv
dHlwZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSk7CkBAIC0zMTkxLDEwICszMTkzLDYgQEAgUmVnaXN0ZXJJRCogSW5zdGFu
Y2VPZk5vZGU6OmVtaXRCeXRlY29kZQogICAgIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihkc3RS
ZWcuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGRvbmUuZ2V0KCkpOwotCi0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0eXBlRXJy
b3IuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlJpZ2h0IGhhbmQg
c2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiKTsKLQogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3MSw3ICsx
NDcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IHRydWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6Ci0gICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNDZWxsKCkg
JiYgY2hpbGQudmFsdWUoKS5hc0NlbGwoKS0+dHlwZSgpID09IG5vZGUtPnF1ZXJpZWRUeXBlKCkp
KTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFs
dWUoKS5pc0NlbGwoKSAmJiBub2RlLT5xdWVyaWVkVHlwZSgpLmNvbnRhaW5zKGNoaWxkLnZhbHVl
KCkuYXNDZWxsKCktPnR5cGUoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNCb29sZWFuKApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgY2hpbGQubV9zdHJ1Y3R1cmUuZm9y
RWFjaCgKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1ZXJpZWRUeXBlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gbm9kZS0+cXVlcmllZFR5cGUo
KS5jb250YWlucyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbWF0Y2hlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
QEAgLTQzMzQsMTAgKzQzMzQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAgICBjYXNlIE5vdGlmeVdyaXRl
OgogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7Ci0gICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBjbG9iYmVy
V29ybGQoKTsKQEAgLTQ0NjQsNDMgKzQ0NjAsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVh
azsKIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAgIGNvbnN0IEFic3Ry
YWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgdW5zaWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICBBU1NF
UlQoYml0cyk7Ci0gICAgICAgIGlmIChiaXRzID09IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UpIHsKLSAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fdHlwZSA9PSBTcGVjRnVuY3Rp
b25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRT
aG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGFi
c3RyYWN0VmFsdWUudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwg
aGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAgLy8g
YW5kIHdlIGNhbiByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZsYWdzLiBUaGVzZSBmbGFncyBk
b24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGlt
ZS4KLSAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3Mo
KSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91
bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKLSAgICAgICAgICAgIGJv
b2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5mb3JF
YWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAg
ICBvayAmPSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykg
PT0gYml0czsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1f
dHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5KSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTY2LDE3ICs1OTY2LDYgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2hl
Y2tfdGR6KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0
YW5jZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGRl
ZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKS0+ZnVuY3Rpb25Qcm90
b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKTsKLQotICAgICAgICAgICAgTm9kZSogY29uc3Ry
dWN0b3IgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uc3RydWN0b3IpKTsKLSAg
ICAgICAgICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZSkpOwotCi0gICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChPdmVycmlkZXNIYXNJbnN0YW5jZSwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKSks
IGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09E
RShvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2Ug
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcElkZW50aXR5V2l0aFByb2ZpbGU+KCk7CiAgICAgICAg
ICAgICBOb2RlKiBzcmNEc3QgPSBnZXQoYnl0ZWNvZGUubV9zcmNEc3QpOwpAQCAtNjAyNyw3ICs2
MDE2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluc3RhbmNlT2YsIHZhbHVlLCBwcm90b3R5cGUp
KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9m
LCBFZGdlKHZhbHVlLCBDZWxsVXNlKSwgRWRnZShwcm90b3R5cGUpKSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgfQogCkBAIC02MDk4LDcgKzYwODcs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNh
c2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oYnl0ZWNvZGUu
bV90eXBlKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9H
cmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdlIHsgYnl0ZWNvZGUubV9maXJz
dFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZhbHVlKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc5
ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOgogICAgIGNhc2Ugb3Bf
cHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9tb3Y6Ci0gICAgY2FzZSBvcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOgog
ICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKICAgICBjYXNlIG9wX2luc3RhbmNlb2ZfY3VzdG9tOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIElzQ2VsbFdpdGhU
eXBlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPnF1ZXJpZWRUeXBlKCkpKTsK
KyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0d2lz
ZV9jYXN0PHVpbnQxNl90Pihub2RlLT5xdWVyaWVkVHlwZSgpKSkpKTsKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKQEAgLTExNzYsMTEgKzExNzYsNiBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBDaGVja0RldGFjaGVk
OgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICByZXR1cm47IAotICAgICAgICAK
LSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAgcmVhZChKU0NlbGxfdHlwZUlu
Zm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oQ2hlY2tUeXBlSW5mb0ZsYWdzTG9j
LCBKU0NlbGxfdHlwZUluZm9GbGFncywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
Ci0gICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgUGFyc2VJbnQ6CiAgICAgICAgIC8vIE5vdGU6
IFdlIHdvdWxkIGhhdmUgZWxpbWluYXRlZCBhIFBhcnNlSW50IHRoYXQgaGFzIGp1c3QgYSBzaW5n
bGUgY2hpbGQgYXMgYW4gSW50MzJVc2UgaW5zaWRlIGZpeHVwLgpAQCAtMTE5MiwxMSArMTE4Nyw2
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgY2xv
YmJlclRvcCgpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgotICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKLSAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihPdmVycmlkZXNIYXNJbnN0YW5jZUxvYywgSlNDZWxsX3R5cGVJbmZvRmxhZ3Ms
IG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwotICAgICAgICByZXR1cm47Ci0KICAg
ICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOwog
ICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI2LDQ2ICsxMDI2LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYml0cyA9IG5vZGUt
PnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiaXRzKTsKLSAgICAg
ICAgICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fdHlwZSA9PSBTcGVjRnVuY3Rp
b25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGlt
aW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dy
YXBoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgdmFs
dWUgPSBhYnN0cmFjdFZhbHVlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdvcmtzIGJl
Y2F1c2UgaWYgd2Ugc2VlIGEgY2VsbCBoZXJlLCB3ZSBrbm93IGl0J3MgZnVsbHkgY29uc3RydWN0
ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBjYW4gcmVhZCBpdHMgaW5saW5l
IHR5cGUgaW5mbyBmbGFncy4gVGhlc2UgZmxhZ3MgZG9uJ3QgY2hhbmdlIG92ZXIgdGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGltZS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgodmFsdWUuYXNDZWxsKCktPmlubGluZVR5cGVGbGFncygpICYgYml0cykg
PT0gYml0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFic3Ry
YWN0VmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvayAmPSAoc3RydWN0dXJlLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykgPT0gYml0czsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvaykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyNzk4
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MCw3ICsxNDAsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb21wYXJlQmVsb3dFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoK
ICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAg
IGNhc2UgVHlwZU9mSXNPYmplY3Q6CkBAIC0xODgsNyArMTg3LDYgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9pbnRlcjoK
ICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgotICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRp
RGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBWYWx1ZVJlcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk5MCw3ICsxOTkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENy
ZWF0ZVByb21pc2U6CkBAIC0yMDc0LDI1ICsyMDczLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRjaFN0cnVjdHVyZSB0aGF0IGRv
ZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjogewotICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkKLSAgICAgICAgICAgICAgICAmJiBub2Rl
LT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAgICAgJiYgaXM2
NEJpdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwo
KSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgotICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIEluQnlJZDogewpAQCAtMjgyOCw3ICsyODE5LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5
V3JpdGU6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJ
bmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgogICAgICAgICBj
YXNlIERpcmVjdFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBM
b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSArMTA5LDcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvYwogICAgIGNhc2UgQnV0dGVyZmx5TG9jOgog
ICAgICAgICBvdXQucHJpbnQoIkJ1dHRlcmZseUxvYyIpOwogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzTG9jOgotICAgICAgICBvdXQucHJpbnQo
IkNoZWNrVHlwZUluZm9GbGFnc0xvYyIpOwotICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIE92
ZXJyaWRlc0hhc0luc3RhbmNlTG9jOgotICAgICAgICBvdXQucHJpbnQoIk92ZXJyaWRlc0hhc0lu
c3RhbmNlTG9jIik7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCiAgICAgY2FzZSBDbG9zdXJl
VmFyaWFibGVMb2M6CiAgICAgICAgIG91dC5wcmludCgiQ2xvc3VyZVZhcmlhYmxlTG9jIik7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFw
TG9jYXRpb24uaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNiBAQCBlbnVt
IExvY2F0aW9uS2luZCB7CiAgICAgQXJyYXlNYXNrTG9jLAogICAgIFZlY3Rvckxlbmd0aExvYywK
ICAgICBCdXR0ZXJmbHlMb2MsCi0gICAgQ2hlY2tUeXBlSW5mb0ZsYWdzTG9jLAotICAgIE92ZXJy
aWRlc0hhc0luc3RhbmNlTG9jLAogICAgIENsb3N1cmVWYXJpYWJsZUxvYywKICAgICBEaXJlY3RB
cmd1bWVudHNMb2MsCiAgICAgR2V0dGVyTG9jLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDEwICsxNDM2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG9wKCkgPT0gSXNDZWxsV2l0aFR5cGU7CiAgICAgfQogCi0gICAgSlNU
eXBlIHF1ZXJpZWRUeXBlKCkKKyAgICBKU1R5cGVSYW5nZSBxdWVyaWVkVHlwZSgpCiAgICAgewot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx1aW50OF90LCBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxKU1R5cGU+Ojp0eXBlPjo6dmFsdWUsICJFbnN1cmUgdGhhdCB1aW50OF90IGlzIHRo
ZSB1bmRlcmx5aW5nIHR5cGUgZm9yIEpTVHlwZS4iKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTVHlwZT4obV9vcEluZm8uYXM8dWludDMyX3Q+KCkpOworICAgICAgICBBU1NFUlQob3Ao
KSA9PSBJc0NlbGxXaXRoVHlwZSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hc0pTVHlwZVJh
bmdlKCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNTcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKQEAg
LTE0NDksNyArMTQ0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRl
ZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHNwZWN1
bGF0aW9uRnJvbUpTVHlwZVJhbmdlKHF1ZXJpZWRUeXBlKCkpOwogICAgIH0KICAgICAKICAgICBi
b29sIGhhc1Jlc3VsdCgpCkBAIC0xODc3LDcgKzE4NzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENoZWNrSXNDb25zdGFudDoKICAgICAgICAgICAg
IHJldHVybiBpc0NlbGwoY2hpbGQxKCkudXNlS2luZCgpKTsKLSAgICAgICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgpAQCAt
MTk1MiwxNyArMTk1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFVu
aXF1ZWRTdHJpbmdJbXBsKj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc1R5cGVJbmZvT3BlcmFu
ZCgpCi0gICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja1R5cGVJbmZvRmxhZ3M7Ci0g
ICAgfQotCi0gICAgdW5zaWduZWQgdHlwZUluZm9PcGVyYW5kKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChoYXNUeXBlSW5mb09wZXJhbmQoKSAmJiBtX29wSW5mby5hczx1aW50MzJfdD4oKSA8PSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oVUNIQVJfTUFYKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5m
by5hczx1aW50MzJfdD4oKTsKLSAgICB9Ci0KICAgICBib29sIGhhc1RyYW5zaXRpb24oKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC0zMzEzLDYgKzMzMDEsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxOZXdBcnJheUJ1
ZmZlckRhdGE+KHUuaW50NjQpOwogICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgSlNU
eXBlUmFuZ2UgYXNKU1R5cGVSYW5nZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8SlNUeXBlUmFuZ2U+KHN0YXRpY19jYXN0PHVpbnQxNl90Pih1Lmlu
dDY0KSk7CisgICAgICAgIH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICB1aW50MzJf
dCBpbnQzMjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhBc3NlcnRJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUYWtlcyBhbiBPcElu
Zm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUgc2V0ICovXAogICAgIG1hY3Jv
KENoZWNrSlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUaGlzIGlzIHRoZSBzYW1lIGFzIGpz
Q2FzdCBidXQgYXMgYSBzcGVjdWxhdGlvbiByYXRoZXIgdGhhbiBhc3NlcnRpb24gKi9cCiAgICAg
bWFjcm8oQ2hlY2tOb3RKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQYXJz
ZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXApAQCAtMzk1LDcgKzM5NCw2
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQaGFudG9tTmV3
UmVnZXhwLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8q
IE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAotICAgIG1hY3JvKE92ZXJyaWRlc0hhc0lu
c3RhbmNlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNy
byhJbnN0YW5jZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAg
ICBtYWNybyhJbnN0YW5jZU9mQ3VzdG9tLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhNYXRjaFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVSZXN1bHRCb29sZWFuKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IE9wSW5mbyB7CiAg
ICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQogICAg
IGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZh
bHVlKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhK
U1R5cGVSYW5nZSByYW5nZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNl
X2Nhc3Q8dWludDE2X3Q+KHJhbmdlKSkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGUKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoY29uc3Ry
dWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNv
bnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgeworICAgIGlmIChUeXBlSW5m
bzo6aXNKU0Z1bmN0aW9uVHlwZShjb25zdHJ1Y3Rvci0+dHlwZSgpKSAmJiBqc0Nhc3Q8SlNGdW5j
dGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgewogICAgICAg
ICBEZWZlclRlcm1pbmF0aW9uIGRlZmVyU2NvcGUodm0pOwogICAgICAgICBhdXRvIHJhcmVEYXRh
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmVuc3VyZVJhcmVEYXRhQW5kQWxs
b2NhdGlvblByb2ZpbGUoZ2xvYmFsT2JqZWN0LCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDcgKzEw
MzcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICAgICAg
Y2FzZSBDb21wYXJlRXFQdHI6CiAgICAgICAgIGNhc2UgU2FtZVZhbHVlOgotICAgICAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgICAg
IGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICAgICAgY2FzZSBJc0VtcHR5OgpAQCAtMTMxNCw3
ICsxMzEzLDYgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAg
ICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6
CiAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVy
ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU0LDkgKzI1NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoK
ICAgICBjYXNlIFNhbWVWYWx1ZToKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICBj
YXNlIFBhcnNlSW50OgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJ
c0VtcHR5OgogICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBUeXBlT2ZJc09i
amVjdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY0MywxNiArMzY0Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6
IHsKLSAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhub2RlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICBj
b21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQogICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAgICAgICBjb21waWxlSW5zdGFuY2VPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0MzEsMjEgKzQ0MzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczogewotICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKG5vZGUpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAgICAgICAgIGNvbXBpbGVQ
YXJzZUludChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZTogewotICAgICAgICBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uobm9k
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAg
ICAgICBjb21waWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwODEsMjAgKzQwODEsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkK
LXsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LQotICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIC8vIEZJWE1FOiBUaGlz
IG9ubHkgd29ya3MgZm9yIGNoZWNraW5nIGlmIGEgc2luZ2xlIGJpdCBpcyBzZXQuIElmIHdlIHdh
bnQgdG8gY2hlY2sgbW9yZQotICAgIC8vIHRoYW4gb25lIGJpdCBhdCBvbmNlLCB3ZSdsbCBuZWVk
IHRvIGZpeCB0aGlzOgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU3MDUKLSAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGVJbmZvRmxhZ3MsIEpTVmFs
dWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobm9kZS0+dHlwZUluZm9PcGVy
YW5kKCkpKSk7Ci0KLSAgICBub1Jlc3VsdChub2RlKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFN0cmluZ1VzZSk7CkBAIC00MTUyLDEzNiArNDEzOCw2OCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hh
c0luc3RhbmNlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFu
Y2VPZihOb2RlKiBub2RlKQogewotICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWVOb2RlID0gbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpOwotICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZUZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
KTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBDZWxsVXNlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RGVmYXVsdDsKLSAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1Zh
bHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKIAotICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICB9CisKKyAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsK
KworICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3M7CisgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKIAotICAgIC8vIEl0IHdvdWxkIGJlIGdyZWF0IGlmIGNvbnN0YW50IGZv
bGRpbmcgaGFuZGxlZCBhdXRvbWF0aWNhbGx5IHRoZSBjYXNlIHdoZXJlIHdlIGtuZXcgdGhlIGhh
c0luc3RhbmNlIGZ1bmN0aW9uCi0gICAgLy8gd2FzIGEgY29uc3RhbnQuIFVuZm9ydHVuYXRlbHks
IHRoZSBmb2xkaW5nIHJ1bGUgZm9yIE92ZXJyaWRlc0hhc0luc3RhbmNlIGlzIGluIHRoZSBzdHJl
bmd0aCByZWR1Y3Rpb24gcGhhc2UKLSAgICAvLyBzaW5jZSBpdCByZWxpZXMgb24gT1NSIGluZm9y
bWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCi0g
ICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0
SGFzSW5zdGFuY2VGdW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MgPSBoYXNJbnN0YW5jZVZh
bHVlLmpzVmFsdWVSZWdzKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbm90RGVmYXVs
dC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5z
dGFuY2VWYWx1ZVJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkp
KTsKLSNlbHNlCi0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVn
cy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKKyAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgcHJvdG90eXBlUmVncyA9IEpTVmFsdWVSZWdzKHByb3RvdHlwZS5ncHIoKSk7CisgICAgfSBl
bHNlIHsKICNlbmRpZgotICAgIH0KLQotICAgIC8vIENoZWNrIHRoYXQgYmFzZSAnSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZScuCi0gICAgbV9qaXQudGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSwgcmVzdWx0R1BSKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOworICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKIAotICAgIGlmICghbm90
RGVmYXVsdC5lbXB0eSgpKSB7Ci0gICAgICAgIG5vdERlZmF1bHQubGluaygmbV9qaXQpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgcHJv
dG90eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygpOworICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVSZWdzKSk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICB9CisjZW5kaWYKIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQ
UiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCi17CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgdmFsdWVHUFIsIHByb3RvdHlwZVJlZ3MucGF5bG9h
ZEdQUigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCiAgICAgICAgIG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNPYmplY3QgfCB+U3BlY0Nl
bGwpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAot
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1
YkluZm9HUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFs
dWVHUFIsIHByb3RvdHlwZVJlZ3MpOwogICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5j
ZU9mKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKLX0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YoTm9kZSogbm9kZSkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7Ci0gICAgICAgIAotICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Ci0g
ICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKLSAgICAgICAgfQotICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHByb3Rv
dHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwot
ICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIAotICAgICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0gICAgCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgCi0g
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwotICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBwcm90
b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIAotICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgCi0gICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
LSAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Ci0gICAgfQotICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygpOwotICAgIAotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJy
YW5jaElmQ2VsbCh2YWx1ZVJlZ3MpOwotICAgIG1vdmVGYWxzZVRvKHJlc3VsdEdQUik7Ci0gICAg
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBp
c0NlbGwubGluaygmbV9qaXQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNl
ID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwotICAgIAotICAgIGNvbXBp
bGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7
Ci0gICAgCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICByZXR1cm47CiB9CkBAIC01MTE2LDE4ICs1MDM0LDE4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3UKICAgICAvLyBTeW1ib2wu
aGFzSW5zdGFuY2UgYmVjb21lcyBwb3B1bGFyIHdpbGwgbGlrZWx5IHJlbWFpbiB0aGF0IHdheS4K
IAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgSlNWYWx1ZU9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
IEpTVmFsdWVPcGVyYW5kIGhhc0luc3RhbmNlVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwog
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyBjb25zdHJ1Y3RvckdQUiA9IGNv
bnN0cnVjdG9yLmdwcigpOworICAgIEpTVmFsdWVSZWdzIGNvbnN0cnVjdG9yUmVncyA9IGNvbnN0
cnVjdG9yLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VSZWdzID0g
aGFzSW5zdGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0
Lmp1bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQUiwgaGFzSW5zdGFuY2VS
ZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yUmVncywgaGFzSW5zdGFuY2VSZWdz
KSk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBA
IC01MTQ0LDEwICs1MDYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdp
dGhUeQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5j
aElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwogCi0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBp
bGVyOjpFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAg
VHJ1c3RlZEltbTMyKG5vZGUtPnF1ZXJpZWRUeXBlKCkpLAotICAgICAgICAgICAgcmVzdWx0R1BS
KTsKKyAgICAgICAgbV9qaXQuaXNDZWxsV2l0aFR5cGUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
bm9kZS0+cXVlcmllZFR5cGUoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYmxlc3NCb29sZWFuKHJl
c3VsdEdQUik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CiAKQEAgLTUxNjYsMTAgKzUwODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXND
ZWxsV2l0aFR5CiAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBtX2ppdC5jb21wYXJl
OChKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhj
ZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUik7Cisg
ICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKGNlbGxHUFIsIG5vZGUtPnF1ZXJpZWRUeXBlKCks
IHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1bHRHUFIpOwogICAgICAgICBi
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBA
IC0xMTMyNyw3ICsxMTIzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dChFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24oRWRnZSBlZGdl
LCBHUFJSZWcgY2VsbCkKIHsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVj
RnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY0Z1bmN0aW9uLCBtX2ppdC5icmFuY2hJ
Zk5vdEZ1bmN0aW9uKGNlbGwpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
RnVuY3Rpb24oRWRnZSBlZGdlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsMTAg
Kzc1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJp
Y3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBnZW5lcmljSlNWYWx1
ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNv
bXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1Zh
bHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0
YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUqKTsK
LSAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CiAKICAgICB2b2lk
IGNvbXBpbGVJc0NlbGxXaXRoVHlwZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSXNUeXBlZEFy
cmF5VmlldyhOb2RlKik7CkBAIC0xMzYzLDcgKzEzNjEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAKLSAgICB2b2lkIGNvbXBpbGVDaGVja1R5
cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOwog
CiAgICAgdm9pZCBjb21waWxlUGFyc2VJbnQoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMjYgKzMxMSw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1F
OiB3ZSBzaG91bGQgcHJvYmFibHkgZG8gdGhpcyBpbiBjb25zdGFudCBmb2xkaW5nIGJ1dCB0aGlz
IGN1cnJlbnRseSByZWxpZXMgb24gT1NSIGV4aXQgaGlzdG9yeToKLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzMgotICAgICAgICBjYXNlIE92
ZXJyaWRlc0hhc0luc3RhbmNlOiB7Ci0gICAgICAgICAgICBpZiAoIW1fbm9kZS0+Y2hpbGQyKCku
bm9kZSgpLT5pc0NlbGxDb25zdGFudCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS5ub2RlKCktPmFzQ2VsbCgpICE9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29u
dmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fZ3JhcGguaGFz
RXhpdFNpdGUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZFR5cGVJbmZvRmxhZ3MpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lIHRoYXQgd2Ugd2lsbCBu
b3Qgc2VlIGEgZnVuY3Rpb24gdGhhdCBoYXMgYSBjdXN0b20gaW5zdGFuY2VvZiBvcGVyYXRpb24g
YXMgdGhleSBzaG91bGQgYmUgcmFyZS4KLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hlY2tUeXBlSW5mb0ZsYWdzLCBtX25v
ZGUtPm9yaWdpbiwgT3BJbmZvKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCBFZGdlKG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBDZWxsVXNlKSk7Ci0gICAgICAgICAgICAgICAgbV9ncmFw
aC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICAg
ICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gRklYTUU6IFdlIGhhdmUgYSBsb3Qgb2Ygc3Ry
aW5nIGNvbnN0YW50LWZvbGRpbmcgcnVsZXMgaGVyZS4gSXQgd291bGQgYmUgZ3JlYXQgdG8KICAg
ICAgICAgLy8gbW92ZSB0aGVzZSB0byB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIgb25jZSBBYnN0
cmFjdFZhbHVlIGNhbiBzdXBwb3J0IExhenlKU1ZhbHVlLgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjA0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NSw4ICsyNzUsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgY2FzZSBJc0NhbGxhYmxlOgogICAgIGNhc2UgSXNDb25zdHJ1Y3RvcjoK
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6
Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAg
ICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgogICAgIGNhc2UgRG91YmxlUmVwOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24g
Mjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDEyICsxNDk3LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlVHlwZU9mKCk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgICAgICAgICBjb21w
aWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAgICAgICAgIGNvbXBpbGVPdmVycmlkZXNIYXNJ
bnN0YW5jZSgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoK
ICAgICAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEyNzEzLDY1ICsxMjcwNywyMyBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoKQotICAg
IHsKLSAgICAgICAgRnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9u
b2RlLT5jZWxsT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVu
Y3Rpb24tPmNlbGwoKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0oKSkpOwotCi0gICAgICAgIExW
YWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExW
YWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICAg
ICAgTEJhc2ljQmxvY2sgZGVmYXVsdEhhc0luc3RhbmNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAg
ICAgICAvLyBVbmxpa2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgY2xlYW5pbmcg
dGhpcyBjb2RlIHVwIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHByb3ZlbiB0aGUgaGFzSW5z
dGFuY2VWYWx1ZSBpcyBhIGNvbnN0YW50IGFzIEIzIHNob3VsZCBmaXggaXQgZm9yIHVzLgotCi0g
ICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0
LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5u
b3RFcXVhbChoYXNJbnN0YW5jZSwgZnJvemVuUG9pbnRlcihkZWZhdWx0SGFzSW5zdGFuY2VGdW5j
dGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGRlZmF1bHRIYXNJbnN0YW5jZSkp
OwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZGVmYXVs
dEhhc0luc3RhbmNlLCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBpbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LnRlc3RJ
c1plcm8zMigKLSAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNvbnN0cnVjdG9yLCBt
X2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
MzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKLSAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgaW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCkKLSAgICB7Ci0gICAg
ICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwg
bnVsbHB0ciwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgICAg
ICBtX291dC5sb2FkOFplcm9FeHQzMihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBz
LkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMy
KG1fbm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7Ci0gICAgfQotICAgIAogICAgIHZvaWQgY29t
cGlsZUluc3RhbmNlT2YoKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAg
ICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisKKyAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpOwog
ICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVlOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcHJvdG90eXBlOwotICAg
ICAgICBib29sIHZhbHVlSXNDZWxsOwogICAgICAgICBib29sIHByb3RvdHlwZUlzQ2VsbDsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UKLSAgICAgICAg
ICAgICYmIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAg
ICAgIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAgICAgICAgICAgIHByb3RvdHlw
ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHZhbHVlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAgICAgIHByb3RvdHlwZUlzQ2VsbCA9IHRydWU7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlSXND
ZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOwog
ICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxk
MigpKS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTI4MDEsMTQg
KzEyNzUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIg
PSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwotICAgICAgICAgICAgICAgIGlmICghdmFsdWVJ
c0NlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzQ2VsbCA9
IGppdC5icmFuY2hJZkNlbGwodmFsdWVHUFIpOwotICAgICAgICAgICAgICAgICAgICBqaXQuYm94
Qm9vbGVhblBheWxvYWQoZmFsc2UsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICAgICAgICAgIGRv
bmVKdW1wID0gaml0Lmp1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgaXNDZWxsLmxpbmsoJmpp
dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICAgICAgICAgIGlmICgh
cHJvdG90eXBlSXNDZWxsKQogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGpp
dC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlR1BSKSk7CkBAIC0xMjgzMywxNCArMTI3NzcsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9HU3NpSkogb3B0aW1pemF0aW9uRnVuY3Rpb24g
PSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0Lmxh
YmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1Bh
dGhDYWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50
aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKQEAgLTEyODUwLDcgKzEy
NzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1
bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRp
Y05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOwpAQCAtMTI4
NjQsOSArMTI4MDYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoZG9uZUp1bXAuaXNTZXQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZG9uZUp1bXAubGluaygmaml0KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAKICAgICAgICAgLy8gVGhpcyByZXR1cm5zIGEgYm94ZWQgYm9vbGVhbi4KQEAgLTEyODc3LDcg
KzEyODE2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7
CiAKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVy
YXRpb25JbnN0YW5jZU9mQ3VzdG9tLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSwg
Y29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpOwpAQCAtMTg5ODcsMTUgKzE4OTI2LDExIEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIGlzRnVuY3Rpb24oTFZhbHVlIGNlbGwsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJv
dmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNGdW5jdGlvbikpCi0gICAg
ICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gaXNUeXBlKGNlbGwsIEpTRnVu
Y3Rpb25UeXBlKTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbFdpdGhUeXBlKGNlbGwsIEpTVHlwZVJh
bmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSwgU3BlY0Z1bmN0aW9u
LCB0eXBlKTsKICAgICB9CiAgICAgTFZhbHVlIGlzTm90RnVuY3Rpb24oTFZhbHVlIGNlbGwsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFs
dWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjRnVuY3Rpb24p
KQotICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIGlzTm90VHlwZShj
ZWxsLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIHJldHVybiBtX291dC5sb2dpY2FsTm90KGlz
RnVuY3Rpb24oY2VsbCwgdHlwZSkpOwogICAgIH0KICAgICAgICAgICAgIAogICAgIExWYWx1ZSBp
c0V4b3RpY0ZvclR5cGVvZihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNG
dWxsVG9wKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjEsMTMgKzYyMSwxMyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppdGVyYXRvckVuCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1zdGF0aWMgYm9vbCBjaGVj
a0ZvcmJpZGRlblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBKU1ZhbHVlIHByb3RvKQorc3RhdGljIGJvb2wgY2hlY2tGb3JiaWRkZW5Qcm90b3R5
cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHZhbHVlLCBKU09iamVj
dCogcHJvdG8pCiB7CiAgICAgaWYgKHZhbHVlID09IHByb3RvKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiBwcm90byBoYXNu
J3QgYmVlbiBtb2RpZmllZCB0byBpbmNsdWRlIHZhbHVlLgotICAgIHJldHVybiBKU09iamVjdDo6
ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgcHJvdG8sIHZhbHVlKTsKKyAgICByZXR1
cm4gcHJvdG8tPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiB9CiAKIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNjk0LDcgKzY5NCw3IEBAIEpT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGEKICAgICAgICAgICAgIGlmICh2
YWx1ZS5pbmhlcml0czxQcm94eU9iamVjdD4odm0pKQogICAgICAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoSlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90b3R5cGUpKQorICAgICAg
ICAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgb2JqZWN0LT5pc1Byb3RvdHlwZU9mKGdsb2Jh
bE9iamVjdCwgYXNPYmplY3QodmFsdWUpKSkKICAgICAgICAgICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBhcnJheS0+bGVuZ3RoKCksIHZhbHVlKTsKIAogICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI3OTg0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkzMiw4ICs5MzIsMjIgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1i
b2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1i
b2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVt
cCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmRnVu
Y3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1
bmN0aW9uVHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0K
KyAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmVHlwZShjZWxsR1BSLCBKU1R5cGVSYW5nZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0JvdW5kRnVu
Y3Rpb25UeXBlIH0pOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2UgeyBKU0Z1
bmN0aW9uVHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9KTsgfQorCisgICAgdm9pZCBpc0NlbGxX
aXRoVHlwZShHUFJSZWcgY2VsbEdQUiwgSlNUeXBlUmFuZ2UgcmFuZ2UsIEdQUlJlZyBkc3QpCisg
ICAgeworICAgICAgICBpZiAocmFuZ2UubGFzdCA9PSByYW5nZS5maXJzdCkgeworICAgICAgICAg
ICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihyYW5nZS5maXJzdCksIGRzdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQocmFuZ2UubGFzdCA+IHJhbmdlLmZp
cnN0KTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICAg
ICAgbG9hZDgoQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
c2NyYXRjaCk7CisgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMihyYW5nZS5maXJzdCksIHNjcmF0
Y2gpOworICAgICAgICBjb21wYXJlMzIoQmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1t
MzIocmFuZ2UubGFzdCAtIHJhbmdlLmZpcnN0KSwgZHN0KTsKKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBpc0VtcHR5KEdQUlJlZyBncHIsIEdQUlJlZyBkc3QpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDYgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bfc2V0X3By
aXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3RvdHlwZV9vZikKLSAgICAgICAgREVGSU5FX09Q
KG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5j
ZW9mKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERF
RklORV9PUChvcF9pc19lbXB0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNp
b24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTc0LDcgKzU3NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0cnVjdGlvbiopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2
aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMzQgKzExNyw2IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEkKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJu
VmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25zdHJ1Y3RvcjsKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZTsK
LQotICAgIGVtaXRMb2FkUGF5bG9hZChoYXNJbnN0YW5jZVZhbHVlLCByZWdUMCk7Ci0gICAgLy8g
V2UgZG9uJ3QganVtcCBpZiB3ZSBrbm93IHdoYXQgU3ltYm9sLmhhc0luc3RhbmNlIHdvdWxkIGRv
LgotICAgIEp1bXAgaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxs
KGhhc0luc3RhbmNlVmFsdWUpOwotICAgIEp1bXAgY3VzdG9taGFzSW5zdGFuY2VWYWx1ZSA9IGJy
YW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSk7Ci0K
LSAgICAvLyBXZSBrbm93IHRoYXQgY29uc3RydWN0b3IgaXMgYW4gb2JqZWN0IGZyb20gdGhlIHdh
eSBieXRlY29kZSBpcyBlbWl0dGVkIGZvciBpbnN0YW5jZW9mIGV4cHJlc3Npb25zLgotICAgIGVt
aXRMb2FkUGF5bG9hZChjb25zdHJ1Y3RvciwgcmVnVDApOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBj
b25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScgaS5lLiB0aGUgb2JqZWN0
IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQgZnVuY3Rpb24uCi0gICAgdGVzdDgoWmVy
bywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIHJlZ1QwKTsKLSAgICBKdW1wIGRv
bmUgPSBqdW1wKCk7Ci0KLSAgICBoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwot
ICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwotCi0gICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRTdG9yZUJv
b2woZHN0LCByZWdUMCk7Ci0KLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZj4oKTsKQEAgLTE1Nyw4ICsxMjks
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RyCiAgICAgZW1pdExv
YWRQYXlsb2FkKHZhbHVlLCByZWdUMik7CiAgICAgZW1pdExvYWRQYXlsb2FkKHByb3RvLCByZWdU
MSk7CiAKLSAgICAvLyBDaGVjayB0aGF0IHByb3RvIGFyZSBjZWxscy4gYmFzZVZhbCBtdXN0IGJl
IGEgY2VsbCAtIHRoaXMgaXMgY2hlY2tlZCBieSB0aGUgZ2V0X2J5X2lkIGZvciBTeW1ib2wuaGFz
SW5zdGFuY2UuCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHZhbHVlKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3IgZ2VuKApAQCAtMjExLDkgKzE4MSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mX2N1c3RvbSgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1
ZSA9IGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUMSwgcmVnVDApOwotICAgIGVtaXRMb2FkUGF5bG9hZChjb25zdHJ1Y3RvciwgcmVnVDIpOwot
ICAgIGVtaXRMb2FkKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1Q0LCByZWdUMyk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHJlZ1QyLCBKU1ZhbHVlUmVncyhyZWdU
NCwgcmVnVDMpKTsKKyAgICBlbWl0TG9hZChjb25zdHJ1Y3RvciwgcmVnVDMsIHJlZ1QyKTsKKyAg
ICBlbWl0TG9hZChoYXNJbnN0YW5jZVZhbHVlLCByZWdUNSwgcmVnVDQpOworICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpKTsKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmV0
dXJuVmFsdWVHUFIpOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMzIgKzEyMSw2IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEkKICAgICBlbWl0U3RvcmVDZWxs
KGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJ
bnN0YW5jZT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25zdHJ1Y3RvcjsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2RlLm1faGFzSW5z
dGFuY2VWYWx1ZTsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoaGFzSW5zdGFuY2VWYWx1
ZSwgcmVnVDApOwotCi0gICAgLy8gV2UgZG9uJ3QganVtcCBpZiB3ZSBrbm93IHdoYXQgU3ltYm9s
Lmhhc0luc3RhbmNlIHdvdWxkIGRvLgotICAgIEp1bXAgY3VzdG9taGFzSW5zdGFuY2VWYWx1ZSA9
IGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSk7
Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNvbnN0cnVjdG9yLCByZWdUMCk7Ci0KLSAg
ICAvLyBDaGVjayB0aGF0IGNvbnN0cnVjdG9yICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
JyBpLmUuIHRoZSBvYmplY3QgaXMgbm90IGEgQy1BUEkgdXNlciBub3IgYSBib3VuZCBmdW5jdGlv
bi4KLSAgICB0ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVn
VDApOwotICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7Ci0gICAg
SnVtcCBkb25lID0ganVtcCgpOwotCi0gICAgY3VzdG9taGFzSW5zdGFuY2VWYWx1ZS5saW5rKHRo
aXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlZ1QwKTsK
LQotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CkBAIC0xNTksOCArMTMzLDYgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCByZWdUMSk7
CiAgICAgCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuIGJhc2VWYWwgbXVzdCBi
ZSBhIGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9ieV9pZCBmb3IgU3ltYm9sLmhh
c0luc3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMiwgdmFsdWUp
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAg
SklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCkBAIC0zMjYsMTIgKzI5OCwxMSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0g
Ynl0ZWNvZGUubV9vcGVyYW5kOwotICAgIGludCB0eXBlID0gYnl0ZWNvZGUubV90eXBlOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAotICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5
cGUpLCByZWdUMCk7CisgICAgaXNDZWxsV2l0aFR5cGUocmVnVDAsIEpTVHlwZVJhbmdlIHsgYnl0
ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSwgcmVnVDApOwogICAgIGJv
eEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgSnVtcCBkb25lID0g
anVtcCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMjQsMTggKzIzMjQsMTcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEdldAogfQogI2VuZGlmCiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3QsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNl
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBz
aXplX3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRDb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEhhc0luc3RhbmNlKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRDb25z
dHJ1Y3Rvcik7CiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRIYXNJbnN0YW5jZSk7CiAKLSAgICBpZiAoY29uc3RydWN0b3ItPmhhc0luc3RhbmNl
KGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKQotICAgICAgICByZXR1cm4g
MTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNJbnN0YW5jZW9mT3BlcmF0b3IoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpOwogfQogCiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQpAQCAtMjg2NywzNCArMjg2Niwz
MiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpCiAgICAgcmV0dXJu
IEpTV2l0aFNjb3BlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBvYmpl
Y3QpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdl
bmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIHZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm90
byk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAg
Ym9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dmFsdWUsIHByb3RvKTsKKyAgICBib29sIHJlc3VsdCA9IGpzSXNQcm90b3R5cGVPZihnbG9iYWxP
YmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRQcm90byk7CiAgICAgCi0gICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvKTsKKyAgICBib29sIHJlc3VsdCA9IGpz
SXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOwotICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJs
b2NrLCB2YWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pKSkKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgdmFsdWUtPnN0cnVjdHVyZSh2bSkpKQog
ICAgICAgICByZXBhdGNoSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWUs
IHByb3RvLCAqc3R1YkluZm8sIHJlc3VsdCk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw4ICsyNzEsOSBA
QCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgc2l6ZV90LCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRhcmdldCwgRUNNQU1vZGUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgSlNDZWxsKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNP
YmplY3QqIG9iamVjdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0
YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqIHZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25J
bnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVf
dCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQ29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0
YW5jZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaXplRnJhbWVGb3JG
b3J3YXJkQXJndW1lbnRzLCBpbnQzMl90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZyYW1l
Rm9yVmFyYXJncywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYXJn
dW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zm
c2V0KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldHVwRm9yd2FyZEFy
Z3VtZW50c0ZyYW1lLCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBF
bmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpKTsKQEAgLTMwMyw3ICszMDQs
NiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkV4Y2VwCiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enpXaXRoQ2FsbEZyYW1lLCB2b2lk
LCAoVk0qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmV0cmlldmVB
bmRDbGVhckV4Y2VwdGlvbklmQ2F0Y2hhYmxlLCBKU0NlbGwqLCAoVk0qKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCogY29uc3Ry
dWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpOwogCiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQWRkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxl
KikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAy
Nzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjE5LDIxICsxMjE5LDE4IEBAIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFu
ZChKU0dsb2JhbE9iamUKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5z
dGFuY2VPZigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBl
VmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdhc0ZvdW5kKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IHJlc3VsdDsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZVZhbHVlLmlzQ2Vs
bCgpKTsgLy8gc2hvdWxkQ29uc2lkZXJDYWNoaW5nIHJlamVjdHMgbm9uLWNlbGxzLgotICAgIAog
ICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKICAgICAKICAgICB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICAKLSAgICAgICAg
SlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIFJlZlB0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CkBAIC0xMjc5LDExICsxMjc2LDExIEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmMKIH0KIAogdm9pZCByZXBh
dGNoSW5zdGFuY2VPZigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUgcHJv
dG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNGb3VuZCkK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
aWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1
ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkK
KyAgICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1
ZSwgcHJvdG90eXBlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAg
ICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5z
dGFuY2VPZkdlbmVyaWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCByZXBhdGNoSW5CeShKU0ds
b2JhbE9iamVjdCosIENvZGVCbAogdm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29s
IHdhc0ZvdW5kLCAgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0
ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJy
YW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXBhdGNoSW5z
dGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwordm9pZCBy
ZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTQ2VsbCogdmFs
dWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQp
Owogdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZv
JiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJ
bmZvJiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsK
IHZvaWQgbGlua1Nsb3dGb3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwOSwyMyArNjA5LDE3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pbnN0YW5jZW8KICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5z
dGFuY2VvZj4oKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9wcm90b3R5cGUpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNP
YmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90bykpKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3Qs
IHByb3RvLCBhc09iamVjdCh2YWx1ZSkpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSkKIHsKICAgICBMTElOVF9CRUdJTigpOwotCiAgICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2ZDdXN0b20+KCk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBK
U1ZhbHVlIGNvbnN0cnVjdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fY29u
c3RydWN0b3IpOwogICAgIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWUpOwotCi0gICAgQVNTRVJUKGNvbnN0
cnVjdG9yLmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVChoYXNJbnN0YW5jZVZhbHVlICE9IGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSB8fCAhY29u
c3RydWN0b3IuZ2V0T2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGNvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVl
LCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0luc3RhbmNlb2ZPcGVyYXRvcihnbG9iYWxPYmplY3QsIHZh
bHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkpKTsKIH0KIAogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODYsMzUgKzEyODYsNiBA
QCBsbGludE9wV2l0aFByb2ZpbGUob3BfYml0bm90LCBPcEJpdG5vdCwgCiAgICAgZGlzcGF0Y2go
KQogZW5kKQogCi1sbGludE9wKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX2RzdCwg
dDMpCi0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotCi0gICAg
IyBGaXJzdCBjaGVjayBpZiBoYXNJbnN0YW5jZVZhbHVlIGlzIHRoZSBvbmUgb24gRnVuY3Rpb24u
cHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0KLSAgICBnZXQobV9oYXNJbnN0YW5jZVZhbHVl
LCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRh
ZywgdDIsIC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsKQotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxLCB0MikKLSAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwKLQotICAgICMgV2UgZG9uJ3QgbmVl
ZCBoYXNJbnN0YW5jZVZhbHVlJ3MgdGFnIHJlZ2lzdGVyIGFueW1vcmUuCi0gICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQxCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0s
IHQxCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb25bdDFdLCB0MQotICAgIGJpbmVxIHQxLCB0MiwgLm9wT3ZlcnJpZGVzaGFz
SW5zdGFuY2VWYWx1ZU5vdERlZmF1bHQKLQotICAgICMgV2Uga25vdyB0aGUgY29uc3RydWN0b3Ig
aXMgYSBjZWxsLgotICAgIGdldChtX2NvbnN0cnVjdG9yLCB0MCkKLSAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChzaXplLCB0MCwgdDEpCi0gICAgdGJ6IEpTQ2VsbDo6
bV9mbGFnc1t0MV0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIHQwCi0gICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goKQotCi0ub3BPdmVy
cmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbDoKLS5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFs
dWVOb3REZWZhdWx0OgotICAgIHN0b3JlaSAxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0g
ICAgZGlzcGF0Y2goKQotZW5kKQotCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2VtcHR5LCBP
cElzRW1wdHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDEpCkBAIC0xMzY5LDkgKzEzNDAsMTEgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfY2VsbF93aXRoX3R5cGUsIAogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwLCB0MykKICAgICBiaW5lcSB0MCwgQ2VsbFRhZywg
Lm5vdENlbGxDYXNlCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQw
KQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgdDEKLSAgICByZXR1cm4oQm9vbGVh
blRhZywgdDEpCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwg
dDApCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2xhc3RUeXBlLCB0MikKKyAg
ICBiYmIgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgLm5vdENlbGxDYXNlCisgICAgYmJndCBKU0Nl
bGw6Om1fdHlwZVt0M10sIHQyLCAubm90Q2VsbENhc2UKKyAgICByZXR1cm4oQm9vbGVhblRhZywg
MSkKIC5ub3RDZWxsQ2FzZToKICAgICByZXR1cm4oQm9vbGVhblRhZywgMCkKIGVuZCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTM0NiwyOSAr
MTM0Niw2IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKIGVuZCkK
IAogCi1sbGludE9wKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIE9wT3ZlcnJpZGVzSGFzSW5z
dGFuY2UsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX2RzdCwgdDMpCi0K
LSAgICBnZXQobV9oYXNJbnN0YW5jZVZhbHVlLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9i
amVjdDo6bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0Ml0sIHQyCi0g
ICAgYnFuZXEgdDAsIHQyLCAub3BPdmVycmlkZXNIYXNJbnN0YW5jZU5vdERlZmF1bHRTeW1ib2wK
LQotICAgIGdldChtX2NvbnN0cnVjdG9yLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKLSAgICB0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICBzdG9yZXEg
dDEsIFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQotLm9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2VOb3REZWZhdWx0U3ltYm9sOgotICAgIHN0b3JlcSBWYWx1ZVRydWUsIFtjZnIsIHQzLCA4XQot
ICAgIGRpc3BhdGNoKCkKLWVuZCkKLQotCiBsbGludE9wV2l0aFJldHVybihvcF9pc19lbXB0eSwg
T3BJc0VtcHR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldCht
X29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQpA
QCAtMTQzOSwxMyArMTQxNiwxNCBAQCBlbHNlCiBlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUs
IHQwKQorICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV9maXJzdFR5cGUsIHQwKQor
ICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCiAgICAgZ2V0
KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDMp
CiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKLSAgICBjYmVxIEpTQ2Vs
bDo6bV90eXBlW3QzXSwgdDAsIHQxCi0gICAgb3JxIFZhbHVlRmFsc2UsIHQxCi0gICAgcmV0dXJu
KHQxKQorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0M10sIHQwLCAubm90Q2VsbENhc2UKKyAgICBi
Ymd0IEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIsIC5ub3RDZWxsQ2FzZQorICAgIHJldHVybihWYWx1
ZVRydWUpCiAubm90Q2VsbENhc2U6CiAgICAgcmV0dXJuKFZhbHVlRmFsc2UpCiBlbmQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNiBA
QCBjb25zdCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAKICMgVHlwZSBmbGFn
cyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29uc3RleHByIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PSBjb25zdGV4cHIgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29uc3QgT3ZlcnJpZGVz
R2V0UHJvdG90eXBlT3V0T2ZMaW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dldFByb3RvdHlwZU91
dE9mTGluZQogCiAjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw5ICs3NSw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0T3duUHJvcGVydHlO
YW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsK
ICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdl
dE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNl
RnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7Ci0gICAgQ3VzdG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlko
Y3VzdG9tSGFzSW5zdGFuY2UpOwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlv
blB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgIERlZmluZU93blByb3BlcnR5
RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5KTsKIApAQCAt
MTU1LDcgKzE1Miw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6
OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAg
ICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCi0gICAgICAg
ICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRl
ZmluZU93blByb3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25z
LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvblBy
b3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OwogCiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5z
dGFuY2VTeW1ib2wpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbEZ1bmN0
aW9uUHJvdG90eXBlKTsKIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0
aWVzLW9mLXRoZS1mdW5jdGlvbi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MCw3ICs2MSw3IEBAIHZv
aWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAqY2FsbEZ1bmN0aW9u
ID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwg
ZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgKmhh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9u
UHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3MsIGZ1bmN0aW9uUHJv
dG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAK
QEAgLTk5LDQgKzEwMCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90
b0Z1CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiB9
CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY0hhc0luc3RhbmNl
U3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
KyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdCh0
aGlzVmFsdWUpLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBK
U05vbkZpbgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IE92ZXJyaWRl
c0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNzk4NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0
YW5jZVdpdGhXb3JrYXJvCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwotICAgICAgICBB
U1NFUlQoIWNhbGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwot
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZl
IGBwcm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAgICBBU1NFUlQocHJv
dG90eXBlKTsKLSAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFz
SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgICAgICBi
b29sIGhhc0luc3RhbmNlID0gY2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKICAgICAgICAgaWYgKGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUpOwpAQCAtMTA2LDEwICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxlZ2Fj
eUludGxDb25zdHJ1CiAgICAgaWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKIAotICAgIEFTU0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVyaXRzPEpT
Qm91bmRGdW5jdGlvbj4odm0pKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0cnVjdG9y
LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBj
b25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0
ZWQuCi0gICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2Jq
ZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5
cGUpOworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3Rh
bmNlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAgICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxOSAr
MTQ0LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DbwogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxP
YmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7
CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24sIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc0lu
c3RhbmNlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0ID0g
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwot
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdl
dEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7Ci19Ci0KIGlu
bGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCiB7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEwLDExICsxOTcsNiBA
QCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAgICAgcmV0dXJuIGZ1
bmN0aW9uOwogfQogCi1ib29sIEpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFy
Z2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOwotfQotCiBKU0Jv
dW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0
YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZU1heUJlTnVsbCwgZG91Ymxl
IGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0RnVuY3Rpb24pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
aAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0FyZ3NG
dW5jdGlvbkNhbGwpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ2Fs
bCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNvbnN0cnVj
dCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5jdGlvbik7Ci1KU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0KIGNsYXNzIEpT
Qm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50
c0hhc0luc3RhbmNlLCAiIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCkBAIC00OSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBib3VuZEFyZ3MsIGRvdWJsZSBsZW5ndGgsIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxs
KTsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24o
KSB7IHJldHVybiBtX3RhcmdldEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNWYWx1ZSBib3VuZFRo
aXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQpAQCAtNzEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQm91bmRGdW5jdGlvblR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0JvdW5kRnVuY3Rpb24sIG1fdGFyZ2V0RnVuY3Rpb24pOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdAogCiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDcgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBUaGUgZmly
c3QgYW5kIGxhc3QgSlNUeXBlIGFyZSBpbmNsdXNpdmUKIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAg
ICAgYm9vbCBjb250YWlucyhKU1R5cGUgdHlwZSkgY29uc3QgeyByZXR1cm4gZmlyc3QgPD0gdHlw
ZSAmJiB0eXBlIDw9IGxhc3Q7IH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QgeyBvdXQucHJpbnQoIkpTVHlwZVJhbmdlIHsgIiwgZmlyc3QsICIsICIsIGxhc3QsICIgfSIp
OyB9CiAKICAgICBKU1R5cGUgZmlyc3Q7CiAgICAgSlNUeXBlIGxhc3Q7CkBAIC03MSw3ICs3Miw3
IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNU
eXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkg
XAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBc
CiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlw
ZTo6RmluYWxPYmplY3RUeXBlKSBcCi0gICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1
bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAorICAgIG1hY3JvKEpTRnVuY3Rp
b24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNCb3VuZEZ1bmN0aW9uVHlwZSkg
XAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5
cGUsIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKE51bGxTZXR0
ZXJGdW5jdGlvbiwgSlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLCBKU1R5cGU6Ok51bGxT
ZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlw
ZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSwxMiArMjE1
LDYgQEAgY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoVk0mIHZtKSBjbwogICAgIHJldHVy
biBjbGFzc0luZm8odm0pLT5jbGFzc05hbWU7CiB9CiAKLWJvb2wgSlNDZWxsOjpjdXN0b21IYXNJ
bnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkKLXsKLSAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBK
U0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw2IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIHNldFByb3RvdHlwZShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCk7CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9t
SGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgQUxXQVlTX0lOTElORSBUcmlTdGF0ZSBKU0NlbGw6Omlz
Q2FsbGFibAogewogICAgIGlmICghaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpGYWxzZTsKLSAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChUeXBl
SW5mbzo6aXNKU0Z1bmN0aW9uVHlwZSh0eXBlKCkpKQogICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OlRydWU7CiAgICAgaWYgKGlubGluZVR5cGVGbGFncygpICYgT3ZlcnJpZGVzR2V0Q2FsbERhdGEp
IHsKICAgICAgICAgaWYgY29uc3RleHByIChjb25jdXJyZW5jeSA9PSBDb25jdXJyZW5jeTo6TWFp
blRocmVhZCkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjppc0Nv
bnN0cnVjdG9yV2l0CiAgICAgICAgIHJldHVybiAobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1
Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpID8gVHJpU3RhdGU6OlRy
dWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgLy8gV2Uga25vdyB0aGF0IGJvdGggZ2V0Q29uc3Ry
dWN0RGF0YSBvZiBib3RoIHR5cGVzIGFyZSBjb25jdXJyZW5jeSBhd2FyZS4gUGx1cywgZGVyaXZl
ZCBjbGFzc2VzIG9mIEpTRnVuY3Rpb24gYW5kIEludGVybmFsRnVuY3Rpb24KICAgICAvLyBuZXZl
ciBvdmVycmlkZSBnZXRDb25zdHJ1Y3REYXRhICh0aGlzIGlzIGVuc3VyZWQgYnkgQVNTRVJUIGlu
IEpTRnVuY3Rpb24gYW5kIEludGVybmFsRnVuY3Rpb24pLgotICAgIGlmICh0eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUgfHwgdHlwZSgpID09IEludGVybmFsRnVuY3Rpb25UeXBlKQorICAgIGlmICh0
eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUgfHwgVHlwZUluZm86OmlzSlNGdW5jdGlvblR5
cGUodHlwZSgpKSkKICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVj
dERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1
ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNiBAQCBKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlCiAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJp
YW50cygpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9i
amVjdCk7CiB9CiAKQEAgLTExMiw3ICsxMTEsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0aGlzKSk7Ci0gICAgQVNTRVJUKHR5
cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJUKFR5cGVJbmZvOjppc0pTRnVuY3Rp
b25UeXBlKHR5cGUoKSkpOwogICAgIC8vIEpTQ2VsbDo6e2dldENhbGxEYXRhLGdldENvbnN0cnVj
dERhdGF9IHJlbGllcyBvbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMuCiAgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3Ry
dWN0RGF0YSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpT
RnVuY3Rpb246OmdldENhbGxEYXRhKTsKQEAgLTEyMiw3ICsxMjEsNyBAQCB2b2lkIEpTRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgQVNTRVJUKHR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJUKFR5cGVJbmZvOjppc0pTRnVuY3Rpb25U
eXBlKHR5cGUoKSkpOwogICAgIC8vIEpTQ2VsbDo6e2dldENhbGxEYXRhLGdldENvbnN0cnVjdERh
dGF9IHJlbGllcyBvbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMuCiAgICAgQVNTRVJUKG1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0
RGF0YSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpTRnVu
Y3Rpb246OmdldENhbGxEYXRhKTsKQEAgLTkwNiwxNiArOTA1LDQgQEAgSlNGdW5jdGlvbjo6UHJv
cGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cgogICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1czo6UmVp
ZmllZDsKIH0KIAotI2lmIEFTU0VSVF9FTkFCTEVECi12b2lkIEpTRnVuY3Rpb246OmFzc2VydFR5
cGVJbmZvRmxhZ0ludmFyaWFudHMoKQotewotICAgIC8vIElmIHlvdSBjaGFuZ2UgdGhpcywgeW91
J2xsIG5lZWQgdG8gdXBkYXRlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mb0luaGVyaXRhbmNlLgot
ICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNzSW5mbyh2bSgpKTsKLSAgICBpZiAoIShp
bmxpbmVUeXBlRmxhZ3MoKSAmIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbmZvID09IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKTsKLSAgICBl
bHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8gIT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZv
KCkpOwotfQotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNp
b24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTIgKzIxMiw2IEBAIHByaXZhdGU6CiAgICAgUHJvcGVy
dHlTdGF0dXMgcmVpZnlMYXp5TmFtZUlmTmVlZGVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U3RhdHVzIHJlaWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVk
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwogCi0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKLSNlbHNlCi0gICAg
dm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCkgeyB9Ci0jZW5kaWYKLQogICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICB1aW50cHRyX3QgbV9leGVj
dXRhYmxlT3JSYXJlRGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNiBAQCBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1
CiAgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlT3JS
YXJlRGF0YShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihleGVjdXRhYmxlKSkKIHsKLSAgICBhc3Nl
cnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CiB9CiAKIGlubGluZSBGdW5jdGlvbkV4ZWN1dGFi
bGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzk4
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4MSw2ICs3ODEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICAgICAgfSk7CiAKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6ZnVuY3Rpb25Qcm90b3R5cGVIYXNJbnN0YW5jZVN5bWJvbCldLnNldCh2bSwgdGhp
cywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CisKICAgICBtX3Rocm93VHlwZUVycm9yR2V0
dGVyU2V0dGVyLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEdldHRl
clNldHRlcj4mIGluaXQpIHsKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBpbml0
Lm93bmVyLT50aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7CkBAIC05MzEsMTMgKzkzMyw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9KTsKICAgICBtX3Byb3h5
T2JqZWN0U3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVy
PFN0cnVjdHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJsZSA9IGZhbHNl
OwotICAgICAgICAgICAgaW5pdC5zZXQoUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSwgaXNDYWxsYWJsZSkpOwotICAgICAgICB9KTsKLSAg
ICBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuaW5pdExhdGVyKAotICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewotICAgICAgICAgICAgYm9vbCBp
c0NhbGxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNOdWxsKCksIGlzQ2FsbGFibGUpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgaW5pdC5vd25lciwganNOdWxsKCkpKTsKICAgICAgICAgfSk7CiAgICAgbV9wcm94eVJldm9r
ZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1
Y3R1cmU+JiBpbml0KSB7CkBAIC0xMzU1LDE1ICsxMzUxLDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1N1YmFycmF5Q3JlYXRlKSk7CiAgICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQm91bmRGdW5jdGlv
bildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7
Ci0gICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbildLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKSk7Ci0g
ICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6Omluc3RhbmNlT2YpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZikpOwotICAgICAgICB9KTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpCdWlsdGluTG9nKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBnbG9i
YWxGdW5jQnVpbHRpbkxvZykpOwogICAgICAgICB9KTsKQEAgLTIxODUsNyArMjE3Miw2IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEoKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNP
YmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw2IEBAIHB1Ymxp
YzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVS
ZWNvcmRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlOwotICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxhYmxlUHJveHlPYmpl
Y3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7CiAgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fc2hhcmVk
QXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAKQEAgLTg0Nyw3ICs4NDYsNiBAQCBwdWJsaWM6CiAgICAg
U3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZVJlY29yZFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVz
cGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsg
fQotICAgIFN0cnVjdHVyZSogY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBT
dHJ1Y3R1cmUqIHByb3h5UmV2b2tlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eVJl
dm9rZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlc3RQYXJhbWV0ZXJT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyk7IH0KICAgICBTdHJ1Y3R1cmUqIG9y
aWdpbmFsUmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG9yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyk7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkhlYXBBbmFseXplci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbi5oIgpAQCAtNjQsNiArNjUsNyBAQCBjb25zdCBBU0NJSUxpdGVyYWwg
VW5jb25maWd1cmFibGVQcm9wZXJ0CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQ
cm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9yIHsgIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07
CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFi
aWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MgfTsKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9z
IH07Citjb25zdCBBU0NJSUxpdGVyYWwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9y
IHsgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90
eXBlIHByb3BlcnR5LiJfcyB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNPYmplY3Q6OnNfaW5mbyA9
IHsgIk9iamVjdCIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNPYmplY3QpIH07CiAKQEAgLTIzNDYsMTIgKzIzNDgsMzQgQEAgc3RkOjpvcHRpb25hbDxT
dHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudAogICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5maW5k
UHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWEyNjIvI3NlYy1pbnN0YW5jZW9mb3BlcmF0b3IKK2Jvb2wgSlNPYmplY3Q6Omhhc0luc3Rh
bmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgeworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEpTVmFsdWUgaGFzSW5z
dGFuY2VWYWx1ZSA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3Rh
bmNlU3ltYm9sKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
c2NvcGUucmVsZWFzZSgpOworCisgICAgaWYgKGhhc0luc3RhbmNlVmFsdWUgPT0gZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworCisgICAgcmV0
dXJuIGhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpOwor
fQorCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCiB7CisgICAgQVNT
RVJUKGhhc0luc3RhbmNlVmFsdWUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWhh
c0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZhbHVlICE9
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkg
eworICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAg
ICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBoYXNJbnN0YW5jZVZhbHVl
KTsKICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsK
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUlu
dmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24o
Z2xvYmFsT2JqZWN0LCB0aGlzKSk7CkBAIC0yMzY2LDY4ICsyMzkwLDU2IEBAIGJvb2wgSlNPYmpl
Y3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b0Jv
b2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICB9CiAKLSAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0
dXJlKHZtKS0+dHlwZUluZm8oKTsKLSAgICBpZiAoaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVm
YXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkpOwotICAgIH0K
LSAgICBpZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgewotICAgICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWV0
aG9kVGFibGUodm0pLT5jdXN0b21IYXNJbnN0YW5jZSh0aGlzLCBnbG9iYWxPYmplY3QsIHZhbHVl
KSk7Ci0gICAgfQorICAgIGlmIChpc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwog
CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZElu
c3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hMjYyLyNzZWMtb3JkaW5hcnloYXNpbnN0YW5jZQorYm9vbCBKU09iamVjdDo6ZGVmYXVs
dEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBn
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBoYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5j
ZVZhbHVlKSk7Ci19CisgICAgaWYgKCFpc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1ib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90bykKLXsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIGlmIChpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhp
cyktPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
IAogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgSlNWYWx1ZSBwcm90byA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCiAgICAg
aWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZh
bGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBJbnN0YW5jZW9mUHJvdG90eXBlTm90T2JqZWN0RXJyb3IpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KHZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KHByb3Rv
KS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpOworfQorCiti
b29sIEpTT2JqZWN0Ojppc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KG9iamVjdFZhbHVlKTsK
LSAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKKyAgICAgICAgaWYgKG9iamVjdCA9PSB0aGlz
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQotewotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90bykpKTsKLX0KLQogdm9pZCBK
U09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBt
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBjbGFzcyBTaWduYXR1cmU7CiAKIGlubGluZSBKU0NlbGwqIGdldEpTRnVu
Y3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVl
LmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpKQorICAgIGlmICh2YWx1ZS5pc0Nl
bGwoKSAmJiBUeXBlSW5mbzo6aXNKU0Z1bmN0aW9uVHlwZSh2YWx1ZS5hc0NlbGwoKS0+dHlwZSgp
KSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtODIsNiArODIsNyBAQCBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlM
aXRlCiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmln
dXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcjsKIGV4dGVybiBKU19FWFBP
UlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUVudW1lcmFiaWxpdHlFcnJvcjsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJ
SUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3I7Citl
eHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90
b3R5cGVOb3RPYmplY3RFcnJvcjsKIAogY2xhc3MgSlNGaW5hbE9iamVjdDsKIApAQCAtNjc1LDcg
KzY3Niw4IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFs
dWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFuY2UoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNQcm90b3R5cGVPZihKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1h
eGltdW1Qcm90b3R5cGVDaGFpbkRlcHRoID0gNDAwMDA7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKQEAgLTEyNDAsOCArMTI0Miw2IEBAIHByaXZhdGU6
CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOwotCiBpbmxpbmUgSlNGaW5hbE9iamVjdCog
SlNGaW5hbE9iamVjdDo6Y3JlYXRlV2l0aEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5h
bE9iamVjdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3
ICs1NDAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAKIEFM
V0FZU19JTkxJTkUgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoVHlwZUlu
Zm86OmlzSlNGdW5jdGlvblR5cGUoY2VsbC0+dHlwZSgpKSkKICAgICAgICAgcmV0dXJuIEpTRnVu
Y3Rpb246OmdldENhbGxEYXRhKGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJlc3VsdC50eXBl
ID09IENhbGxEYXRhOjpUeXBlOjpOb25lIHx8IGNlbGwtPmlzVmFsaWRDYWxsZWUoKSk7CkBAIC01
NTksNyArNTU5LDcgQEAgaW5saW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoVk0mIHZtLAog
ICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgSlNDZWxs
KiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkKKyAgICBpZiAoVHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUoY2VsbC0+dHlwZSgp
KSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoY2VsbCk7CiAg
ICAgQ2FsbERhdGEgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3RE
YXRhKGNlbGwpOwogICAgIEFTU0VSVChyZXN1bHQudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSB8fCBjZWxsLT5pc1ZhbGlkQ2FsbGVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0MKICAgICBDQVNFKEZpbmFs
T2JqZWN0VHlwZSkKICAgICBDQVNFKEpTQ2FsbGVlVHlwZSkKICAgICBDQVNFKEpTRnVuY3Rpb25U
eXBlKQorICAgIENBU0UoSlNCb3VuZEZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKEludGVybmFsRnVu
Y3Rpb25UeXBlKQogICAgIENBU0UoTnVsbFNldHRlckZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKEJv
b2xlYW5PYmplY3RUeXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1OSwxMCBAQCBlbnVtIEpTVHlwZSA6IHVp
bnQ4X3QgewogICAgIE9iamVjdFR5cGUsCiAgICAgRmluYWxPYmplY3RUeXBlLAogICAgIEpTQ2Fs
bGVlVHlwZSwKLSAgICBKU0Z1bmN0aW9uVHlwZSwKICAgICBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwK
ICAgICBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLAorICAgIEpTRnVuY3Rpb25UeXBlLAorICAgIEpT
Qm91bmRGdW5jdGlvblR5cGUsCiAgICAgQm9vbGVhbk9iamVjdFR5cGUsCiAgICAgTnVtYmVyT2Jq
ZWN0VHlwZSwKICAgICBFcnJvckluc3RhbmNlVHlwZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNiBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAvLyBJbmxpbmUgZmxhZ3Mu
CiAKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7
IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQu
YWxsIHVuZGV0ZWN0YWJsZS4KLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3Zl
cnJpZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8vIE5lZWQgdGhpcyBmbGFnIGlmIHlvdSBpbXBs
ZW1lbnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgb3ZlcnJpZGluZyBnZXRD
YWxsRGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJlIGNhbGxhYmxlIHNpbmNlIGdldENhbGxEYXRh
IGNhbiBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7CiBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8gSWYgdGhpcyBpcyBmYWxzZSB0aGVu
IHRoaXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiAndGhpcycuIE5vbi1vYmplY3QgY2Vs
bHMgdGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZlIHRoaXMgc2V0IGFzIGRvIHNvbWUgZXhvdGlj
IG9iamVjdHMuCkBAIC00Nyw3ICs0Niw2IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgVHlw
ZUluZm9QZXJDZWwKIAogLy8gT3V0IG9mIGxpbmUgZmxhZ3MuCiAKLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCA4Owogc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzID0gMSA8PCA5Owogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyA9
IDEgPDwgMTA7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZyA9IDEgPDwgMTE7CkBAIC05MCw4ICs4OCw2IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVk
IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZsYWdzMikg
PDwgbnVtYmVyT2ZJbmxpbmVCaXRzKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZsYWdzKTsg
fQogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczE8TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKTsgfQotICAgIGJvb2wgaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxJbXBsZW1lbnRzSGFz
SW5zdGFuY2U+KCk7IH0KLSAgICBib29sIGltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U+
KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldENhbGxEYXRhKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMTxPdmVycmlkZXNHZXRDYWxsRGF0YT4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4gb3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90KGlubGluZVR5cGVGbGFncygpKTsgfQogICAgIGJvb2wgaGFzU3RhdGljUHJvcGVydHlU
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8SGFzU3RhdGljUHJvcGVydHlUYWJs
ZT4oKTsgfQpAQCAtMTEzLDYgKzEwOSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8SXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Q+KCk7IH0KICAgICBib29sIGludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyPEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8+KCk7IH0KIAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNKU0Z1bmN0aW9uVHlwZShKU1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0eXBlID09IEpTRnVuY3Rpb25UeXBlCisgICAgICAgICAgICB8fCB0eXBlID09IEpTQm91bmRG
dW5jdGlvblR5cGU7CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgaXNBcmd1bWVudHNUeXBlKEpT
VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gRGlyZWN0QXJndW1lbnRz
VHlwZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIE51bWJlckNvbnN0cnVjdG9yIGZpbmFsIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IAogICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlLCBHZXR0ZXJTZXR0
ZXIqKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04ob2JqZWN0UHJvdG9GdW5jVmFsdWVPZik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk7Ci1zdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0
ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKTsKQEAgLTYzLDcgKzYyLDcgQEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YsIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsKICAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+aGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSGFz
T3duUHJvcGVydHlJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQ
cm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJvdG90eXBlT2YsIG9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG90eXBl
SXNQcm90b3R5cGVPZkNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQcm90
b0Z1bmNEZWZpbmVHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNE
ZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBH
ZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAxKTsKQEAgLTEyNywzMyArMTI2LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVj
dFByb3RvRnVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdFBy
b3RvdHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkp
OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5
cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7Ci0KLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVj
dCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7Ci0gICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqKSkKLSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0KLSAg
ICBKU1ZhbHVlIHYgPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKCF2Lmlz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOwotICAgICAgICBpZiAodiA9PSB0aGlzT2JqKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICB2ID0gYXNPYmplY3Qodikt
PmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQotfQotCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMzUgQEAgQUxX
QVlTX0lOTElORSBib29sIGpzVHlwZW9mSXNGdW5jdGlvbihKUwogICAgIHJldHVybiByZXN1bHQg
PT0gVHJpU3RhdGU6OlRydWU7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBqc0lzUHJvdG90eXBl
T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIEpTT2Jq
ZWN0KiB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghcHJvdG90eXBl
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNPYmplY3QocHJv
dG90eXBlKS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHZhbHVlKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBqc0luc3RhbmNlb2ZPcGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWNvbnN0cnVj
dG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJpZ2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiX3Mp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIHJldHVybiBoYXNJbnN0YW5jZVZhbHVlCisgICAgICAgID8gYXNPYmplY3QoY29uc3RydWN0
b3IpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKQor
ICAgICAgICA6IGFzT2JqZWN0KGNvbnN0cnVjdG9yKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKIHsK
ICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCwxMiArNDgsNiBAQCBQcm94eU9iamVjdDo6UHJveHlPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1CiB7CiB9CiAKLVN0cnVjdHVyZSogUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmdl
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdldCkKLXsKLSAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHRhcmdldC5pc0NhbGxhYmxl
KHZtKSA/IGdsb2JhbE9iamVjdC0+Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xv
YmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVyZSgpOwotfQotCiB2b2lkIFByb3h5T2JqZWN0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzEsMTEgKzY1LDYgQEAgdm9pZCBQcm94eU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLAogICAgIEpTT2JqZWN0KiB0YXJnZXRBc09iamVjdCA9IGpz
Q2FzdDxKU09iamVjdCo+KHRhcmdldCk7CiAKICAgICBtX2lzQ2FsbGFibGUgPSB0YXJnZXRBc09i
amVjdC0+aXNDYWxsYWJsZSh2bSk7Ci0gICAgaWYgKG1faXNDYWxsYWJsZSkgewotICAgICAgICBU
eXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKTsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSAmJiBpbmZvLmltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAgfQotCiAgICAgbV9pc0NvbnN0cnVjdGlibGUgPSB0
YXJnZXRBc09iamVjdC0+aXNDb25zdHJ1Y3Rvcih2bSk7CiAKICAgICBtX3RhcmdldC5zZXQodm0s
IHRoaXMsIHRhcmdldEFzT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1
LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJveHlPYmplY3QqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBQcm94eU9iamVjdDo6c3RydWN0dXJlRm9yVGFyZ2V0KGdsb2JhbE9i
amVjdCwgdGFyZ2V0KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPnByb3h5T2JqZWN0U3RydWN0dXJlKCk7CiAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5T2JqZWN0Pih2bS5oZWFwKSkgUHJveHlP
YmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHByb3h5LT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gcHJveHk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgaXNDYWxs
YWJsZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGZsYWdzID0gU3RydWN0dXJlRmxhZ3M7Ci0gICAgICAgIGlmIChpc0NhbGxh
YmxlKQotICAgICAgICAgICAgZmxhZ3MgfD0gKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpOwotICAgICAgICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oUHJv
eHlPYmplY3RUeXBlLCBmbGFncyksIGluZm8oKSwgTm9uQXJyYXkgfCBNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7CisgICAgICAgIFN0cnVjdHVyZSogcmVzdWx0ID0gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhQcm94eU9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSB8IE1heUhhdmVJbmRleGVkQWNjZXNzb3Jz
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+Y2FuQWNjZXNzUHJvcGVydGllc1F1
aWNrbHlGb3JFbnVtZXJhdGlvbigpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+
Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtKSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CkBAIC03Nyw3ICs3NCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgUHJveHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRhcmdl
dCwgSlNWYWx1ZSBoYW5kbGVyKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0
dXJlKiBzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRhcmdldCk7
CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAy
Nzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6cHJvY2Vzc1VudmVyaWZpZWQKICAgICAgICAgICAgICAgICBtX2xpdmVDZWxsUG9pbnRl
cnMuYWRkKGNhbGxlZSk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAoY2FsbGVl
Q2VsbC0+dHlwZSgpICE9IEpTRnVuY3Rpb25UeXBlKSB7CisgICAgICAgICAgICBpZiAoIVR5cGVJ
bmZvOjppc0pTRnVuY3Rpb25UeXBlKGNhbGxlZUNlbGwtPnR5cGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihjYWxs
ZWVDZWxsLT52bSgpLCBjYWxsZWVDZWxsKSkKICAgICAgICAgICAgICAgICAgICAgYWRkQ2FsbGVl
KG9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA3
LTEyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBB
biBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNlb2YKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgxNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKwogMjAyMS0wNy0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHBhcnRpYWwgcmV2ZXJ0IG9mIHIyNzk2NjEgdG8g
YWRkcmVzcyBjcmFzaGVzIG9uIGlPUyBEZWJ1Zy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkocmV2aXNpb24gMjc5ODQxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6
IHB1YmxpYyBKU0RPCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NT2JqZWN0OwogCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6OkltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjkxNCw3
ICsyOTE0LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6
Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9Owog
ICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVj
dCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVBy
b3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxl
bWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSJ9ID0g
MSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IjsKICAgICAgICAgCiAgICAgIyBQcm90
b3R5cGUKICAgICB1bmxlc3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJm
YWNlKSB8fCAkaW50ZXJmYWNlLT5pc05hbWVzcGFjZU9iamVjdCkgewo=
</data>
<flag name="commit-queue"
          id="455587"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433364</attachid>
            <date>2021-07-12 15:09:32 -0700</date>
            <delta_ts>2021-07-15 13:01:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210713010931.patch</filename>
            <type>text/plain</type>
            <size>168163</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTEyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHN0cmVz
cy93YXNtLWxvb3AtY29uc2lzdGVuY3kuanMgc2hvdWxkIHJlcXVpcmUgdGhlIC0tdXNlRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6PWZhbHNlIEpTQyBvcHRpb24KSW5kZXg6IEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5hbC1mdW5jdGlvbi5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLWludGVy
bmFsLWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlv
bigpIHsKKyAgICBmdW5jdGlvbiBmbigpIHt9CisgICAgdmFyIGFyciA9IFtdOworICAgIHZhciBy
ZSA9IC8oPzopLzsKKyAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlOworICAgIHZhciBtYXAgPSBuZXcg
TWFwOworICAgIHZhciBzZXQgPSBuZXcgU2V0OworCisgICAgdmFyIGFjYyA9IDA7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhY2MgKz0gZm4gaW5zdGFuY2Vv
ZiBGdW5jdGlvbgorICAgICAgICAgICAgJiYgYXJyIGluc3RhbmNlb2YgQXJyYXkKKyAgICAgICAg
ICAgICYmIHJlIGluc3RhbmNlb2YgUmVnRXhwCisgICAgICAgICAgICAmJiBkYXRlIGluc3RhbmNl
b2YgRGF0ZQorICAgICAgICAgICAgJiYgbWFwIGluc3RhbmNlb2YgTWFwCisgICAgICAgICAgICAm
JiBzZXQgaW5zdGFuY2VvZiBTZXQ7CisgICAgfQorICAgIGlmIChhY2MgIT09IGkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLWNlbGwuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmlt
aXRpdmUtY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACisoZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQorCisgICAg
dmFyIG51bWJlciA9IDQuNTsKKyAgICB2YXIgc3RyaW5nID0gInN0ciI7CisgICAgdmFyIHN5bWJv
bCA9IFN5bWJvbCgpOworICAgIHZhciBiaWdpbnQgPSAxMG47CisKKyAgICB2YXIgYWNjID0gMDsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyArPSBudW1i
ZXIgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IHN0cmluZyBpbnN0YW5jZW9mIEJhcgor
ICAgICAgICAgICAgfHwgc3ltYm9sIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8fCBiaWdp
bnQgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1p
dGl2ZS1ub24tY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisoZnVuY3Rp
b24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQorCisg
ICAgdmFyIGFjYyA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsraSkgeworICAg
ICAgICBhY2MgKz0gdW5kZWZpbmVkIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8fCBudWxs
IGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCB0cnVlIGluc3RhbmNlb2YgRm9vCisgICAg
ICAgICAgICB8fCBpIGluc3RhbmNlb2YgQmFyOworICAgIH0KKyAgICBpZiAoYWNjKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRleDogSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcm94eS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5LmpzCShub25leGlzdGVudCkKKysr
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJveHkuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIFRhcmdldCgp
IHt9CisgICAgdmFyIHZhbHVlID0gbmV3IFRhcmdldCgpOworICAgIHZhciBwcm94eSA9IG5ldyBQ
cm94eShUYXJnZXQsIFJlZmxlY3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkr
KykgeworICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIHByb3h5KSkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDog
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMJKG5vbmV4aXN0
ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBpc0Fy
cmF5ID0gJHZtLmNyZWF0ZUJ1aWx0aW4oIihmdW5jdGlvbiAoYykgeyByZXR1cm4gQGlzQXJyYXko
Yyk7IH0pIik7CisgICAgbm9JbmxpbmUoaXNBcnJheSk7CisKKyAgICB2YXIgc3ltID0gU3ltYm9s
KCk7CisgICAgdmFyIGFyciA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyBpKysp
IHsKKyAgICAgICAgaWYgKHR5cGVvZiAiZm9vIiAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGkgPT09
ICJzdHJpbmciIHx8CisgICAgICAgICAgICB0eXBlb2Ygc3ltICE9PSAic3ltYm9sIiB8fCB0eXBl
b2YgYXJyID09PSAic3ltYm9sIiB8fAorICAgICAgICAgICAgIWlzQXJyYXkoYXJyKSB8fCBpc0Fy
cmF5KHN5bSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7
CisgICAgfQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHJldmlzaW9u
IDI3OTg0MSkKKysrIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtMTU5OSw5ICsxNTk5LDYgQEAgdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9nZW5l
cmF0b3JzL3NjbwogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFN5bnRheEVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9nZW5lcmF0b3JzL3Njb3BlLXBhcmFtLXJlc3QtZWxlbS12
YXItb3Blbi5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrb3V0c2lkZcK7LCDCq2luc2lkZcK7KSB0byBiZSB0cnVlJwotdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9pbnN0YW5jZW9mL3Byb3RvdHlwZS1nZXR0ZXItd2l0aC1wcmltaXRpdmUuanM6Ci0g
IGRlZmF1bHQ6ICJUZXN0MjYyRXJyb3I6IGdldHRlciBmb3IgJ3Byb3RvdHlwZScgY2FsbGVkIgot
ICBzdHJpY3QgbW9kZTogIlRlc3QyNjJFcnJvcjogZ2V0dGVyIGZvciAncHJvdG90eXBlJyBjYWxs
ZWQiCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNzaWdubWVudC9sZ2NsLWFu
ZC1hc3NpZ25tZW50LW9wZXJhdG9yLW5vbi1zaW1wbGUtbGhzLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MjogVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBiZSBldmFsdWF0ZWQuJwogdGVzdC9sYW5n
dWFnZS9leHByZXNzaW9ucy9sb2dpY2FsLWFzc2lnbm1lbnQvbGdjbC1udWxsaXNoLWFzc2lnbm1l
bnQtb3BlcmF0b3Itbm9uLXNpbXBsZS1saHMuanM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMDggQEAKKzIwMjEtMDctMTIgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEFuIGlzc3VlIGFib3V0IGV2
YWx1YXRpbmcgaW5zdGFuY2VvZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1ZhbHVlSXNJbnN0
YW5jZU9mQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAg
ICAgIChjb25zdHJ1Y3Rvckhhc0luc3RhbmNlKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKG92ZXJyaWRkZW5O
YW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN5bWJvbEhhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBidWlsdGlucy9PYmplY3RQcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoaXNQ
cm90b3R5cGVPZik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaDoKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmRlc3BlY2lmaWVkQ2xvc3VyZSBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpl
eGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9FeGl0S2luZC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5j
ZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtU
aW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbUNsYXNzSW5mb0luaGVyaXRhbmNlKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9t
SlNUeXBlUmFuZ2UpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGUpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25TcGVjdWxhdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RMaW5rVGltZUNvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cXVlcmllZFR5cGUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpP
cEluZm9XcmFwcGVyOjphc0pTVHlwZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNUeXBlSW5mb09wZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnR5cGVJbmZvT3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5m
bzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5zdGFuY2VPZkN1c3RvbSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mRm9yQ2VsbHMpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29t
cGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICog
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
Y2hlY2tGb3JiaWRkZW5Qcm90b3R5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVk
U2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjppc0NlbGxXaXRoVHlwZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29k
ZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5o
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVy
dGllcyk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
ICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29y
a2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OnVud3JhcEZv
ckxlZ2FjeUludGxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmN1c3RvbUhhc0luc3RhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2FzdC5oOgorICAg
ICAgICAoSlNDOjpKU1R5cGVSYW5nZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmN1c3RvbUhhc0luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ2FsbGFibGVXaXRoQ29uY3Vy
cmVuY3kpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXRoQ29uY3VycmVu
Y3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzc2VydFR5cGVJbmZvRmxhZ0lu
dmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJv
eHlPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjptYXJrQXV4aWxp
YXJ5QW5kVmlzaXRPdXRPZkxpbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5j
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRhKToKKyAg
ICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUu
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpU
eXBlSW5mbzo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBjb25zdCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxl
bWVudHNIYXNJbnN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlR5cGVJbmZv
OjppbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6anNJ
c1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6anNJbnN0YW5jZW9mT3BlcmF0b3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6c3RydWN0dXJl
Rm9yVGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ft
cGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyk6CisKIDIwMjEtMDct
MTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBK
SVRDYWdlIGFscmVhZHkgaW5jbHVkZXMgZ3VhcmQgcGFnZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAICQoUFJPSkVDVF9ESVIpL2J1
aWx0aW5zL01hcFByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTW9kdWxlTG9h
ZGVyLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogJChQ
Uk9KRUNUX0RJUikvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKKyQoUFJPSkVDVF9ESVIp
L2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJv
bWlzZUNvbnN0cnVjdG9yLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0
aW9ucy5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09V
UkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDog
cHVibGljIFBhcmVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVj
aWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdl
dE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwotICAgIHN0YXRpY19hc3Nl
cnQoIShTdHJ1Y3R1cmVGbGFncyAmIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCAidXNp
bmcgY3VzdG9tSGFzSW5zdGFuY2UiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRl
c0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZyB8IEdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAgICAgfkpT
Q2FsbGJhY2tPYmplY3QoKTsKIApAQCAtMjAxLDYgKzIwMCw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChWTSYsIFN1YnNwYWNlQWNjZXNzKTsK
ICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIGN1c3Rv
bVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBjdXN0b21IYXNJbnN0YW5jZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CkBAIC0yMTEsOCArMjExLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogCi0gICAgc3RhdGljIGJvb2wgY3Vz
dG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotCiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7
CiAKICAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDExICsx
MTUsMTQgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbAogICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgCiAgICAgYm9vbCBoYXNDb252ZXJ0VG9U
eXBlID0gZmFsc2U7CisgICAgYm9vbCBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IGZhbHNlOwogICAg
IFZlY3RvcjxKU09iamVjdEluaXRpYWxpemVDYWxsYmFjaywgMTY+IGluaXRSb3V0aW5lczsKICAg
ICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOwogICAgIGRvIHsKICAgICAgICAgaWYg
KGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUpCiAgICAgICAgICAgICBoYXNDb252ZXJ0VG9UeXBlID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGpzQ2xhc3MtPmhhc0luc3RhbmNlKQorICAgICAgICAgICAgaGFz
Q3VzdG9tSGFzSW5zdGFuY2UgPSB0cnVlOwogICAgICAgICBpZiAoSlNPYmplY3RJbml0aWFsaXpl
Q2FsbGJhY2sgaW5pdGlhbGl6ZSA9IGpzQ2xhc3MtPmluaXRpYWxpemUpCiAgICAgICAgICAgICBp
bml0Um91dGluZXMuYXBwZW5kKGluaXRpYWxpemUpOwogICAgIH0gd2hpbGUgKChqc0NsYXNzID0g
anNDbGFzcy0+cGFyZW50Q2xhc3MpKTsKQEAgLTEyOSw2ICsxMzIsMTEgQEAgdm9pZCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbAogICAgICAgICAgICAgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgY3VzdG9t
VG9QcmltaXRpdmUpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KKyAgICBpZiAoaGFzQ3VzdG9tSGFzSW5zdGFu
Y2UpIHsKKyAgICAgICAgdGhpcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJ
bnN0YW5jZVN5bWJvbCwKKyAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3MsIGN1c3RvbUhhc0luc3RhbmNlKSwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICB9CiAgICAgCiAgICAgLy8gaW5pdGlhbGl6ZSBmcm9tIGJhc2UgdG8gZGVy
aXZlZAogICAgIGZvciAoaW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KGluaXRSb3V0aW5lcy5zaXpl
KCkpIC0gMTsgaSA+PSAwOyBpLS0pIHsKQEAgLTUwMSwxNCArNTA5LDE4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQorRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CisgICAgSlNDYWxsYmFja09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5bWJvbC5o
YXNJbnN0YW5jZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlLiJf
cyk7CisKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAg
ICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmpl
Y3QpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAK
ICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpz
Q2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNP
YmplY3RIYXNJbnN0YW5jZUNhbGxiYWNrIGhhc0luc3RhbmNlID0ganNDbGFzcy0+aGFzSW5zdGFu
Y2UpIHsKQEAgLTUyMCwxMSArNTMyLDExIEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjdXN0b21IYXMKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0YW5jZShleGVjUmVm
LCB0aGlzUmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMjc5ODQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg4LDkgKzI4OCw3IEBAIGJvb2wgSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVj
dG9yKEpTQ28KICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgdmFsdWUp
OwogCiAgICAgSlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSB0b0pTKGNvbnN0cnVjdG9yKTsKLSAg
ICBpZiAoIWpzQ29uc3RydWN0b3ItPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIHJlc3VsdCA9
IGpzQ29uc3RydWN0b3ItPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IC8vIGZh
bHNlIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24KKyAgICBib29sIHJlc3VsdCA9IGpzQ29uc3Ry
dWN0b3ItPmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyAvLyBmYWxz
ZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkK
QEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3Rvckhhc0luc3RhbmNlKEpT
Q29uCiAKICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IHRvSlMoY29uc3RydWN0b3JS
ZWYpOwogICAgIEpTQzo6SlNWYWx1ZSBpbnN0YW5jZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCBwb3Nz
aWJsZUluc3RhbmNlKTsKLSAgICByZXR1cm4gSlNDOjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3Rh
bmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UsIGNvbnN0cnVjdG9yLT5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3It
PmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKIH0KIAogc3RhdGlj
IEpTQzo6SlNPYmplY3QqIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYg
anNDbGFzcywgaWQgd3JhcHBlZE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE4OSw2
ICs0MTg5LDcgQEAKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1
QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEYxNTNGRTI2
OUEwODcyMDAwQjlDREUgLyogT2JqZWN0UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gT2JqZWN0UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAx
NjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclg4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg5ODMsNiArODk4NCw3IEBACiAJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4
N0YwIC8qIE1vZHVsZUxvYWRlci5qcyAqLywKIAkJCQlBNTI3MDQ4NjFEMDI3Qzg4MDAzNTRDMzcg
LyogTnVtYmVyQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVG
IC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAorCQkJCTg0RjE1M0ZFMjY5QTA4NzIwMDBCOUNE
RSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNUUxQjY1RDlCMTAwOURCMUVG
IC8qIFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5REIx
RUYgLyogUHJvbWlzZU9wZXJhdGlvbnMuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAw
NzUwIC8qIFByb21pc2VQcm90b3R5cGUuanMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMiw5ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhpc1NoYXJlZFR5
cGVkQXJyYXlWaWV3KSBcCiAgICAgbWFjcm8oaXNEZXRhY2hlZCkgXAogICAgIG1hY3JvKHR5cGVk
QXJyYXlEZWZhdWx0Q29tcGFyYXRvcikgXAotICAgIG1hY3JvKGlzQm91bmRGdW5jdGlvbikgXAot
ICAgIG1hY3JvKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGluc3RhbmNl
T2YpIFwKKyAgICBtYWNybyhmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sKSBcCiAg
ICAgbWFjcm8oaXNBcnJheVNsb3cpIFwKICAgICBtYWNybyhzYW1lVmFsdWUpIFwKICAgICBtYWNy
byhjb25jYXRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtNDIsMjEgKzQyLDYgQEAgZnVuY3Rpb24gYXBwbHkodGhpc1ZhbHVlLCBhcmd1bWVu
dFZhbHVlcwogICAgIHJldHVybiB0aGlzLkBhcHBseSh0aGlzVmFsdWUsIGFyZ3VtZW50VmFsdWVz
KTsKIH0KIAotQG92ZXJyaWRkZW5OYW1lPSJbU3ltYm9sLmhhc0luc3RhbmNlXSIKLWZ1bmN0aW9u
IHN5bWJvbEhhc0luc3RhbmNlKHZhbHVlKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlm
ICghQGlzQ2FsbGFibGUodGhpcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChA
aXNCb3VuZEZ1bmN0aW9uKHRoaXMpKQotICAgICAgICByZXR1cm4gQGhhc0luc3RhbmNlQm91bmRG
dW5jdGlvbih0aGlzLCB2YWx1ZSk7Ci0KLSAgICB2YXIgdGFyZ2V0ID0gdGhpcy5wcm90b3R5cGU7
Ci0gICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJnZXQpOwotfQotCiBmdW5jdGlvbiBi
aW5kKHRoaXNWYWx1ZSkKIHsKICAgICAidXNlIHN0cmljdCI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFsZXhleSBTaHZheWthIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5j
dGlvbiBpc1Byb3RvdHlwZU9mKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICghQGlzT2JqZWN0KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IEBpbnN0YW5jZU9mKHZhbHVlLCBAdG9PYmplY3QodGhpcykpOworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2
ICs3MSw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFj
cm8oaXNNYXBJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzU2V0SXRlcmF0b3IpIFwKICAgICBtYWNy
byhpc1VuZGVmaW5lZE9yTnVsbCkgXAorICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKICAgICBtYWNy
byh0YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyh0aHJvd1R5cGVFcnJvcikg
XAogICAgIG1hY3JvKHRocm93UmFuZ2VFcnJvcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNv
cHkpCkBAIC00MDIsMTMgKzQwMiw2IEBAIG9wIDppZGVudGl0eV93aXRoX3Byb2ZpbGUsCiAgICAg
ICAgIGJvdHRvbVByb2ZpbGU6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOm92ZXJyaWRlc19oYXNf
aW5zdGFuY2UsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgY29uc3RydWN0b3I6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgaGFzSW5zdGFuY2VW
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQogb3AgOmluc3RhbmNlb2YsCiAgICAgYXJn
czogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTQzNCw3ICs0MjcsOCBAQCBv
cCA6aXNfY2VsbF93aXRoX3R5cGUsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0eXBl
OiBKU1R5cGUsCisgICAgICAgIGZpcnN0VHlwZTogSlNUeXBlLAorICAgICAgICBsYXN0VHlwZTog
SlNUeXBlLAogICAgIH0KIAogb3AgOmluX2J5X3ZhbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc5ODQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbChWaXIKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAg
ICAgVVNFUyhPcEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSGFz
UHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKLSAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9m
LCB2YWx1ZSwgcHJvdG90eXBlKQogICAgIFVTRVMoT3BBZGQsIGxocywgcmhzKQogICAgIFVTRVMo
T3BNdWwsIGxocywgcmhzKQpAQCAtNDkwLDcgKzQ4OSw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnMKICAgICBERUZTKE9wR2V0QnlJZFdpdGhUaGlzLCBkc3QpCiAg
ICAgREVGUyhPcEdldEJ5VmFsV2l0aFRoaXMsIGRzdCkKICAgICBERUZTKE9wR2V0UHJvdG90eXBl
T2YsIGRzdCkKLSAgICBERUZTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGRzdCkKICAgICBERUZT
KE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAg
ICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBjYWxsZWUgPSBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yQ29kZUJsb2Nr
LmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT50eXBlKCkgPT0gSlNGdW5jdGlv
blR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT5pc0pTRnVuY3Rpb24oKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ2xlYXJpbmcgY2FsbCB0byAiLApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQ2Fs
bExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogICAgIGlmICgh
aXNEaXJlY3QoKSAmJiBoYXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChs
YXN0U2VlbkNhbGxlZSgpKSkgewotICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+dHlwZSgp
ID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+aXNKU0Z1
bmN0aW9uKCkpCiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShqc0Nhc3Q8SlNGdW5j
dGlvbio+KGxhc3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9j
bGVhcmVkQnlHQyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwg
Y2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUg
Q2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
IChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobV9jYWxs
ZWUtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRL
aW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBAIGNvbnN0
IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJCYWRD
b25zdGFudENhY2hlIjsKICAgICBjYXNlIEJhZEluZGV4aW5nVHlwZToKICAgICAgICAgcmV0dXJu
ICJCYWRJbmRleGluZ1R5cGUiOwotICAgIGNhc2UgQmFkVHlwZUluZm9GbGFnczoKLSAgICAgICAg
cmV0dXJuICJCYWRUeXBlSW5mb0ZsYWdzIjsKICAgICBjYXNlIE92ZXJmbG93OgogICAgICAgICBy
ZXR1cm4gIk92ZXJmbG93IjsKICAgICBjYXNlIE5lZ2F0aXZlWmVybzoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNiBAQCBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFkQ2FjaGUs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFk
Q29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29u
c3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KICAgICBCYWRJbmRleGluZ1R5
cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGluZGV4aW5nIHR5cGUgd2FzIHdyb25nLgotICAg
IEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3Jy
ZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBzZWUuCiAg
ICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0
aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVy
by4KICAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJl
ZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2VlIGl0LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9m
U3RhdHVzLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw3
IEBAIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHUKICNpZiBFTkFCTEUo
REZHX0pJVCkKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvKQogewotICAgIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBoYXZlIHRvIGJhaWwg
Zm9yIG5vbkNlbGwgaWYgd2UgdGF1Z2h0IE1hdGNoU3RydWN0dXJlIGhvdyB0byBoYW5kbGUgbm9u
Ci0gICAgLy8gY2VsbHMuIElmIHdlIGZpeGVkIHRoYXQgdGhlbiB3ZSB3b3VsZG4ndCBiZSBhYmxl
IHRvIHVzZSBzdW1tYXJ5KCk7Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NTc4NAorICAgIEFTU0VSVCghc3R1YkluZm8tPnNhd05vbkNlbGwpOwogICAg
IFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkodm0s
IHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKICAgICAgICAgcmV0
dXJuIEluc3RhbmNlT2ZTdGF0dXMoc3VtbWFyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHJldmlzaW9uIDI3OTg0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
dihpc0RldGFjaGVkLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5RGVmYXVsdENvbXBhcmF0
b3IsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgbnVsbHB0cikg
XAotICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCi0gICAgdihoYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFu
Y2VTeW1ib2wsIG51bGxwdHIpIFwKICAgICB2KGluc3RhbmNlT2YsIG51bGxwdHIpIFwKICAgICB2
KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5EZXNjcmliZSwgbnVsbHB0cikg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDEx
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAgICAgICAg
ICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0lu
dGVybmFsRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJJbnRlcm5hbEZ1
bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSBTcGVj
U3RyaW5nKQpAQCAtNTE4LDEwICs1MjMsMTMgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25G
cm9tQ2xhc3NJbmZvSQogCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rp
b246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246
OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhh
c0luc3RhbmNlOwotICAgICAgICByZXR1cm4gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0
YW5jZTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjQm91bmRGdW5jdGlvbjsKKyAgICAgICAgcmV0
dXJuIFNwZWNOb25Cb3VuZEZ1bmN0aW9uOwogICAgIH0KIAorICAgIGlmIChjbGFzc0luZm8tPmlz
U3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgICAgICByZXR1cm4gU3Bl
Y0ludGVybmFsRnVuY3Rpb24gfCBTcGVjT2JqZWN0T3RoZXI7CisKICAgICBpZiAoY2xhc3NJbmZv
LT5pc1N1YkNsYXNzT2YoSlNQcm9taXNlOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY1By
b21pc2VPYmplY3Q7CiAgICAgCkBAIC02ODYsNiArNjk0LDE2IEBAIFR5cGVkQXJyYXlUeXBlIHR5
cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGEKICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKIH0KIAor
c3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlUmFuZ2Uo
SlNUeXBlUmFuZ2UgcmFuZ2UpCit7CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBT
cGVjTm9uZTsKKyAgICBmb3IgKHVpbnQ4X3QgdHlwZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJh
bmdlLmZpcnN0KTsgdHlwZSA8PSBzdGF0aWNfY2FzdDx1aW50OF90PihyYW5nZS5sYXN0KTsgdHlw
ZSsrKQorICAgICAgICBzcGVjdWxhdGlvbiB8PSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoc3RhdGlj
X2Nhc3Q8SlNUeXBlPih0eXBlKSkudmFsdWVfb3IoU3BlY05vbmUpOworICAgIGlmIChzcGVjdWxh
dGlvbiA9PSBTcGVjTm9uZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3BlY3VsYXRpb247Cit9CisKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1
bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAg
LTY5NSw2ICs3MTMsMTAgQEAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRp
bwogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgog
ICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBJbnRlcm5hbEZ1bmN0aW9u
VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNhc2UgSlNG
dW5jdGlvblR5cGU6CisgICAgICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsKICAgICBj
YXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2
ZWRBcnJheVR5cGU6CkBAIC05NjAsNiArOTgyLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRp
b25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICBp
ZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3QiLCBzdHJsZW4oIlNw
ZWNEYXRhVmlld09iamVjdCIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsK
KyAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjSW50ZXJuYWxGdW5jdGlvbiIsIHN0
cmxlbigiU3BlY0ludGVybmFsRnVuY3Rpb24iKSkpCisgICAgICAgIHJldHVybiBTcGVjSW50ZXJu
YWxGdW5jdGlvbjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0T3Ro
ZXIiLCBzdHJsZW4oIlNwZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNPYmpl
Y3RPdGhlcjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0Iiwgc3Ry
bGVuKCJTcGVjT2JqZWN0IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwxNCArMzYsMTUgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1Y3R1cmU7CitzdHJ1
Y3QgSlNUeXBlUmFuZ2U7CiAKIHR5cGVkZWYgdWludDY0X3QgU3BlY3VsYXRlZFR5cGU7CiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAwOyAvLyBXZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgICAgICAgICAgICAgICAg
ICA9IDF1bGwgPDwgMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0FycmF5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KLXN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0
YW5jZSAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0
IGhhcyBpdHMgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3MgYml0
IHNldC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aE5v
bkRlZmF1bHRIYXNJbnN0YW5jZSA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNG
dW5jdGlvbiB0aGF0IGRvZXMgbm90IGhhdmUgaXRzIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgdHlwZSBpbmZvIGZsYWdzIGJpdCBzZXQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRnVuY3Rpb25X
aXRoRGVmYXVsdEhhc0luc3RhbmNlIHwgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0
YW5jZTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY0JvdW5kRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICA9IDF1
bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNCb3VuZEZ1bmN0aW9uLgorc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uQm91bmRGdW5jdGlvbiAgICAgICAgICAgICAg
ICAgID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3NlcywgYnV0IG5vdCBhIEpTQm91bmRGdW5jdGlvbi4KK3N0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNCb3VuZEZ1bmN0aW9uIHwgU3BlY05vbkJvdW5kRnVuY3Rpb247IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTRnVuY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnQ4QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MTZBcnJheSAgICAgICAgICAgICAgICAg
ICAgICAgID0gMXVsbCA8PCA1OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBv
bmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDY7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KQEAgLTEw
OSw4ICsxMTAsOSBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJCiBz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBTcGVjSGVhcEJpZ0ludDsKICNlbmRpZgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCA0NTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVybmFsRnVuY3Rpb24gICAgICAgICAgICAgICAgICA9
IDF1bGwgPDwgNDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEludGVybmFsRnVuY3Rpb24uCiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8
IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgot
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9u
IHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRB
cmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRl
T2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVj
dCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmpl
Y3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2Jq
ZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBw
cmVkaWN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwg
U3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8
IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVj
dCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwg
U3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBT
cGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3Bl
Y0RhdGFWaWV3T2JqZWN0IHwgU3BlY0ludGVybmFsRnVuY3Rpb247IC8vIEJpdG1hc2sgdXNlZCBm
b3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVy
IHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3Bl
Y01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1
Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRv
cCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3Ig
U3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hh
dCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpAQCAtMjMxLDcgKzIzMyw3IEBA
IGlubGluZSBib29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAogaW5saW5lIGJvb2wg
aXNGdW5jdGlvblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBTcGVjRnVuY3Rpb247CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYg
U3BlY0Z1bmN0aW9uKSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNQcm94eU9iamVjdFNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpAQCAtNTE4LDYgKzUyMCw3IEBAIEpTX0VY
UE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGEKIC8vIElmIGl0J3MgYW4gYW55SW50
KCksIGl0J2xsIHJldHVybiBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIEludDUyIGxhdHRpY2Uu
CiAvLyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBKU1ZhbHVlIGxhdHRp
Y2UuCiBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3YXJlU3BlY3VsYXRp
b25Gcm9tVmFsdWUoSlNWYWx1ZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVj
dWxhdGlvbkZyb21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSk7CiBzdGQ6Om9wdGlvbmFsPFNwZWN1
bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5
IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
Nzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDExIEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW4KICAgICBPcEpuZXFQdHI6OmVtaXQodGhp
cywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
YXBwbHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogY29uZCwg
TGlua1RpbWVDb25zdGFudCBjb25zdGFudCwgTGFiZWwmIHRhcmdldCkKK3sKKyAgICBPcEpuZXFQ
dHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgY29uc3Rh
bnQpLCB0YXJnZXQuYmluZCh0aGlzKSk7Cit9CisKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVnaXN0ZXJJRCogY29u
ZCwgTGFiZWwmIHRhcmdldCkKIHsKICAgICBPcEpuZXFQdHI6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lk
ZTMyPih0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwpAQCAt
MTczNSwxMiArMTc0MCwxMiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlP
cEltCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN0cmluZyIpIHsK
ICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhU
eXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSk7CisgICAgICAgICAg
ICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN0cmlu
Z1R5cGUsIFN0cmluZ1R5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJzeW1ib2wiKSB7CiAgICAgICAgICAg
ICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0
aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5bWJvbFR5cGUpOworICAgICAgICAgICAgICAgIE9wSXND
ZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1ib2xUeXBlLCBTeW1i
b2xUeXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICh2YWx1ZSA9PSAiYmlnaW50IikgewpAQCAtMTc0OCw3ICsxNzUzLDcgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbQogI2lmIFVTRShCSUdJTlQz
MikKICAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1
ZSk7CiAjZWxzZQotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywg
ZHN0LCBvcC5tX3ZhbHVlLCBIZWFwQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAgT3BJc0Nl
bGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlLCBI
ZWFwQmlnSW50VHlwZSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KQEAgLTI0MjQsMTIgKzI0MjksNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpjcmVhdGVWYXJpYWJsZSgKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBjb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSkKLXsKLSAgICBPcE92
ZXJyaWRlc0hhc0luc3RhbmNlOjplbWl0KHRoaXMsIGRzdCwgY29uc3RydWN0b3IsIGhhc0luc3Rh
bmNlVmFsdWUpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KIC8vIEluZGljYXRlcyB0aGUgbGVhc3Qg
dXBwZXIgYm91bmQgb2YgcmVzb2x2ZSB0eXBlIGJhc2VkIG9uIGxvY2FsIHNjb3BlLiBUaGUgYnl0
ZWNvZGUgbGlua2VyCiAvLyB3aWxsIHN0YXJ0IHdpdGggdGhpcyBSZXNvbHZlVHlwZSBhbmQgY29t
cHV0ZSB0aGUgbGVhc3QgdXBwZXIgYm91bmQgaW5jbHVkaW5nIGludGVyY2VwdGluZyBzY29wZXMu
CiBSZXNvbHZlVHlwZSBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZVR5cGUoKQpAQCAtNDYwNiw5
ICs0NjA1LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9JbmQKICAg
ICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElz
Q2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGVSYW5n
ZSByYW5nZSkKK3sKKyAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCBy
YW5nZS5maXJzdCwgcmFuZ2UubGFzdCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlIHR5cGUpCiB7Ci0gICAgT3BJc0NlbGxXaXRoVHlwZTo6
ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlwZSk7CisgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0
aGlzLCBkc3QsIHNyYywgdHlwZSwgdHlwZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNyAr
Nzk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbmMoUmVn
aXN0ZXJJRCogc3JjRHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlYyhSZWdpc3RlcklE
KiBzcmNEc3QpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRPdmVycmlkZXNIYXNJbnN0YW5j
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBo
YXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2YoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3RvdHlw
ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3Rl
cklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVPZihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CkBAIC05MTYsNiArOTE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNv
bmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkNh
bGwoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1
bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7Cisg
ICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogY29u
ZCwgTGlua1RpbWVDb25zdGFudCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHVuc2lnbmVkIGVt
aXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3RlcklEKiBjb25kLCBM
YWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9pZCByZWNvcmRIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0
eUluRm9ySW5Mb29wKFN0cnVjdHVyZUZvckluQ29udGV4dCYsIHVuc2lnbmVkIGJyYW5jaE9mZnNl
dCwgTGFiZWwmIGdlbmVyaWNQYXRoKTsKIApAQCAtOTQwLDYgKzk0MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RW51bWVyYXRvckdlbmVyaWNQcm9wZXJ0eU5h
bWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3RlcklEKiBp
bmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb0luZGV4U3RyaW5nKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Nl
bGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlUmFuZ2Up
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dl
bmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElz
Q2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNHZW5lcmF0
b3JUeXBlKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQ1LDYgKzEzNDUsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0XwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldFByb3RvdHlwZU9mKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9mKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3RO
b2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEluc3RhbmNlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIHByb3RvdHlwZS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxkIHByb21p
c2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewogICAg
IEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTMxNjAsMjkgKzMxNzAsMjMgQEAgUmVnaXN0ZXJJRCogVGhy
b3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0QgogCiBSZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXNPYmplY3QgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGlzQ3VzdG9tID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3Ry
dWN0b3IgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGhhc0luc3RhbmNlVmFsdWUgPSBnZW5lcmF0b3IubW92ZUVtcHR5VmFsdWUoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVu
dHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7Ci0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUu
Z2V0KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWcgPSBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgUmVmPExhYmVsPiBjdXN0b20g
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKLSAgICBSZWY8TGFiZWw+IHR5cGVFcnJvciA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXNPYmplY3QoaXNPYmplY3Qu
Z2V0KCksIGNvbnN0cnVjdG9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNl
KGlzT2JqZWN0LmdldCgpLCB0eXBlRXJyb3IuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZSh2YWx1ZS5nZXQoKSwgbV9leHByMSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVj
dG9yLmdldCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVy
YXRvci5lbWl0SXNDZWxsV2l0aFR5cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjb25zdHJ1
Y3Rvci5nZXQoKSwgSlNUeXBlUmFuZ2UgeyBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgSlNGdW5jdGlv
blR5cGUgfSksIGN1c3RvbS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGhhc0luc3RhbmNlVmFsdWUuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5l
cmF0b3Iudm0oKS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7CiAKLSAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShpc0N1c3RvbS5nZXQo
KSwgY29uc3RydWN0b3IuZ2V0KCksIGhhc0luc3RhbmNlVmFsdWUuZ2V0KCkpOwotCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShpc0N1c3RvbS5nZXQoKSwgY3VzdG9t
LmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoaGFz
SW5zdGFuY2VWYWx1ZS5nZXQoKSwgTGlua1RpbWVDb25zdGFudDo6ZnVuY3Rpb25Qcm90b3R5cGVI
YXNJbnN0YW5jZVN5bWJvbCwgY3VzdG9tLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZkZhbHNlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QoZHN0UmVnLmdldCgpLCB2YWx1ZS5nZXQoKSks
IGRvbmUuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChw
cm90b3R5cGUuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3Iudm0oKS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOwpAQCAtMzE5MSwxMCArMzE5NSw2IEBAIFJlZ2lzdGVySUQqIElu
c3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUKICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2Yo
ZHN0UmVnLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKIAogICAgIGdlbmVy
YXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKLQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHlw
ZUVycm9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJSaWdodCBo
YW5kIHNpZGUgb2YgaW5zdGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Iik7Ci0KICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGN1c3RvbS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NzEs
NyArMTQ3MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgICAgIGJvb2wgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwogICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgotICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2Vs
bCgpICYmIGNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlw
ZSgpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxk
LnZhbHVlKCkuaXNDZWxsKCkgJiYgbm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlucyhjaGlsZC52
YWx1ZSgpLmFzQ2VsbCgpLT50eXBlKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbigKQEAgLTE1NTIsNyArMTU1Miw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm1fc3RydWN0dXJl
LmZvckVhY2goCiAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVk
ID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlwZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IG5vZGUtPnF1ZXJpZWRU
eXBlKCkuY29udGFpbnMoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CkBAIC00MzM0LDEwICs0MzM0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBOb3RpZnlX
cml0ZToKICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgot
ICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwotICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkBAIC00NDY0LDQzICs0NDYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBjb25zdCBB
YnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIHVuc2lnbmVkIGJpdHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAg
QVNTRVJUKGJpdHMpOwotICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSB7Ci0gICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0gU3BlY0Z1
bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUg
PSBhYnN0cmFjdFZhbHVlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwo
KSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBpZiB3ZSBzZWUgYSBj
ZWxsIGhlcmUsIHdlIGtub3cgaXQncyBmdWxseSBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgICAg
IC8vIGFuZCB3ZSBjYW4gcmVhZCBpdHMgaW5saW5lIHR5cGUgaW5mbyBmbGFncy4gVGhlc2UgZmxh
Z3MgZG9uJ3QgY2hhbmdlIG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlm
ZXRpbWUuCi0gICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5hc0NlbGwoKS0+aW5saW5lVHlwZUZs
YWdzKCkgJiBiaXRzKSA9PSBiaXRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAgICAgICAg
ICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgIGFic3RyYWN0VmFsdWUubV9zdHJ1Y3R1cmUu
Zm9yRWFjaChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAg
ICAgICAgb2sgJj0gKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJp
dHMpID09IGJpdHM7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChvaykgewotICAg
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAgICAgICBBYnN0cmFj
dFZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1
ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk2NiwxNyArNTk2Niw2IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NoZWNrX3Rkeik7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2U6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9u
KiBkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSktPmZ1bmN0aW9u
UHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgICAgIE5vZGUqIGNv
bnN0cnVjdG9yID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbnN0cnVjdG9yKSk7
Ci0gICAgICAgICAgICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWUpKTsKLQotICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bikpLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotICAgICAgICAgICAgTkVYVF9P
UENPREUob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBj
YXNlIG9wX2lkZW50aXR5X3dpdGhfcHJvZmlsZTogewogICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJZGVudGl0eVdpdGhQcm9maWxlPigpOwogICAg
ICAgICAgICAgTm9kZSogc3JjRHN0ID0gZ2V0KGJ5dGVjb2RlLm1fc3JjRHN0KTsKQEAgLTYwMjcs
NyArNjAxNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9mLCB2YWx1ZSwgcHJvdG90
eXBlKSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5zdGFu
Y2VPZiwgRWRnZSh2YWx1ZSwgQ2VsbFVzZSksIEVkZ2UocHJvdG90eXBlKSkpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0KIApAQCAtNjA5OCw3ICs2
MDg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKLSAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKGJ5dGVj
b2RlLm1fdHlwZSksIHZhbHVlKSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFk
ZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1f
Zmlyc3RUeXBlLCBieXRlY29kZS5tX2xhc3RUeXBlIH0pLCB2YWx1ZSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfaXNfY2VsbF93aXRoX3R5cGUpOwogICAgICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNl
IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfbW92OgotICAgIGNhc2Ugb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2lkZW50aXR5X3dpdGhfcHJvZmls
ZToKICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mX2N1c3Rv
bToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBJc0NlbGxX
aXRoVHlwZToKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5xdWVyaWVkVHlwZSgp
KSk7CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJp
dHdpc2VfY2FzdDx1aW50MTZfdD4obm9kZS0+cXVlcmllZFR5cGUoKSkpKSk7CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6CkBAIC0xMTc2LDExICsxMTc2LDYgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgcmV0dXJuOyAKLSAgICAg
ICAgCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3R5
cGVJbmZvRmxhZ3MpOwotICAgICAgICBkZWYoSGVhcExvY2F0aW9uKENoZWNrVHlwZUluZm9GbGFn
c0xvYywgSlNDZWxsX3R5cGVJbmZvRmxhZ3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOwotICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFBhcnNlSW50OgogICAgICAgICAvLyBO
b3RlOiBXZSB3b3VsZCBoYXZlIGVsaW1pbmF0ZWQgYSBQYXJzZUludCB0aGF0IGhhcyBqdXN0IGEg
c2luZ2xlIGNoaWxkIGFzIGFuIEludDMyVXNlIGluc2lkZSBmaXh1cC4KQEAgLTExOTIsMTEgKzEx
ODcsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJ
bnN0YW5jZToKLSAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRl
ZihIZWFwTG9jYXRpb24oT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MsIEpTQ2VsbF90eXBlSW5mb0Zs
YWdzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5
KTsKICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNiw0NiArMTAyNiw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAg
ICAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBu
b2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYml0cyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJpdHMgPT0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0gU3BlY0Z1
bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
bV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHZhbHVlID0gYWJzdHJhY3RWYWx1ZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3Jr
cyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0
cnVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgY2FuIHJlYWQgaXRzIGlu
bGluZSB0eXBlIGluZm8gZmxhZ3MuIFRoZXNlIGZsYWdzIGRvbid0IGNoYW5nZSBvdmVyIHRoZQot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJp
dHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBh
YnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJl
IHN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgb2sgJj0gKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHM7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBpZiAob2spIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24g
Mjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUJlbG93RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQ
dHI6CiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJ
bnN0YW5jZToKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoK
ICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgpAQCAtMTg4LDcgKzE4Nyw2IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50
ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKLSAgICBjYXNlIENo
ZWNrVHlwZUluZm9GbGFnczoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBN
dWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVmFsdWVSZXA6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OTAsNyArMTk5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2Fz
ZSBDcmVhdGVQcm9taXNlOgpAQCAtMjA3NCwyNSArMjA3MywxNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewotICAgICAg
ICAgICAgLy8gRklYTUU6IEludHJvZHVjZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1cmUgdGhh
dCBkb2Vzbid0IGRvIGEgY2VsbCBjaGVjay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU3ODQKICAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKLSAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAgICAgJiYg
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKQotICAgICAgICAgICAgICAgICYm
IGlzNjRCaXQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVD
ZWxsKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKLSAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBJbkJ5SWQ6IHsKQEAgLTI4MjgsNyArMjgxOSw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5v
dGlmeVdyaXRlOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6Ci0gICAgICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAg
ICAgY2FzZSBEaXJlY3RUYWlsQ2FsbElubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3Ry
dWN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9u
LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTUgKzEwOSw3IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2MKICAgICBjYXNlIEJ1dHRlcmZseUxv
YzoKICAgICAgICAgb3V0LnByaW50KCJCdXR0ZXJmbHlMb2MiKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnc0xvYzoKLSAgICAgICAgb3V0LnBy
aW50KCJDaGVja1R5cGVJbmZvRmxhZ3NMb2MiKTsKLSAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fz
ZSBPdmVycmlkZXNIYXNJbnN0YW5jZUxvYzoKLSAgICAgICAgb3V0LnByaW50KCJPdmVycmlkZXNI
YXNJbnN0YW5jZUxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIGNhc2UgQ2xv
c3VyZVZhcmlhYmxlTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJpYWJsZUxvYyIp
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDYgQEAg
ZW51bSBMb2NhdGlvbktpbmQgewogICAgIEFycmF5TWFza0xvYywKICAgICBWZWN0b3JMZW5ndGhM
b2MsCiAgICAgQnV0dGVyZmx5TG9jLAotICAgIENoZWNrVHlwZUluZm9GbGFnc0xvYywKLSAgICBP
dmVycmlkZXNIYXNJbnN0YW5jZUxvYywKICAgICBDbG9zdXJlVmFyaWFibGVMb2MsCiAgICAgRGly
ZWN0QXJndW1lbnRzTG9jLAogICAgIEdldHRlckxvYywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzNiwxMCArMTQzNiwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0KIAotICAg
IEpTVHlwZSBxdWVyaWVkVHlwZSgpCisgICAgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGUoKQogICAg
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dWludDhfdCwgc3RkOjp1bmRl
cmx5aW5nX3R5cGU8SlNUeXBlPjo6dHlwZT46OnZhbHVlLCAiRW5zdXJlIHRoYXQgdWludDhfdCBp
cyB0aGUgdW5kZXJseWluZyB0eXBlIGZvciBKU1R5cGUuIik7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU1R5cGU+KG1fb3BJbmZvLmFzPHVpbnQzMl90PigpKTsKKyAgICAgICAgQVNTRVJU
KG9wKCkgPT0gSXNDZWxsV2l0aFR5cGUpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXNKU1R5
cGVSYW5nZSgpOwogICAgIH0KIAogICAgIGJvb2wgaGFzU3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgp
CkBAIC0xNDQ5LDcgKzE0NDksNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1
bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CisgICAgICAgIHJldHVybiBz
cGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZShxdWVyaWVkVHlwZSgpKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBoYXNSZXN1bHQoKQpAQCAtMTg3Nyw3ICsxODc3LDYgQEAgcHVibGljOgogICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0lzQ29uc3RhbnQ6CiAgICAgICAg
ICAgICByZXR1cm4gaXNDZWxsKGNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0gICAgICAgIGNhc2UgT3Zl
cnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoK
QEAgLTE5NTIsMTcgKzE5NTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5h
czxVbmlxdWVkU3RyaW5nSW1wbCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNUeXBlSW5mb09w
ZXJhbmQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tUeXBlSW5mb0ZsYWdz
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIHR5cGVJbmZvT3BlcmFuZCgpCi0gICAgewotICAgICAg
ICBBU1NFUlQoaGFzVHlwZUluZm9PcGVyYW5kKCkgJiYgbV9vcEluZm8uYXM8dWludDMyX3Q+KCkg
PD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFVDSEFSX01BWCkpOwotICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8dWludDMyX3Q+KCk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMzMxMyw2ICszMzAxLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TmV3QXJy
YXlCdWZmZXJEYXRhPih1LmludDY0KTsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5F
IEpTVHlwZVJhbmdlIGFzSlNUeXBlUmFuZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEpTVHlwZVJhbmdlPihzdGF0aWNfY2FzdDx1aW50MTZfdD4o
dS5pbnQ2NCkpOworICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgdWlu
dDMyX3QgaW50MzI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNiBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAg
IG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4g
T3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBt
YWNybyhDaGVja0pTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUgc2FtZSBh
cyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9uICovXAog
ICAgIG1hY3JvKENoZWNrTm90SlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UGFyc2VJbnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKQEAgLTM5NSw3ICsz
OTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUGhhbnRv
bU5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAg
ICAvKiBOb2RlcyBmb3IgbWlzYyBvcGVyYXRpb25zLiAqL1wKLSAgICBtYWNybyhPdmVycmlkZXNI
YXNJbnN0YW5jZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAg
bWFjcm8oSW5zdGFuY2VPZiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSW5zdGFuY2VPZkN1c3RvbSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTWF0Y2hTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlUmVzdWx0Qm9vbGVhbikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBPcEluZm8g
ewogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkpKSB7IH0K
ICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9k
ZS52YWx1ZSgpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0S2luZCBw
dXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNpdCBPcElu
Zm8oSlNUeXBlUmFuZ2UgcmFuZ2UpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0
d2lzZV9jYXN0PHVpbnQxNl90PihyYW5nZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwMyw3ICs0MDMsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGNv
bnN0cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24q
Pihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKKyAgICBpZiAoY29u
c3RydWN0b3ItPmlzSlNGdW5jdGlvbigpICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0
b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIERlZmVyVGVybWluYXRp
b24gZGVmZXJTY29wZSh2bSk7CiAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShn
bG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2Vy
dE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc5
ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzcsNyArMTAzNyw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0
cjoKICAgICAgICAgY2FzZSBTYW1lVmFsdWU6Ci0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5z
dGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgY2FzZSBJbnN0YW5jZU9m
Q3VzdG9tOgogICAgICAgICBjYXNlIElzRW1wdHk6CkBAIC0xMzE0LDcgKzEzMTMsNiBAQCBwcml2
YXRlOgogCiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBEb3VibGVB
c0ludDMyOgotICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAgY2FzZSBB
cnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICBjYXNl
IENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsOSArMjU0
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2Ug
Q29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgIGNhc2UgU2FtZVZh
bHVlOgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgUGFyc2VJbnQ6Ci0g
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2Fz
ZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQzLDE2ICszNjQzLDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBjb21w
aWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOiB7Ci0gICAgICAgIGNvbXBpbGVPdmVycmlkZXNI
YXNJbnN0YW5jZShub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBJbnN0
YW5jZU9mOiB7CiAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKG5vZGUpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQzMSwyMSArNDQz
MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAg
IGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQogICAgIGNhc2UgUGFyc2VJbnQ6IHsKICAgICAgICAgY29tcGlsZVBhcnNlSW50KG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOiB7
Ci0gICAgICAgIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShub2RlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCiAgICAgY2FzZSBJbnN0YW5jZU9mOiB7CiAgICAgICAgIGNvbXBpbGVJbnN0
YW5jZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDA4MSwyMCArNDA4MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
ZXRQcml2YXRlQnIKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQotewotICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3Ig
Y2hlY2tpbmcgaWYgYSBzaW5nbGUgYml0IGlzIHNldC4gSWYgd2Ugd2FudCB0byBjaGVjayBtb3Jl
Ci0gICAgLy8gdGhhbiBvbmUgYml0IGF0IG9uY2UsIHdlJ2xsIG5lZWQgdG8gZml4IHRoaXM6Ci0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcwNQotICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZUluZm9GbGFncywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0
ciwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihub2RlLT50eXBlSW5mb09wZXJhbmQoKSkpKTsKLQotICAg
IG5vUmVzdWx0KG5vZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJ
bnQoTm9kZSogbm9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKTsKQEAgLTQxNTIsMTM2ICs0MTM4LDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQYXJzZUludChOb2QKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSog
bm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUp
CiB7Ci0gICAgTm9kZSogaGFzSW5zdGFuY2VWYWx1ZU5vZGUgPSBub2RlLT5jaGlsZDIoKS5ub2Rl
KCk7Ci0gICAgSlNGdW5jdGlvbiogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAgIERGR19BU1NF
UlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UpOworCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOworICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKIAotICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3REZWZhdWx0OwotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIGhhc0lu
c3RhbmNlVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOwogCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwor
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KKwor
ICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwor
ICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSlNWYWx1ZVJl
Z3MgcHJvdG90eXBlUmVnczsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
Ci0gICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgY29uc3RhbnQgZm9sZGluZyBoYW5kbGVkIGF1
dG9tYXRpY2FsbHkgdGhlIGNhc2Ugd2hlcmUgd2Uga25ldyB0aGUgaGFzSW5zdGFuY2UgZnVuY3Rp
b24KLSAgICAvLyB3YXMgYSBjb25zdGFudC4gVW5mb3J0dW5hdGVseSwgdGhlIGZvbGRpbmcgcnVs
ZSBmb3IgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgaXMgaW4gdGhlIHN0cmVuZ3RoIHJlZHVjdGlvbiBw
aGFzZQotICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICBpZiAoIWhhc0luc3Rh
bmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0
aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewotICAgICAgICBKU1ZhbHVl
UmVncyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5n
cHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwotI2Vsc2UKLSAgICAg
ICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGhhc0luc3RhbmNlVmFs
dWVSZWdzKSk7Ci0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgIGlmIChub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBwcm90b3R5cGVSZWdz
ID0gSlNWYWx1ZVJlZ3MocHJvdG90eXBlLmdwcigpKTsKKyAgICB9IGVsc2UgewogI2VuZGlmCi0g
ICAgfQotCi0gICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlJy4KLSAgICBtX2ppdC50ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCBy
ZXN1bHRHUFIpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCi0gICAgaWYgKCFub3REZWZhdWx0LmVtcHR5KCkp
IHsKLSAgICAgICAgbm90RGVmYXVsdC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm90
b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBwcm90b3R5cGVSZWdzID0gcHJv
dG90eXBlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIH0K
KyNlbmRpZgogCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNW
YWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSkKLXsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2pp
dC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAogICAgIEpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3Rl
cnMoKSwgcmVzdWx0R1BSLAotICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5
cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BS
LAorICAgICAgICB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCiAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLSAgICBzbG93Q2FzZXMu
YXBwZW5kKHNsb3dDYXNlKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3Mp
OworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVH
UFIsIHByb3RvdHlwZVJlZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5j
ZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5z
dHViSW5mbygpLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZUdQUiwgcHJvdG90eXBl
UmVncyk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwot
fQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQot
ewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlCi0gICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNl
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKLSAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwotICAgICAgICAKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7Ci0gICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkg
ewotICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKLSAgICAgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwotICAgICAgICB9Ci0gICAgICAgIEdQUlJlZyB2YWx1
ZUdQUiA9IHZhbHVlLmdwcigpOwotICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcHJvdG90
eXBlLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgICAgICAKLSAgICAgICAgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdz
KHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0
Y2gyR1BSKTsKLSAgICAgICAgCi0gICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICAKLSAgICBzdGQ6Om9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc3R1YkluZm87Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7Ci0gICAgCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAKLSAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOwotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgewotICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwotICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKLSAgICB9Ci0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzID0g
cHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7Ci0gICAgCi0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAg
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVl
UmVncyk7Ci0gICAgbW92ZUZhbHNlVG8ocmVzdWx0R1BSKTsKLSAgICAKLSAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgIAotICAgIGlzQ2VsbC5saW5rKCZtX2pp
dCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwocHJvdG90eXBlUmVncyk7Ci0gICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKLSAgICAKLSAgICBkb25l
LmxpbmsoJm1faml0KTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgIHJldHVybjsKIH0KQEAgLTUxMTYsMTggKzUwMzQsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdQogICAgIC8vIFN5bWJvbC5oYXNJbnN0YW5jZSBiZWNv
bWVzIHBvcHVsYXIgd2lsbCBsaWtlbHkgcmVtYWluIHRoYXQgd2F5LgogCiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGNvbnN0cnVjdG9yKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBjb25zdHJ1Y3Rvcih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQg
aGFzSW5zdGFuY2VWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKIAogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7Ci0gICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7
CisgICAgSlNWYWx1ZVJlZ3MgY29uc3RydWN0b3JSZWdzID0gY29uc3RydWN0b3IuanNWYWx1ZVJl
Z3MoKTsKICAgICBKU1ZhbHVlUmVncyBoYXNJbnN0YW5jZVJlZ3MgPSBoYXNJbnN0YW5jZVZhbHVl
LmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsKKyAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbklu
c3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlUmVncywgY29uc3RydWN0b3JSZWdzLCBoYXNJbnN0YW5jZVJlZ3MpKTsKIAogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUxNDQsMTAgKzUwNjIs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDZWxsV2l0aFR5CiAKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVl
UmVncyk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLAotICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9k
ZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5pc0NlbGxXaXRoVHlwZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBub2RlLT5xdWVyaWVkVHlw
ZSgpLCByZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0R1BSKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAtNTE2NiwxMCAr
NTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRoVHkKICAgICAg
ICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpF
cXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUtPnF1
ZXJpZWRUeXBlKCkpLAotICAgICAgICAgICAgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuaXND
ZWxsV2l0aFR5cGUoY2VsbEdQUiwgbm9kZS0+cXVlcmllZFR5cGUoKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgYmxlc3NCb29sZWFuKHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTExMzI3LDcgKzExMjM5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQog
ewotICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNGdW5jdGlvbiwgSlNGdW5j
dGlvblR5cGUpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGNlbGwpLCBlZGdlLCBTcGVjRnVuY3Rpb24sIG1faml0LmJyYW5jaElmTm90RnVuY3Rpb24oY2Vs
bCkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVk
Z2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTc1MywxMCArNzUzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29s
IGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSos
IGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlw
ZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRj
aEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJ
VENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwotICAgIHZvaWQgY29tcGls
ZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUlzQ2VsbFdp
dGhUeXBlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KE5vZGUqKTsK
QEAgLTEzNjMsNyArMTM2MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5
TGVuZ3RoKE5vZGUqKTsKIAotICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CiAKICAgICB2b2lkIGNvbXBp
bGVQYXJzZUludChOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI3OTg0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSwyNiArMzExLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9i
YWJseSBkbyB0aGlzIGluIGNvbnN0YW50IGZvbGRpbmcgYnV0IHRoaXMgY3VycmVudGx5IHJlbGll
cyBvbiBPU1IgZXhpdCBoaXN0b3J5OgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFu
Y2U6IHsKLSAgICAgICAgICAgIGlmICghbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCktPmlzQ2VsbENv
bnN0YW50KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGlmIChtX25v
ZGUtPmNoaWxkMigpLm5vZGUoKS0+YXNDZWxsKCkgIT0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCht
X25vZGUsIGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKLQotICAgICAgICAgICAgfSBlbHNlIGlmICghbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZUluZm9GbGFncykpIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBvcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCB3ZSB3aWxsIG5vdCBzZWUgYSBmdW5jdGlv
biB0aGF0IGhhcyBhIGN1c3RvbSBpbnN0YW5jZW9mIG9wZXJhdGlvbiBhcyB0aGV5IHNob3VsZCBi
ZSByYXJlLgotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9ub2Rl
SW5kZXgsIFNwZWNOb25lLCBDaGVja1R5cGVJbmZvRmxhZ3MsIG1fbm9kZS0+b3JpZ2luLCBPcElu
Zm8oSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIEVkZ2UobV9ub2RlLT5jaGlsZDEoKS5u
b2RlKCksIENlbGxVc2UpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0
YW50KG1fbm9kZSwganNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGxvdCBvZiBzdHJpbmcgY29uc3RhbnQtZm9s
ZGluZyBydWxlcyBoZXJlLiBJdCB3b3VsZCBiZSBncmVhdCB0bwogICAgICAgICAvLyBtb3ZlIHRo
ZXNlIHRvIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlciBvbmNlIEFic3RyYWN0VmFsdWUgY2FuIHN1
cHBvcnQgTGF6eUpTVmFsdWUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTUyMDQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDgg
KzI3NSw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIElzQ2FsbGFibGU6CiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgogICAgIGNhc2UgSXNUeXBl
ZEFycmF5VmlldzoKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICBjYXNlIE92ZXJy
aWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIEluc3RhbmNl
T2ZDdXN0b206CiAgICAgY2FzZSBEb3VibGVSZXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OTcsMTIgKzE0OTcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVPZjoKICAg
ICAgICAgICAgIGNvbXBpbGVUeXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja1R5cGVJbmZv
RmxhZ3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0lu
c3RhbmNlOgotICAgICAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCk7Ci0gICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICAgICAgY29t
cGlsZUluc3RhbmNlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI3MTMsNjUgKzEyNzA3
LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpCi0gICAgewotICAgICAgICBGcm96
ZW5WYWx1ZSogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBtX25vZGUtPmNlbGxPcGVyYW5k
KCk7Ci0gICAgICAgIEFTU0VSVChkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbi0+Y2VsbCgpLT5p
bmhlcml0czxKU0Z1bmN0aW9uPih2bSgpKSk7Ci0KLSAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9y
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGhhc0luc3RhbmNl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLQotICAgICAgICBMQmFzaWNCbG9jayBk
ZWZhdWx0SGFzSW5zdGFuY2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAgIC8vIFVubGlrZSBp
biB0aGUgREZHLCB3ZSBkb24ndCB3b3JyeSBhYm91dCBjbGVhbmluZyB0aGlzIGNvZGUgdXAgZm9y
IHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgcHJvdmVuIHRoZSBoYXNJbnN0YW5jZVZhbHVlIGlzIGEg
Y29uc3RhbnQgYXMgQjMgc2hvdWxkIGZpeCBpdCBmb3IgdXMuCi0KLSAgICAgICAgVmFsdWVGcm9t
QmxvY2sgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJv
b2xlYW5UcnVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhhc0luc3Rh
bmNlLCBmcm96ZW5Qb2ludGVyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVuc3VyZShj
b250aW51YXRpb24pLCB1bnN1cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7Ci0KLSAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhkZWZhdWx0SGFzSW5zdGFuY2UsIGNv
bnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQudGVzdElzWmVybzMyKAotICAgICAg
ICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIoY29uc3RydWN0b3IsIG1faGVhcHMuSlNDZWxsX3R5
cGVJbmZvRmxhZ3MpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlKSkpOwotICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0K
LSAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAg
IHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
UmVzdWx0LCBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoKQotICAgIHsKLSAgICAgICAgc3BlY3VsYXRlKAot
ICAgICAgICAgICAgQmFkVHlwZUluZm9GbGFncywgbm9WYWx1ZSgpLCBudWxscHRyLAotICAgICAg
ICAgICAgbV9vdXQudGVzdElzWmVybzMyKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVy
b0V4dDMyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZv
RmxhZ3MpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT50eXBlSW5m
b09wZXJhbmQoKSkpKTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZigp
CiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKKworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CiAgICAgICAgIAotICAgICAg
ICBMVmFsdWUgdmFsdWU7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGJvb2wgdmFsdWVJ
c0NlbGw7CiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNDZWxsOwotICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAgICAgICAgICAgJiYgbV9ub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICAgICAgdmFsdWUgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgewogICAgICAgICAgICAgcHJvdG90eXBlID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVJc0NlbGwgPSB0
cnVlOwogICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgcHJvdG90eXBlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVJc0NlbGwgPSBhYnN0cmFjdFZh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CiAgICAgICAgICAgICBwcm90
b3R5cGVJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVj
Q2VsbCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMjgwMSwxNCArMTI3NTMsNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5ncFNjcmF0
Y2goMSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52YWxpZEdQ
UlJlZzsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZG9uZUp1bXA7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewotICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNDZWxsID0gaml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZUdQUik7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5ib3hCb29sZWFuUGF5bG9hZChm
YWxzZSwgcmVzdWx0R1BSKTsKLSAgICAgICAgICAgICAgICAgICAgZG9uZUp1bXAgPSBqaXQuanVt
cCgpOwotICAgICAgICAgICAgICAgICAgICBpc0NlbGwubGluaygmaml0KTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVJc0NlbGwp
CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2Vs
bChwcm90b3R5cGVHUFIpKTsKQEAgLTEyODMzLDE0ICsxMjc3NywxMiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIEpf
SklUT3BlcmF0aW9uX0dTc2lKSiBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5j
ZU9mT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLApAQCAtMTI4NTAsNyArMTI3OTIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IHNlbWFudGljTm9kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5zdGFu
Y2VPZk9wdGltaXplLCByZXN1bHRHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CkBAIC0xMjg2NCw5ICsxMjgwNiw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Zmlu
YWxpemUobGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChkb25lSnVtcC5pc1NldCgpKQotICAgICAgICAgICAgICAgICAgICBkb25l
SnVtcC5saW5rKCZqaXQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIHJldHVybnMgYSBib3hlZCBib29sZWFuLgpAQCAtMTI4NzcsNyArMTI4MTYsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHZh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGNvbnN0
cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGNvbnN0
cnVjdG9yID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIGhh
c0luc3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAogICAgICAgICBzZXRC
b29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluc3RhbmNlT2ZD
dXN0b20sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFz
SW5zdGFuY2UpKSk7CkBAIC0xODk4NywxNSArMTg5MjYsMTEgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBMVmFsdWUgaXNGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZh
bHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBw
cm92ZW47Ci0gICAgICAgIHJldHVybiBpc1R5cGUoY2VsbCwgSlNGdW5jdGlvblR5cGUpOworICAg
ICAgICByZXR1cm4gaXNDZWxsV2l0aFR5cGUoY2VsbCwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9u
VHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9LCBTcGVjRnVuY3Rpb24sIHR5cGUpOwogICAgIH0K
ICAgICBMVmFsdWUgaXNOb3RGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNGdW5jdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gaXNOb3RUeXBlKGNlbGwsIEpTRnVuY3Rpb25U
eXBlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoaXNGdW5jdGlvbihjZWxsLCB0
eXBlKSk7CiAgICAgfQogICAgICAgICAgICAgCiAgICAgTFZhbHVlIGlzRXhvdGljRm9yVHlwZW9m
KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
MSwxMyArNjIxLDEzIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW4K
ICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrRm9yYmlkZGVuUHJvdG90
eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUg
cHJvdG8pCitzdGF0aWMgYm9vbCBjaGVja0ZvcmJpZGRlblByb3RvdHlwZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdmFsdWUsIEpTT2JqZWN0KiBwcm90bykKIHsKICAg
ICBpZiAodmFsdWUgPT0gcHJvdG8pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHByb3RvIGhhc24ndCBiZWVuIG1vZGlmaWVk
IHRvIGluY2x1ZGUgdmFsdWUuCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCBwcm90bywgdmFsdWUpOworICAgIHJldHVybiBwcm90by0+aXNQcm90
b3R5cGVPZihnbG9iYWxPYmplY3QsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCkBAIC02OTQsNyArNjk0LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVk
U2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogICAgICAgICAgICAgaWYgKHZhbHVlLmluaGVyaXRzPFBy
b3h5T2JqZWN0Pih2bSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNl
KGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkpCisgICAgICAgICAgICBpZiAodmFsdWUu
aXNPYmplY3QoKSAmJiBvYmplY3QtPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBhc09iamVj
dCh2YWx1ZSkpKQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxP
YmplY3QsIGFycmF5LT5sZW5ndGgoKSwgdmFsdWUpOwogCiAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMyLDggKzkz
MiwyMiBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CiAgICAg
SnVtcCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90SGVh
cEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIs
IEhlYXBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2Vs
bEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQot
ICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQorICAgIEp1bXAgYnJhbmNo
SWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIs
IEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSk7IH0K
KyAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmTm90VHlwZShjZWxsR1BSLCBKU1R5cGVSYW5nZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0Jv
dW5kRnVuY3Rpb25UeXBlIH0pOyB9CisKKyAgICB2b2lkIGlzQ2VsbFdpdGhUeXBlKEdQUlJlZyBj
ZWxsR1BSLCBKU1R5cGVSYW5nZSByYW5nZSwgR1BSUmVnIGRzdCkKKyAgICB7CisgICAgICAgIGlm
IChyYW5nZS5sYXN0ID09IHJhbmdlLmZpcnN0KSB7CisgICAgICAgICAgICBjb21wYXJlOChFcXVh
bCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKHJhbmdlLmZpcnN0KSwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIEFTU0VSVChyYW5nZS5sYXN0ID4gcmFuZ2UuZmlyc3QpOworICAgICAgICBH
UFJSZWcgc2NyYXRjaCA9IHNjcmF0Y2hSZWdpc3RlcigpOworICAgICAgICBsb2FkOChBZGRyZXNz
KGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAg
ICAgc3ViMzIoVHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0KSwgc2NyYXRjaCk7CisgICAgICAgIGNv
bXBhcmUzMihCZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihyYW5nZS5sYXN0IC0g
cmFuZ2UuZmlyc3QpLCBkc3QpOworICAgIH0KICAgICAKICAgICB2b2lkIGlzRW1wdHkoR1BSUmVn
IGdwciwgR1BSUmVnIGRzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9zZXRfcHJpdmF0ZV9icmFuZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfcHJvdG90eXBlX29mKQotICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERF
RklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2Vt
cHR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzQsNyAr
NTc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5p
dF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfb3Zl
cnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNywzNCArMTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmpl
Y3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwotICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0
b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0
YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5jZVZhbHVlOwotCi0gICAgZW1pdExvYWRQ
YXlsb2FkKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsKLSAgICAvLyBXZSBkb24ndCBqdW1wIGlm
IHdlIGtub3cgd2hhdCBTeW1ib2wuaGFzSW5zdGFuY2Ugd291bGQgZG8uCi0gICAgSnVtcCBoYXNJ
bnN0YW5jZVZhbHVlTm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwoaGFzSW5zdGFuY2VWYWx1
ZSk7Ci0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVlID0gYnJhbmNoUHRyKE5vdEVxdWFs
LCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpKTsKLQotICAgIC8vIFdlIGtub3cg
dGhhdCBjb25zdHJ1Y3RvciBpcyBhbiBvYmplY3QgZnJvbSB0aGUgd2F5IGJ5dGVjb2RlIGlzIGVt
aXR0ZWQgZm9yIGluc3RhbmNlb2YgZXhwcmVzc2lvbnMuCi0gICAgZW1pdExvYWRQYXlsb2FkKGNv
bnN0cnVjdG9yLCByZWdUMCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGNvbnN0cnVjdG9yICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJyBpLmUuIHRoZSBvYmplY3QgaXMgbm90IGEgQy1BUEkg
dXNlciBub3IgYSBib3VuZCBmdW5jdGlvbi4KLSAgICB0ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlKSwgcmVnVDApOwotICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKLQot
ICAgIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7Ci0gICAgY3VzdG9taGFzSW5z
dGFuY2VWYWx1ZS5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7
Ci0KLSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsK
LQotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwpAQCAtMTU3LDggKzEyOSw2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHIKICAgICBlbWl0TG9hZFBheWxvYWQodmFsdWUs
IHJlZ1QyKTsKICAgICBlbWl0TG9hZFBheWxvYWQocHJvdG8sIHJlZ1QxKTsKIAotICAgIC8vIENo
ZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFsIG11c3QgYmUgYSBjZWxsIC0gdGhpcyBp
cyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5bWJvbC5oYXNJbnN0YW5jZS4KLSAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodmFsdWUpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4o
CkBAIC0yMTEsOSArMTgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3Vz
dG9tKAogICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9o
YXNJbnN0YW5jZVZhbHVlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgZW1pdExvYWRQYXlsb2FkKGNvbnN0cnVjdG9yLCByZWdUMik7Ci0gICAgZW1pdExvYWQoaGFz
SW5zdGFuY2VWYWx1ZSwgcmVnVDQsIHJlZ1QzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkluc3RhbmNlT2ZDdXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAg
IGVtaXRMb2FkKGNvbnN0cnVjdG9yLCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGhhc0lu
c3RhbmNlVmFsdWUsIHJlZ1Q1LCByZWdUNCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25J
bnN0YW5jZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJl
Z1Q1LCByZWdUNCkpOwogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJl
dmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSwzMiArMTIxLDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX25ld19vYmplY3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1
ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwotICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAgIFZpcnR1YWxSZWdp
c3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5jZVZhbHVlOwotCi0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihoYXNJbnN0YW5jZVZhbHVlLCByZWdUMCk7Ci0KLSAg
ICAvLyBXZSBkb24ndCBqdW1wIGlmIHdlIGtub3cgd2hhdCBTeW1ib2wuaGFzSW5zdGFuY2Ugd291
bGQgZG8uCi0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVlID0gYnJhbmNoUHRyKE5vdEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmZ1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpKTsKLQotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8vIENoZWNrIHRoYXQg
Y29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGkuZS4gdGhlIG9iamVj
dCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgotICAgIHRlc3Q4KFpl
cm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7Ci0gICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKLSAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7Ci0KLSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7Ci0gICAgbW92ZShU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDApOwotCi0gICAgZG9uZS5saW5r
KHRoaXMpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKLX0KLQogdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5zdGFu
Y2VvZj4oKTsKQEAgLTE1OSw4ICsxMzMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KGNvbnN0IEluc3RyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDIpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHJlZ1QxKTsKICAgICAKLSAgICAvLyBD
aGVjayB0aGF0IHByb3RvIGFyZSBjZWxscy4gYmFzZVZhbCBtdXN0IGJlIGEgY2VsbCAtIHRoaXMg
aXMgY2hlY2tlZCBieSB0aGUgZ2V0X2J5X2lkIGZvciBTeW1ib2wuaGFzSW5zdGFuY2UuCi0gICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QyLCB2YWx1ZSk7CiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yIGdlbigKQEAgLTMyNiwxMiArMjk4LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Nl
bGxfd2l0aF90eXBlKGNvbnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJh
bmQ7Ci0gICAgaW50IHR5cGUgPSBieXRlY29kZS5tX3R5cGU7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5v
dENlbGwocmVnVDApOwogCi0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSksIHJlZ1QwKTsKKyAg
ICBpc0NlbGxXaXRoVHlwZShyZWdUMCwgSlNUeXBlUmFuZ2UgeyBieXRlY29kZS5tX2ZpcnN0VHlw
ZSwgYnl0ZWNvZGUubV9sYXN0VHlwZSB9LCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
Mjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMyNCwxOCArMjMyNCwxNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0R2V0CiB9CiAjZW5kaWYKIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0
cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5z
dGFuY2UpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUg
Y29uc3RydWN0b3IgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZENvbnN0cnVjdG9yKTsKICAgICBK
U1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEhhc0luc3Rh
bmNlKTsKIAotICAgIGlmIChjb25zdHJ1Y3Rvci0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpCi0gICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiAw
OworICAgIHJldHVybiBqc0luc3RhbmNlb2ZPcGVyYXRvcihnbG9iYWxPYmplY3QsIHZhbHVlLCBj
b25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGlj
IEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCkBAIC0yODY3LDM0ICsyODY2LDMyIEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXNoV2kKICAgICByZXR1cm4gSlNXaXRoU2NvcGU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUsIG9iamVjdCk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3RvKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9m
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRQcm90bykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
VmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAKICAgICBz
dHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICBib29sIHJlc3VsdCA9IEpT
T2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pOwor
ICAgIGJvb2wgcmVzdWx0ID0ganNJc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgcHJvdG8sIGFz
T2JqZWN0KHZhbHVlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9m
T3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiB2
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAK
LSAgICBib29sIHJlc3VsdCA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgcHJvdG8pOworICAgIGJvb2wgcmVzdWx0ID0ganNJc1Byb3RvdHlwZU9mKGds
b2JhbE9iamVjdCwgcHJvdG8sIGFzT2JqZWN0KHZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgaWYgKHN0
dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHZhbHVlLnN0cnVj
dHVyZU9yTnVsbCh2bSkpKQorICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJp
Yyh2bSwgY29kZUJsb2NrLCB2YWx1ZS0+c3RydWN0dXJlKHZtKSkpCiAgICAgICAgIHJlcGF0Y2hJ
bnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZSwgcHJvdG8sICpzdHViSW5m
bywgcmVzdWx0KTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDggKzI3MSw5IEBAIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXQKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0
LCBFQ01BTW9kZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXNoV2l0
aFNjb3BlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNl
bGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKLUpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3Rv
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
SlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKK0pTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRD
b25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMs
IGludDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50
MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBpbnQz
Ml90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3Qg
bnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUsIENh
bGxGcmFtZSosIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90LCBpbnQzMl90IGxlbmd0aCkpOwpAQCAtMzAzLDcgKzMwNCw2IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRXhjZXB0aW9uRnV6eldpdGhDYWxsRnJhbWUsIHZvaWQsIChWTSopKTsKIAogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9u
SWZDYXRjaGFibGUsIEpTQ2VsbCosIChWTSopKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uVmFsdWVBZGQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTks
MjEgKzEyMTksMTggQEAgdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZQog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
IHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91bmQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0Owog
ICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlVmFsdWUuaXNDZWxsKCkpOyAvLyBzaG91bGRD
b25zaWRlckNhY2hpbmcgcmVqZWN0cyBub24tY2VsbHMuCi0gICAgCiAgICAgaWYgKGZvcmNlSUNG
YWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAg
IAogICAgIHsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIAotICAgICAgICBKU0NlbGwqIHZhbHVlID0g
dmFsdWVWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1
ZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAg
ICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IHByb3RvdHlwZVZhbHVlKTsKQEAgLTEyNzksMTEgKzEyNzYsMTEgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuYwogfQogCiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U1ZhbHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdhc0ZvdW5kKQogewogICAgIFN1cGVyU2Ft
cGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBpZiAodHJ5Q2FjaGVJbnN0
YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBwcm90b3R5cGVWYWx1
ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgIGlmICh0cnlDYWNo
ZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlLCBwcm90b3R5cGUsIHN0
dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKICAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAyNzk4
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsCiB2b2lkIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsICBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0
cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7Cit2b2lkIHJlcGF0Y2hJbnN0YW5jZU9m
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBwcm90
b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtNb25v
bW9ycGhpY0NhbGwoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBK
U09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwog
dm9pZCBsaW5rRGlyZWN0Q2FsbChDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sq
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rU2xvd0Zv
cihDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjA5LDIzICs2MDksMTcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
c3RhbmNlbwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbnN0YW5jZW9mPigpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7
CiAgICAgSlNWYWx1ZSBwcm90byA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3RvdHlwZSk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU09iamVjdDo6ZGVmYXVsdEhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvKSkpOworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oanNJc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgcHJvdG8sIGFzT2JqZWN0
KHZhbHVlKSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNl
b2ZfY3VzdG9tKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0KICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wSW5zdGFuY2VvZkN1c3RvbT4oKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0
b3IgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9jb25zdHJ1Y3Rvcik7CiAgICAg
SlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1faGFzSW5zdGFuY2VWYWx1ZSk7Ci0KLSAgICBBU1NFUlQoY29uc3RydWN0b3IuaXNPYmplY3Qo
KSk7Ci0gICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUgIT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIHx8ICFjb25zdHJ1Y3Rvci5nZXRPYmpl
Y3QoKS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKCkpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oY29uc3RydWN0b3IuZ2V0
T2JqZWN0KCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFs
dWUpKTsKLSAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzSW5zdGFuY2VvZk9wZXJhdG9yKGdsb2JhbE9iamVjdCwgdmFsdWUsIGNvbnN0cnVjdG9y
LCBoYXNJbnN0YW5jZVZhbHVlKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdHJ5X2dldF9ieV9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNzk4NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NiwzNSArMTI4Niw2IEBAIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50
T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwgT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZ2V0KG1fZHN0LCB0MykKLSAgICBzdG9yZWkg
Qm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0KLSAgICAjIEZpcnN0IGNoZWNrIGlm
IGhhc0luc3RhbmNlVmFsdWUgaXMgdGhlIG9uZSBvbiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9s
Lmhhc0luc3RhbmNlXQotICAgIGdldChtX2hhc0luc3RhbmNlVmFsdWUsIHQwKQotICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MiwgLm9wT3ZlcnJp
ZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BPdmVycmlkZXNoYXNJ
bnN0YW5jZVZhbHVlTm90Q2VsbAotCi0gICAgIyBXZSBkb24ndCBuZWVkIGhhc0luc3RhbmNlVmFs
dWUncyB0YWcgcmVnaXN0ZXIgYW55bW9yZS4KLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
LSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKLSAgICBsb2FkcCBK
U0dsb2JhbE9iamVjdDo6bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0
MV0sIHQxCi0gICAgYmluZXEgdDEsIHQyLCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90
RGVmYXVsdAotCi0gICAgIyBXZSBrbm93IHRoZSBjb25zdHJ1Y3RvciBpcyBhIGNlbGwuCi0gICAg
Z2V0KG1fY29uc3RydWN0b3IsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGVja2VkKHNpemUsIHQwLCB0MSkKLSAgICB0YnogSlNDZWxsOjptX2ZsYWdzW3QxXSwgSW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgdDAKLSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi0KLS5vcE92ZXJyaWRlc2hhc0luc3RhbmNl
VmFsdWVOb3RDZWxsOgotLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdERlZmF1bHQ6Ci0g
ICAgc3RvcmVpIDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1l
bmQpCi0KIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKQEAg
LTEzNjksOSArMTM0MCwxMSBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlw
ZSwgCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MSwgdDAsIHQzKQogICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAubm90Q2VsbENhc2UKLSAg
ICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlwZSwgdDApCi0gICAgY2JlcSBKU0Nl
bGw6Om1fdHlwZVt0M10sIHQwLCB0MQotICAgIHJldHVybihCb29sZWFuVGFnLCB0MSkKKyAgICBn
ZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fZmlyc3RUeXBlLCB0MCkKKyAgICBiYmIgSlND
ZWxsOjptX3R5cGVbdDNdLCB0MCwgLm5vdENlbGxDYXNlCisgICAgZ2V0dShzaXplLCBPcElzQ2Vs
bFdpdGhUeXBlLCBtX2xhc3RUeXBlLCB0MikKKyAgICBiYmEgSlNDZWxsOjptX3R5cGVbdDNdLCB0
MiwgLm5vdENlbGxDYXNlCisgICAgcmV0dXJuKEJvb2xlYW5UYWcsIDEpCiAubm90Q2VsbENhc2U6
CiAgICAgcmV0dXJuKEJvb2xlYW5UYWcsIDApCiBlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEzNDYsMjkgKzEzNDYsNiBAQCBsbGludE9w
V2l0aFByb2ZpbGUob3BfYml0bm90LCBPcEJpdG5vdCwgCiBlbmQpCiAKIAotbGxpbnRPcChvcF9v
dmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV9kc3QsIHQzKQotCi0gICAgZ2V0KG1faGFzSW5z
dGFuY2VWYWx1ZSwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDAp
Ci0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2ds
b2JhbE9iamVjdFt0Ml0sIHQyCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Q
cm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb25bdDJdLCB0MgotICAgIGJxbmVxIHQwLCB0Miwg
Lm9wT3ZlcnJpZGVzSGFzSW5zdGFuY2VOb3REZWZhdWx0U3ltYm9sCi0KLSAgICBnZXQobV9jb25z
dHJ1Y3RvciwgdDEpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0g
ICAgdGJ6IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Us
IHQxCi0gICAgb3JxIFZhbHVlRmFsc2UsIHQxCi0gICAgc3RvcmVxIHQxLCBbY2ZyLCB0MywgOF0K
LSAgICBkaXNwYXRjaCgpCi0KLS5vcE92ZXJyaWRlc0hhc0luc3RhbmNlTm90RGVmYXVsdFN5bWJv
bDoKLSAgICBzdG9yZXEgVmFsdWVUcnVlLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1l
bmQpCi0KLQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKQEAgLTE0MzksMTMgKzE0MTYs
MTQgQEAgZWxzZQogZW5kCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBl
LCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQot
ICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKICAgICBnZXQobV9v
cGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MykKICAg
ICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQotICAgIGNiZXEgSlNDZWxsOjpt
X3R5cGVbdDNdLCB0MCwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICByZXR1cm4odDEp
CisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAg
YmJiIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIC5ub3RDZWxsQ2FzZQorICAgIGdldHUoc2l6ZSwg
T3BJc0NlbGxXaXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCisgICAgYmJhIEpTQ2VsbDo6bV90eXBl
W3QzXSwgdDIsIC5ub3RDZWxsQ2FzZQorICAgIHJldHVybihWYWx1ZVRydWUpCiAubm90Q2VsbENh
c2U6CiAgICAgcmV0dXJuKFZhbHVlRmFsc2UpCiBlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAy
Nzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNiBAQCBjb25zdCBOdW1iZXJPZlR5
cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25z
dCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29uc3RleHByIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSBjb25zdGV4cHIgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29uc3QgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZM
aW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZQogCiAjIEJ5dGVj
b2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw2IEBAIHN0
cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1F
VEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0
eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0
eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgPSBib29s
ICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgQ3VzdG9tSGFz
SW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2Up
OwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wpOwogICAgIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9E
X1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5KTsKIApAQCAtMTU1LDcgKzE1Miw2IEBAIHN0
cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6
OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmN1c3Rv
bUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5LCBc
CiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRSgKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlv
bi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MCw3ICs2MSw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5
cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVD
YWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlv
blByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFz
SW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAx
LCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3MsIGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VT
eW1ib2wpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAKQEAgLTk5LDQgKzEwMCwxNCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1CiAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY0hhc0luc3RhbmNlU3ltYm9sLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOworCisgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdCh0aGlzVmFsdWUpLT5kZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0dldENhbGxEYXRhOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvCiAK
ICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwotICAgICAgICBBU1NFUlQoIWNhbGxlZS0+dGVt
cGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBwcm90b3R5cGVgIHdoaWNo
IGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICAgICAg
Ym9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgICAgICBib29sIGhhc0luc3RhbmNlID0g
Y2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpAQCAtMTA2LDEw
ICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1CiAgICAg
aWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKIAotICAgIEFT
U0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0p
KTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlz
IGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCi0gICAgQVNTRVJUKHBy
b3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgIGJvb2wgaGFz
SW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAg
ICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxOSArMTQ0LDYgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DbwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0
aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7CiB9CiAKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkp
KTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
LXsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5j
dGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7Ci19Ci0KIGlubGluZSBTdHJ1Y3R1cmUqIGdl
dEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEwLDExICsxOTcsNiBAQCBKU0JvdW5kRnVuY3Rpb24q
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1ib29s
IEpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOwotfQotCiBKU0JvdW5kRnVuY3Rpb246OkpTQm91
bmRGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFy
Z2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzLCBKU1N0cmluZyogbmFtZU1heUJlTnVsbCwgZG91YmxlIGxlbmd0aCkKICAgICA6IEJh
c2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJn
ZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMjc5ODQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOwotSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ2FsbCk7Ci1KU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNvbnN0cnVjdCk7Ci1KU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5jdGlvbik7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0KIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24g
QmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKLSAgICBz
dGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CkBAIC00OSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNCb3VuZEZ1
bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3Ms
IGRvdWJsZSBsZW5ndGgsIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsKTsKLSAgICAKLSAgICBzdGF0
aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24oKSB7IHJldHVybiBtX3Rhcmdl
dEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2Jv
dW5kVGhpcy5nZXQoKTsgfQpAQCAtNzEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQm91bmRGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsgCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZU
YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rpb24s
IG1fdGFyZ2V0RnVuY3Rpb24pOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
SlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdAogCiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3Rh
bmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgaW5s
aW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAvLyBUaGUgZmlyc3QgYW5kIGxhc3QgSlNUeXBl
IGFyZSBpbmNsdXNpdmUKIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgYm9vbCBjb250YWlucyhK
U1R5cGUgdHlwZSkgY29uc3QgeyByZXR1cm4gZmlyc3QgPD0gdHlwZSAmJiB0eXBlIDw9IGxhc3Q7
IH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgeyBvdXQucHJpbnQoIkpT
VHlwZVJhbmdlIHsgIiwgZmlyc3QsICIsICIsIGxhc3QsICIgfSIpOyB9CiAKICAgICBKU1R5cGUg
Zmlyc3Q7CiAgICAgSlNUeXBlIGxhc3Q7CkBAIC03MSw3ICs3Miw3IEBAIHN0cnVjdCBKU1R5cGVS
YW5nZSB7CiAgICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJh
dG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2Jq
ZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5h
bE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBl
KSBcCi0gICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBl
OjpKU0Z1bmN0aW9uVHlwZSkgXAorICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5j
dGlvblR5cGUsIEpTVHlwZTo6SlNCb3VuZEZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVy
bmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6TnVsbFNl
dHRlckZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKE51bGxTZXR0ZXJGdW5jdGlvbiwgSlNUeXBl
OjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUp
IFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVk
QXJyYXlUeXBlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSwxMiArMjE1LDYgQEAgY29uc3QgY2hhciog
SlNDZWxsOjpjbGFzc05hbWUoVk0mIHZtKSBjbwogICAgIHJldHVybiBjbGFzc0luZm8odm0pLT5j
bGFzc05hbWU7CiB9CiAKLWJvb2wgSlNDZWxsOjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBKU0NlbGw6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lv
biAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVy
U2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0Owog
ICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0OworICAgIGJvb2wgaXNKU0Z1bmN0aW9uKCkgY29uc3Q7
CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJik7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJik7
CiAgICAgdGVtcGxhdGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3Vy
cmVuY3koVk0mKTsKQEAgLTI1Myw3ICsyNTQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUsIGJvb2wpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0
NywxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdAogICAgIHJldHVybiBt
X3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94eVR5cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0
VHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0pTRnVuY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBtX3R5cGUgPT0gSlNGdW5jdGlvblR5cGUgfHwgbV90eXBlID09IEpTQm91bmRG
dW5jdGlvblR5cGU7Cit9CisKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgZ2V0Q2FsbERhdGEg
Y29uY3VycmVuY3ktc2FmZSBvbmNlIE5QQVBJIHN1cHBvcnQgaXMgcmVtb3ZlZC4KIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MDEKIHRlbXBsYXRlPENvbmN1
cnJlbmN5IGNvbmN1cnJlbmN5PgpAQCAtMjU0LDcgKzI1OSw3IEBAIEFMV0FZU19JTkxJTkUgVHJp
U3RhdGUgSlNDZWxsOjppc0NhbGxhYmwKIHsKICAgICBpZiAoIWlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7Ci0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSkKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1
ZTsKICAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgewog
ICAgICAgICBpZiBjb25zdGV4cHIgKGNvbmN1cnJlbmN5ID09IENvbmN1cnJlbmN5OjpNYWluVGhy
ZWFkKQpAQCAtMjc3LDcgKzI4Miw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3Ry
dWN0b3JXaXQKICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERh
dGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6
IFRyaVN0YXRlOjpGYWxzZTsKICAgICAvLyBXZSBrbm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3RE
YXRhIG9mIGJvdGggdHlwZXMgYXJlIGNvbmN1cnJlbmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNs
YXNzZXMgb2YgSlNGdW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlvbgogICAgIC8vIG5ldmVyIG92
ZXJyaWRlIGdldENvbnN0cnVjdERhdGEgKHRoaXMgaXMgZW5zdXJlZCBieSBBU1NFUlQgaW4gSlNG
dW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlvbikuCi0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSB8fCB0eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNG
dW5jdGlvbigpIHx8IHR5cGUoKSA9PSBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0
dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxs
RGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw3ICsxMDMsNiBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgTmF0
aXZlRXhlCiAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1f
ZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkp
CiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdCk7CiB9CiAKQEAgLTExMiw3ICsx
MTEsNiBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5j
dGlvbio+KHZtLCB0aGlzKSk7Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7
CiAgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERhdGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9u
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4KICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5n
ZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBB
U1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEpOwpAQCAtMTIyLDcgKzEyMCw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCAKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25U
eXBlKTsKICAgICAvLyBKU0NlbGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxp
ZXMgb24gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2
bSktPmdldENvbnN0cnVjdERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwog
ICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpn
ZXRDYWxsRGF0YSk7CkBAIC05MDYsMTYgKzkwMyw0IEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3Rh
dHVzIEpTRnVuY3Rpb246OnIKICAgICByZXR1cm4gUHJvcGVydHlTdGF0dXM6OlJlaWZpZWQ7CiB9
CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotdm9pZCBKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0Zs
YWdJbnZhcmlhbnRzKCkKLXsKLSAgICAvLyBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSdsbCBuZWVk
IHRvIHVwZGF0ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9Jbmhlcml0YW5jZS4KLSAgICBjb25z
dCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8odm0oKSk7Ci0gICAgaWYgKCEoaW5saW5lVHlw
ZUZsYWdzKCkgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSk7Ci0gICAgZWxzZQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpbmZvICE9IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKTsKLX0K
LSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3OTg0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEyLDEyICsyMTIsNiBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5U3RhdHVz
IHJlaWZ5TGF6eU5hbWVJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlCb3VuZE5hbWVJZk5lZWRlZChWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
dm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7Ci0jZWxzZQotICAgIHZvaWQgYXNz
ZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpIHsgfQotI2VuZGlmCi0KICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgdWludHB0cl90IG1fZXhlY3V0YWJsZU9y
UmFyZURhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDYgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdQogICAgIDog
QmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEo
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUlu
Zm9GbGFnSW52YXJpYW50cygpOwogfQogCiBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1
bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03ODEsNiArNzgxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgICAgIH0pOwogCiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wpXS5zZXQodm0sIHRoaXMsIGhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24pOworCiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRl
ci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+
JiBpbml0KSB7CiAgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpOwpAQCAtOTMxLDEzICs5MzMsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgfSk7CiAgICAgbV9wcm94eU9iamVjdFN0
cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBib29sIGlzQ2FsbGFibGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5p
dC5vd25lciwganNOdWxsKCksIGlzQ2FsbGFibGUpKTsKLSAgICAgICAgfSk7Ci0gICAgbV9jYWxs
YWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLmluaXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJs
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpbml0LnNldChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpLCBpc0NhbGxhYmxlKSk7CisgICAgICAg
ICAgICBpbml0LnNldChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQu
b3duZXIsIGpzTnVsbCgpKSk7CiAgICAgICAgIH0pOwogICAgIG1fcHJveHlSZXZva2VTdHJ1Y3R1
cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYg
aW5pdCkgewpAQCAtMTM1NSwxNSArMTM1MSw2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJh
cnJheUNyZWF0ZSkpOwogICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGlzQm91bmRGdW5jdGlvbikpOwotICAgICAg
ICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikpOwotICAgICAgICB9
KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjppbnN0YW5jZU9mKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygp
LCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpKTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVp
bHRpbkxvZyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1
aWx0aW5Mb2cpKTsKICAgICAgICAgfSk7CkBAIC0yMTg1LDcgKzIxNzIsNiBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKCiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVS
ZWNvcmRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9wcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5t
X2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9wcm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNSw3ICs0MjUsNiBAQCBwdWJsaWM6CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0
dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5
UmV2b2tlU3RydWN0dXJlOwogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVm
ZmVyU3RydWN0dXJlOwogCkBAIC04NDcsNyArODQ2LDYgQEAgcHVibGljOgogICAgIFN0cnVjdHVy
ZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVj
dHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3h5T2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm94eU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBT
dHJ1Y3R1cmUqIGNhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9CiAgICAgU3RydWN0dXJlKiBvcmlnaW5hbFJl
c3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzk4NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJIZWFwQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24uaCIKQEAgLTY0LDYgKzY1LDcgQEAgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmln
dXJhYmxlUHJvcGVydAogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlD
aGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1
cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyB9OwogY29uc3Qg
QVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVtZXJhYmlsaXR5RXJy
b3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFi
bGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ug
d3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyB9OworY29u
c3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJvciB7ICJpbnN0
YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9w
ZXJ0eS4iX3MgfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTT2Jq
ZWN0KSB9OwogCkBAIC0yMzQ2LDEyICsyMzQ4LDM0IEBAIHN0ZDo6b3B0aW9uYWw8U3RydWN0dXJl
OjpQcm9wZXJ0eUhhc2hFbnQKICAgICByZXR1cm4gc3RydWN0dXJlKHZtKS0+ZmluZFByb3BlcnR5
SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtaW5zdGFuY2VvZm9wZXJhdG9yCitib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFs
dWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJv
bCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKworICAgIGlmIChoYXNJbnN0YW5jZVZhbHVlID09IGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGRl
ZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKKworICAgIHJldHVybiBoYXNJ
bnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKTsKK30KKwogYm9v
bCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQogeworICAgIEFTU0VSVChoYXNJ
bnN0YW5jZVZhbHVlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFoYXNJbnN0YW5j
ZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgaGFzSW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxP
YmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKKyAgICBp
ZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBhdXRv
IGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAg
ICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGdsb2JhbE9i
amVjdCwgdGhpcykpOwpAQCAtMjM2Niw2OCArMjM5MCw1NiBAQCBib29sIEpTT2JqZWN0OjpoYXNJ
bnN0YW5jZShKU0dsb2JhbE9iamVjCiAgICAgICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKGds
b2JhbE9iamVjdCk7CiAgICAgfQogCi0gICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSh2bSkt
PnR5cGVJbmZvKCk7Ci0gICAgaWYgKGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgp
KSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRlZmF1bHRIYXNJ
bnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90b3R5cGUpKTsKLSAgICB9Ci0gICAgaWYg
KGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCF2
bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG1ldGhvZFRhYmxl
KHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAg
IH0KKyAgICBpZiAoaXNDYWxsYWJsZSh2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIAogICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9m
UGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIHRoaXMpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2
Mi8jc2VjLW9yZGluYXJ5aGFzaW5zdGFuY2UKK2Jvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgaGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkp
OwotfQorICAgIGlmICghaXNDYWxsYWJsZSh2bSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
Ym9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBpZiAoaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRoaXMpLT50YXJn
ZXRGdW5jdGlvbigpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAKICAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEpTVmFs
dWUgcHJvdG8gPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKwogICAgIGlmICghcHJv
dG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90
b3R5cGUgcHJvcGVydHkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc09iamVjdChwcm90byktPmlzUHJv
dG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh2YWx1ZSkpKTsKK30KKworYm9vbCBKU09i
amVjdDo6aXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogb2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgaWYgKCFvYmplY3RWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBvYmplY3QgPSBhc09iamVjdChvYmplY3RWYWx1ZSk7Ci0gICAgICAg
IGlmIChwcm90byA9PSBvYmplY3QpCisgICAgICAgIGlmIChvYmplY3QgPT0gdGhpcykKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAg
ICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pKSk7Ci19Ci0KIHZvaWQgSlNPYmplY3Q6
OmdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIERvbnRFbnVtUHJvcGVydGllc01vZGUgbW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1
LDcgQEAgY2xhc3MgU2lnbmF0dXJlOwogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwo
KS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYg
dmFsdWUuYXNDZWxsKCktPmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXND
ZWxsKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC04Miw2ICs4Miw3IEBAIGV4dGVybiBK
U19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGUKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFU
RSBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3Vy
YWJpbGl0eUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJpbGl0eUVycm9yOwogZXh0ZXJu
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3Bl
cnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcjsKK2V4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBBU0NJSUxpdGVyYWwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yOwogCiBjbGFz
cyBKU0ZpbmFsT2JqZWN0OwogCkBAIC02NzUsNyArNjc2LDggQEAgcHVibGljOgogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
dmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotICAgIHN0YXRpYyBi
b29sIGRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUg
cHJvdG90eXBlUHJvcGVydHkpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVmYXVsdEhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bVByb3RvdHlwZUNoYWluRGVwdGggPSA0
MDAwMDsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwpA
QCAtMTI0MCw4ICsxMjQyLDYgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VP
Zik7Ci0KIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVXaXRoQnV0
dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5
KQogewogICAgIEpTRmluYWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3ICgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lv
biAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDcgKzU0MCw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKIAogQUxXQVlTX0lOTElORSBDYWxsRGF0YSBnZXRDYWxs
RGF0YShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKIHsKLSAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpT
RnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxsLT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9
IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJl
c3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lIHx8IGNlbGwtPmlzVmFsaWRDYWxsZWUo
KSk7CkBAIC01NTksNyArNTU5LDcgQEAgaW5saW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEo
Vk0mIHZtLAogICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoY2VsbC0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwpOwogICAgIENhbGxEYXRh
IHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsK
ICAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgfHwgY2VsbC0+
aXNWYWxpZENhbGxlZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDCiAgICAgQ0FTRShGaW5hbE9iamVjdFR5cGUp
CiAgICAgQ0FTRShKU0NhbGxlZVR5cGUpCiAgICAgQ0FTRShKU0Z1bmN0aW9uVHlwZSkKKyAgICBD
QVNFKEpTQm91bmRGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShJbnRlcm5hbEZ1bmN0aW9uVHlwZSkK
ICAgICBDQVNFKE51bGxTZXR0ZXJGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShCb29sZWFuT2JqZWN0
VHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lv
biAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksOSArNTksMTAgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAg
ICBPYmplY3RUeXBlLAogICAgIEZpbmFsT2JqZWN0VHlwZSwKICAgICBKU0NhbGxlZVR5cGUsCi0g
ICAgSlNGdW5jdGlvblR5cGUsCiAgICAgSW50ZXJuYWxGdW5jdGlvblR5cGUsCiAgICAgTnVsbFNl
dHRlckZ1bmN0aW9uVHlwZSwKKyAgICBKU0Z1bmN0aW9uVHlwZSwKKyAgICBKU0JvdW5kRnVuY3Rp
b25UeXBlLAogICAgIEJvb2xlYW5PYmplY3RUeXBlLAogICAgIE51bWJlck9iamVjdFR5cGUsCiAg
ICAgRXJyb3JJbnN0YW5jZVR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogLy8gSW5saW5lIGZsYWdzLgogCiBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3Jl
IHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVj
dGFibGUuCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UgPSAxIDw8IDE7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldENh
bGxEYXRhID0gMSA8PCAyOyAvLyBOZWVkIHRoaXMgZmxhZyBpZiB5b3UgaW1wbGVtZW50IFtbQ2Fs
bGFibGVdXSBpbnRlcmZhY2UsIHdoaWNoIG1lYW5zIG92ZXJyaWRpbmcgZ2V0Q2FsbERhdGEuIFRo
ZSBvYmplY3QgbWF5IG5vdCBiZSBjYWxsYWJsZSBzaW5jZSBnZXRDYWxsRGF0YSBjYW4gc2F5IGl0
IGlzIG5vdCBjYWxsYWJsZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90ID0gMSA8PCAzOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVy
cmlkZXNUb1RoaXMgPSAxIDw8IDQ7IC8vIElmIHRoaXMgaXMgZmFsc2UgdGhlbiB0aGlzIHJldHVy
bnMgc29tZXRoaW5nIG90aGVyIHRoYW4gJ3RoaXMnLiBOb24tb2JqZWN0IGNlbGxzIHRoYXQgYXJl
IHZpc2libGUgdG8gSlMgaGF2ZSB0aGlzIHNldCBhcyBkbyBzb21lIGV4b3RpYyBvYmplY3RzLgpA
QCAtNDcsNyArNDYsNiBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2Vs
CiAKIC8vIE91dCBvZiBsaW5lIGZsYWdzLgogCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgODsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyA9IDEgPDwgOTsKIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgPSAxIDw8IDEwOwog
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8
IDExOwpAQCAtOTAsOCArODgsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBmbGFncygpIGNv
bnN0IHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFnczIpIDw8IG51bWJlck9m
SW5saW5lQml0cykgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFncyk7IH0KICAgICBib29s
IG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCk7IH0KLSAgICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8SW1wbGVtZW50c0hhc0luc3RhbmNlPigp
OyB9Ci0gICAgYm9vbCBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMTxJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlPigpOyB9CiAgICAg
Ym9vbCBvdmVycmlkZXNHZXRDYWxsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8
T3ZlcnJpZGVzR2V0Q2FsbERhdGE+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChpbmxp
bmVUeXBlRmxhZ3MoKSk7IH0KICAgICBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUoKSBjb25z
dCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPEhhc1N0YXRpY1Byb3BlcnR5VGFibGU+KCk7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBjbGFz
cyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKICAgICBz
dGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9i
amVjdFByb3RvRnVuY1ZhbHVlT2YpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRl
cik7CkBAIC02Myw3ICs2Miw3IEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05BVElW
RV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pmhhc093blByb3BlcnR5LCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEhhc093blByb3Bl
cnR5SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0eUlzRW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5j
UHJvcGVydHlJc0VudW1lcmFibGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvdHlwZUlzUHJvdG90
eXBlT2ZDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+X19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVm
aW5lR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+X19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0
dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Mik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+X19sb29rdXBHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CkBA
IC0xMjcsMzMgKzEyNiw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1
bmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVI
YXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAot
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0g
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkp
OwotCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNP
YmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwotICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCi0gICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotCi0gICAgSlNWYWx1
ZSB2ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmICghdi5pc09iamVjdCgp
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsK
LSAgICAgICAgaWYgKHYgPT0gdGhpc09iaikKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDM1IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBqc1R5cGVvZklzRnVuY3Rpb24oSlMKICAgICByZXR1cm4gcmVzdWx0ID09IFRyaVN0
YXRlOjpUcnVlOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wganNJc1Byb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBKU09iamVjdCogdmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXByb3RvdHlwZS5pc09iamVj
dCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIEluc3Rh
bmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworfQorCitBTFdBWVNfSU5MSU5F
IGJvb2wganNJbnN0YW5jZW9mT3BlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZh
bHVlKQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09i
amVjdCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
aWdodCBoYW5kIHNpZGUgb2YgaW5zdGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gaGFzSW5zdGFuY2VWYWx1ZQorICAgICAgICA/IGFzT2JqZWN0KGNvbnN0cnVjdG9yKS0+aGFz
SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkKKyAgICAgICAg
OiBhc09iamVjdChjb25zdHJ1Y3RvciktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUp
OworfQorCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCiB7CiAgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsMTIgKzQ4LDYgQEAgUHJveHlPYmplY3Q6OlByb3h5T2JqZWN0KFZNJiB2bSwgU3RydWN0dQog
ewogfQogCi1TdHJ1Y3R1cmUqIFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQpCi17Ci0gICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiB0YXJnZXQuaXNDYWxsYWJsZSh2bSkgPyBn
bG9iYWxPYmplY3QtPmNhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVj
dC0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKTsKLX0KLQogdm9pZCBQcm94eU9iamVjdDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRh
cmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTcxLDExICs2NSw2IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwKICAgICBKU09iamVjdCogdGFyZ2V0QXNPYmplY3QgPSBqc0Nhc3Q8SlNP
YmplY3QqPih0YXJnZXQpOwogCiAgICAgbV9pc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlz
Q2FsbGFibGUodm0pOwotICAgIGlmIChtX2lzQ2FsbGFibGUpIHsKLSAgICAgICAgVHlwZUluZm8g
aW5mbyA9IHN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkgJiYgaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlKCkpOwotICAgIH0KLQogICAgIG1faXNDb25zdHJ1Y3RpYmxlID0gdGFyZ2V0QXNP
YmplY3QtPmlzQ29uc3RydWN0b3Iodm0pOwogCiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0
YXJnZXRBc09iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmgJKHJldmlzaW9uIDI3OTg0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxNSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFByb3h5T2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKICAgICB7CiAgICAg
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldChnbG9iYWxPYmplY3QsIHRh
cmdldCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5wcm94
eU9iamVjdFN0cnVjdHVyZSgpOwogICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxQcm94eU9iamVjdD4odm0uaGVhcCkpIFByb3h5T2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0KIAot
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIGlzQ2FsbGFibGUpCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICB1bnNp
Z25lZCBmbGFncyA9IFN0cnVjdHVyZUZsYWdzOwotICAgICAgICBpZiAoaXNDYWxsYWJsZSkKLSAg
ICAgICAgICAgIGZsYWdzIHw9IChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlKTsKLSAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0
VHlwZSwgZmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMp
OworICAgICAgICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oUHJveHlPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgTm9uQXJyYXkgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9y
RW51bWVyYXRpb24oKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkNhY2hl
UHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NzcsNyArNzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBy
b3h5T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFs
dWUgaGFuZGxlcik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc3Ry
dWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0YXJnZXQpOwogCiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjc5ODQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnBy
b2Nlc3NVbnZlcmlmaWVkCiAgICAgICAgICAgICAgICAgbV9saXZlQ2VsbFBvaW50ZXJzLmFkZChj
YWxsZWUpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGNhbGxlZUNlbGwtPnR5
cGUoKSAhPSBKU0Z1bmN0aW9uVHlwZSkgeworICAgICAgICAgICAgaWYgKCFjYWxsZWVDZWxsLT5p
c0pTRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGNhbGxlZUNlbGwtPnZtKCksIGNhbGxlZUNlbGwpKQog
ICAgICAgICAgICAgICAgICAgICBhZGRDYWxsZWUob2JqZWN0KTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjc5ODQxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMTIgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEFuIGlzc3VlIGFib3V0IGV2YWx1YXRpbmcgaW5z
dGFuY2VvZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE2ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cGFydGlhbCByZXZlcnQgb2YgcjI3OTY2MSB0byBhZGRyZXNzIGNyYXNoZXMgb24gaU9TIERlYnVn
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yQmFzZS5oCShyZXZpc2lvbiAyNzk4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
IGNsYXNzIEpTRE9NQ29uc3RydWN0b3JCYXNlIDogcHVibGljIEpTRE8KIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gSlNET01PYmplY3Q7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IEpTQzo6T3Zl
cnJpZGVzR2V0Q2FsbERhdGE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0
YTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3
OTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTE0LDcgKzI5MTQsNiBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNo
cG9pbnRzIn0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05ld0ltcHVy
ZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50c307CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Oklz
SW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0lzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0fTsKICAgICAk
c3RydWN0dXJlRmxhZ3N7IkpTQzo6TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9ID0gMSBpZiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXNxdWVyYWRlc0FzVW5kZWZpbmVkfTsKLSAg
ICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIn0gPSAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciOwogICAgICAgICAKICAgICAjIFByb3RvdHlwZQogICAgIHVubGVzcyAoU2hvdWxkVXNl
R2xvYmFsT2JqZWN0UHJvdG90eXBlKCRpbnRlcmZhY2UpIHx8ICRpbnRlcmZhY2UtPmlzTmFtZXNw
YWNlT2JqZWN0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433615</attachid>
            <date>2021-07-15 13:01:30 -0700</date>
            <delta_ts>2021-07-16 07:20:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210715230128.patch</filename>
            <type>text/plain</type>
            <size>171426</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnQgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0IGFuZCBBcnJheS5wcm90b3R5cGUuZmluZExh
c3RJbmRleApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5h
bC1mdW5jdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0
YW5jZW9mLWludGVybmFsLWZ1bmN0aW9uLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZuKCkge30K
KyAgICB2YXIgYXJyID0gW107CisgICAgdmFyIHJlID0gLyg/OikvOworICAgIHZhciBkYXRlID0g
bmV3IERhdGU7CisgICAgdmFyIG1hcCA9IG5ldyBNYXA7CisgICAgdmFyIHNldCA9IG5ldyBTZXQ7
CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7
CisgICAgICAgIGFjYyArPSBmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uCisgICAgICAgICAgICAmJiBh
cnIgaW5zdGFuY2VvZiBBcnJheQorICAgICAgICAgICAgJiYgcmUgaW5zdGFuY2VvZiBSZWdFeHAK
KyAgICAgICAgICAgICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlCisgICAgICAgICAgICAmJiBtYXAg
aW5zdGFuY2VvZiBNYXAKKyAgICAgICAgICAgICYmIHNldCBpbnN0YW5jZW9mIFNldDsKKyAgICB9
CisgICAgaWYgKGFjYyAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2Yt
cHJpbWl0aXZlLWNlbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
aW5zdGFuY2VvZi1wcmltaXRpdmUtY2VsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQor
ICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgbnVtYmVyID0gNC41OworICAgIHZhciBz
dHJpbmcgPSAic3RyIjsKKyAgICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7CisgICAgdmFyIGJpZ2lu
dCA9IDEwbjsKKworICAgIHZhciBhY2MgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU3
OyArK2kpIHsKKyAgICAgICAgYWNjICs9IG51bWJlciBpbnN0YW5jZW9mIEZvbworICAgICAgICAg
ICAgfHwgc3RyaW5nIGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCBzeW1ib2wgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IGJpZ2ludCBpbnN0YW5jZW9mIEJhcjsKKyAgICB9Cisg
ICAgaWYgKGFjYykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOwor
fSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZl
LW5vbi1jZWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3Rh
bmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7
fQorICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyArPSB1bmRlZmluZWQgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IG51bGwgaW5zdGFuY2VvZiBCYXIKKyAgICAgICAgICAg
IHx8IHRydWUgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IGkgaW5zdGFuY2VvZiBCYXI7
CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LXByb3h5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNl
b2YtcHJveHkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5z
dGFuY2VvZi1wcm94eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisoZnVuY3Rp
b24oKSB7CisgICAgZnVuY3Rpb24gVGFyZ2V0KCkge30KKyAgICB2YXIgdmFsdWUgPSBuZXcgVGFy
Z2V0KCk7CisgICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KFRhcmdldCwgUmVmbGVjdCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGlmICghKHZhbHVlIGlu
c3RhbmNlb2YgcHJveHkpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1j
ZWxsLXdpdGgtdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
cy1jZWxsLXdpdGgtdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
CisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGlzQXJyYXkgPSAkdm0uY3JlYXRlQnVpbHRpbigiKGZ1
bmN0aW9uIChjKSB7IHJldHVybiBAaXNBcnJheShjKTsgfSkiKTsKKyAgICBub0lubGluZShpc0Fy
cmF5KTsKKworICAgIHZhciBzeW0gPSBTeW1ib2woKTsKKyAgICB2YXIgYXJyID0gW107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBpZiAodHlwZW9mICJmb28i
ICE9PSAic3RyaW5nIiB8fCB0eXBlb2YgaSA9PT0gInN0cmluZyIgfHwKKyAgICAgICAgICAgIHR5
cGVvZiBzeW0gIT09ICJzeW1ib2wiIHx8IHR5cGVvZiBhcnIgPT09ICJzeW1ib2wiIHx8CisgICAg
ICAgICAgICAhaXNBcnJheShhcnIpIHx8IGlzQXJyYXkoc3ltKSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDogSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjc5OTU1KQorKysgSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk5LDkgKzE1OTksNiBAQCB0
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2NvCiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVy
YXRvcnMvc2NvcGUtcGFyYW0tcmVzdC1lbGVtLXZhci1vcGVuLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtvdXRzaWRlwrssIMKraW5zaWRlwrspIHRv
IGJlIHRydWUnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2luc3RhbmNlb2YvcHJvdG90eXBl
LWdldHRlci13aXRoLXByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogZ2V0
dGVyIGZvciAncHJvdG90eXBlJyBjYWxsZWQiCi0gIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9y
OiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtYW5kLWFzc2lnbm1lbnQtb3BlcmF0b3Itbm9uLXNp
bXBsZS1saHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBzaG91bGQg
bm90IGJlIGV2YWx1YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNz
aWdubWVudC9sZ2NsLW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5q
czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
OCBAQAorMjAyMS0wNy0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CisKKyAgICAgICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVm
LmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKGNvbnN0cnVjdG9ySGFzSW5zdGFuY2Up
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0aW9uUHJvdG90
eXBlLmpzOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3lt
Ym9sSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL09iamVjdFByb3Rv
dHlwZS5qczogQWRkZWQuCisgICAgICAgIChpc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlzaXRXZWFr
KToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxs
VmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9F
eGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9TdHJpbmcpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1
cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
byk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFuY2UpOgor
ICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZSk6CisgICAgICAgIChKU0M6
OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVN0
cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNGdW5jdGlvblNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1
bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2luc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHSGVh
cExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpxdWVyaWVkVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6OmFzSlNUeXBlUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1R5cGVJbmZvT3BlcmFuZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dHlwZUluZm9PcGVyYW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZv
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhUeXBl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVj
dGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpjaGVja0ZvcmJpZGRlblByb3RvdHlwZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmTm90RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNl
T2YpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlv
blByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91
bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgIChKU0M6OkpTVHlwZVJhbmdlOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSk6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzc2Vy
dFR5cGVJbmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm94eU9iamVjdFN0cnVjdHVyZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtBdXhpbGlhcnlBbmRWaXNpdE91dE9mTGluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
Z2V0SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpnZXRDb25zdHJ1Y3REYXRh
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjptYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUpOgor
ICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0hhc0luc3RhbmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlND
Ojpqc0luc3RhbmNlb2ZPcGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJp
ZmllZFN0YWNrVHJhY2VzKToKKwogMjAyMS0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzYW1wbGluZ1Byb2ZpbGVySWdub3JlRXh0
ZXJuYWxTb3VyY2VJRCBvcHRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
TW9kdWxlTG9hZGVyLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL051bWJl
ckNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dENvbnN0cnVjdG9yLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZU9wZXJhdGlvbnMuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL01hcFByb3Rv
dHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCiAkKFBST0pF
Q1RfRElSKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVp
bHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKKyQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwogJChQUk9K
RUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQsNiArMTE0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBcCisgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShy
ZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1l
cyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xv
dE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwotICAgIHN0YXRpY19hc3NlcnQoIShTdHJ1Y3R1cmVG
bGFncyAmIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCAidXNpbmcgY3VzdG9tSGFzSW5z
dGFuY2UiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwg
T3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3Bl
cnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAgICAgfkpTQ2FsbGJhY2tPYmplY3Qo
KTsKIApAQCAtMjAwLDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOwogCiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mLCBT
dWJzcGFjZUFjY2Vzcyk7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBjdXN0b21IYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgY3Vz
dG9tVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTIxMSw4ICsyMTEsNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAK
LSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBnZXRPd25TcGVjaWFsUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250
RW51bVByb3BlcnRpZXNNb2RlKTsKIAogICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsMTYgKzExNCwyNCBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6aW5pdChKU0dsCiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAKKyAgICBib29sIGhhc0N1c3RvbUhhc0luc3RhbmNlID0g
ZmFsc2U7CiAgICAgYm9vbCBoYXNDb252ZXJ0VG9UeXBlID0gZmFsc2U7CiAgICAgVmVjdG9yPEpT
T2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwogICAgIEpTQ2xhc3NS
ZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7CiAgICAgZG8geworICAgICAgICBpZiAoanNDbGFzcy0+
aGFzSW5zdGFuY2UpCisgICAgICAgICAgICBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IHRydWU7CiAg
ICAgICAgIGlmIChqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKQogICAgICAgICAgICAgaGFzQ29udmVy
dFRvVHlwZSA9IHRydWU7CiAgICAgICAgIGlmIChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBp
bml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5l
cy5hcHBlbmQoaW5pdGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykpOwogCisgICAgaWYgKGhhc0N1c3RvbUhhc0luc3RhbmNlKSB7CisgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2ws
CisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wuaGFzSW5zdGFuY2VdIl9zLCBjdXN0b21IYXNJbnN0YW5jZSksCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
fQogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAgIHRoaXMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsCiAgICAgICAgICAgICBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCkBAIC01MDEsMTQgKzUwOSwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5z
dGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOworICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9i
YWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmpl
Y3QqPih0aGlzT2JqZWN0KSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5j
bGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAg
ICAgICAgaWYgKEpTT2JqZWN0SGFzSW5zdGFuY2VDYWxsYmFjayBoYXNJbnN0YW5jZSA9IGpzQ2xh
c3MtPmhhc0luc3RhbmNlKSB7CkBAIC01MjAsMTEgKzUzMiwxMSBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5z
dGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9u
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw4ICsyODgsNiBAQCBib29sIEpTVmFsdWVJc0luc3Rh
bmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhnbG9iYWxP
YmplY3QsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdG9KUyhjb25z
dHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5m
bygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGpz
VmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksMTUgKzEwOSwzMSBAQCBkb25lOgogICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6YnVmZmVyLmRhdGEoKV07CiB9CiAKLXN0YXRpYyBib29sIGNvbnN0cnVjdG9ySGFz
SW5zdGFuY2UoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYsIEpT
VmFsdWVSZWYgcG9zc2libGVJbnN0YW5jZSwgSlNWYWx1ZVJlZiopCitzdGF0aWMgYm9vbCBjb25z
dHJ1Y3Rvckhhc0luc3RhbmNlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVj
dG9yUmVmLCBKU1ZhbHVlUmVmIHBvc3NpYmxlSW5zdGFuY2UsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7
CiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IHRvSlMoY29uc3RydWN0b3JS
ZWYpOwogICAgIEpTQzo6SlNWYWx1ZSBpbnN0YW5jZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCBwb3Nz
aWJsZUluc3RhbmNlKTsKLSAgICByZXR1cm4gSlNDOjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3Rh
bmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UsIGNvbnN0cnVjdG9yLT5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKKyAgICBpZiAoIWluc3RhbmNlLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9
IGNvbnN0cnVjdG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOworICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRp
b24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgeworICAgICAgICAqZXhjZXB0aW9uID0gdG9S
ZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBKU0M6Okluc3RhbmNlb2ZQcm90
b3R5cGVOb3RPYmplY3RFcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgYm9vbCByZXN1bHQgPSBKU0M6OmFzT2JqZWN0KHByb3RvKS0+aXNQcm90b3R5cGVPZihnbG9i
YWxPYmplY3QsIEpTQzo6YXNPYmplY3QoaW5zdGFuY2UpKTsKKyAgICBpZiAoaGFuZGxlRXhjZXB0
aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRp
ZFRocm93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
c3RhdGljIEpTQzo6SlNPYmplY3QqIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xh
c3NSZWYganNDbGFzcywgaWQgd3JhcHBlZE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDE5MSw2ICs0MTkxLDcgQEAKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEYx
NTNGRTI2OUEwODcyMDAwQjlDREUgLyogT2JqZWN0UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gT2JqZWN0UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlclg4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFF
MTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg5ODYsNiArODk4Nyw3IEBACiAJCQkJRTMwNjc3OTcxQjhCQzZG
NTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlci5qcyAqLywKIAkJCQlBNTI3MDQ4NjFEMDI3Qzg4MDAz
NTRDMzcgLyogTnVtYmVyQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAw
OURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAorCQkJCTg0RjE1M0ZFMjY5QTA4NzIw
MDBCOUNERSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNUUxQjY1RDlCMTAw
OURCMUVGIC8qIFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIx
MDA5REIxRUYgLyogUHJvbWlzZU9wZXJhdGlvbnMuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVF
NTAwRDAwNzUwIC8qIFByb21pc2VQcm90b3R5cGUuanMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyNzk5NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhpc1No
YXJlZFR5cGVkQXJyYXlWaWV3KSBcCiAgICAgbWFjcm8oaXNEZXRhY2hlZCkgXAogICAgIG1hY3Jv
KHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvcikgXAotICAgIG1hY3JvKGlzQm91bmRGdW5jdGlv
bikgXAotICAgIG1hY3JvKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGlu
c3RhbmNlT2YpIFwKKyAgICBtYWNybyhmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9s
KSBcCiAgICAgbWFjcm8oaXNBcnJheVNsb3cpIFwKICAgICBtYWNybyhzYW1lVmFsdWUpIFwKICAg
ICBtYWNybyhjb25jYXRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMJKHJldmlzaW9uIDI3OTk1NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtNDIsMjEgKzQyLDYgQEAgZnVuY3Rpb24gYXBwbHkodGhpc1ZhbHVlLCBh
cmd1bWVudFZhbHVlcwogICAgIHJldHVybiB0aGlzLkBhcHBseSh0aGlzVmFsdWUsIGFyZ3VtZW50
VmFsdWVzKTsKIH0KIAotQG92ZXJyaWRkZW5OYW1lPSJbU3ltYm9sLmhhc0luc3RhbmNlXSIKLWZ1
bmN0aW9uIHN5bWJvbEhhc0luc3RhbmNlKHZhbHVlKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQot
ICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChAaXNCb3VuZEZ1bmN0aW9uKHRoaXMpKQotICAgICAgICByZXR1cm4gQGhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbih0aGlzLCB2YWx1ZSk7Ci0KLSAgICB2YXIgdGFyZ2V0ID0gdGhpcy5wcm90
b3R5cGU7Ci0gICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJnZXQpOwotfQotCiBmdW5j
dGlvbiBiaW5kKHRoaXNWYWx1ZSkKIHsKICAgICAidXNlIHN0cmljdCI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFsZXhleSBTaHZheWthIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBpc1Byb3RvdHlwZU9mKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGlmICghQGlzT2JqZWN0KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCBAdG9PYmplY3QodGhpcykpOworfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAg
ICAgbWFjcm8oaXNNYXBJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzU2V0SXRlcmF0b3IpIFwKICAg
ICBtYWNybyhpc1VuZGVmaW5lZE9yTnVsbCkgXAorICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKICAg
ICBtYWNybyh0YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyh0aHJvd1R5cGVF
cnJvcikgXAogICAgIG1hY3JvKHRocm93UmFuZ2VFcnJvcikgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyNzk5NTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiw2IEBAIG9wIDppZGVudGl0eV93aXRoX3Byb2ZpbGUs
CiAgICAgICAgIGJvdHRvbVByb2ZpbGU6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOm92ZXJyaWRl
c19oYXNfaW5zdGFuY2UsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgY29uc3RydWN0b3I6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgaGFzSW5z
dGFuY2VWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQogb3AgOmluc3RhbmNlb2YsCiAg
ICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTQzNCw3ICs0Mjcs
OCBAQCBvcCA6aXNfY2VsbF93aXRoX3R5cGUsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAg
ICB0eXBlOiBKU1R5cGUsCisgICAgICAgIGZpcnN0VHlwZTogSlNUeXBlLAorICAgICAgICBsYXN0
VHlwZTogSlNUeXBlLAogICAgIH0KIAogb3AgOmluX2J5X3ZhbCwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24g
Mjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVy
dHkpCiAgICAgVVNFUyhPcEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wSGFzUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKLSAgICBVU0VTKE9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQogICAgIFVTRVMoT3BBZGQsIGxocywgcmhzKQogICAg
IFVTRVMoT3BNdWwsIGxocywgcmhzKQpAQCAtNDkwLDcgKzQ4OSw2IEBAIHZvaWQgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnMKICAgICBERUZTKE9wR2V0QnlJZFdpdGhUaGlzLCBk
c3QpCiAgICAgREVGUyhPcEdldEJ5VmFsV2l0aFRoaXMsIGRzdCkKICAgICBERUZTKE9wR2V0UHJv
dG90eXBlT2YsIGRzdCkKLSAgICBERUZTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGRzdCkKICAg
ICBERUZTKE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBk
c3QpCiAgICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZN
JiB2bSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgPSBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yQ29k
ZUJsb2NrLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT5pc0pTRnVuY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9T
UigpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2FsbCB0byAiLApAQCAtMjg0LDcgKzI4NCw3IEBAIHZv
aWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghaXNEaXJlY3QoKSAmJiBoYXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01h
cmtlZChsYXN0U2VlbkNhbGxlZSgpKSkgewotICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+
dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+
aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShqc0Nhc3Q8
SlNGdW5jdGlvbio+KGxhc3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5j
dGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19J
TkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAo
bV9jYWxsZWUtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50
KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOwogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBA
IGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJu
ICJCYWRDb25zdGFudENhY2hlIjsKICAgICBjYXNlIEJhZEluZGV4aW5nVHlwZToKICAgICAgICAg
cmV0dXJuICJCYWRJbmRleGluZ1R5cGUiOwotICAgIGNhc2UgQmFkVHlwZUluZm9GbGFnczoKLSAg
ICAgICAgcmV0dXJuICJCYWRUeXBlSW5mb0ZsYWdzIjsKICAgICBjYXNlIE92ZXJmbG93OgogICAg
ICAgICByZXR1cm4gIk92ZXJmbG93IjsKICAgICBjYXNlIE5lZ2F0aXZlWmVybzoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyNzk5NTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNiBAQCBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFk
Q2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAg
ICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdl
YWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KICAgICBCYWRJbmRl
eGluZ1R5cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGluZGV4aW5nIHR5cGUgd2FzIHdyb25n
LgotICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4g
aW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBz
ZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAg
IE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRp
dmUgemVyby4KICAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNv
dW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2Vl
IGl0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
YW5jZU9mU3RhdHVzLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5
ICs3Myw3IEBAIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHUKICNpZiBF
TkFCTEUoREZHX0pJVCkKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvKQogewotICAgIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBoYXZlIHRv
IGJhaWwgZm9yIG5vbkNlbGwgaWYgd2UgdGF1Z2h0IE1hdGNoU3RydWN0dXJlIGhvdyB0byBoYW5k
bGUgbm9uCi0gICAgLy8gY2VsbHMuIElmIHdlIGZpeGVkIHRoYXQgdGhlbiB3ZSB3b3VsZG4ndCBi
ZSBhYmxlIHRvIHVzZSBzdW1tYXJ5KCk7Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NTc4NAorICAgIEFTU0VSVCghc3R1YkluZm8tPnNhd05vbkNlbGwp
OwogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1h
cnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKICAgICAg
ICAgcmV0dXJuIEluc3RhbmNlT2ZTdGF0dXMoc3VtbWFyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgdihpc0RldGFjaGVkLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5RGVmYXVsdENv
bXBhcmF0b3IsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgbnVs
bHB0cikgXAotICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCi0gICAgdihoYXNJbnN0
YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGZ1bmN0aW9uUHJvdG90eXBlSGFz
SW5zdGFuY2VTeW1ib2wsIG51bGxwdHIpIFwKICAgICB2KGluc3RhbmNlT2YsIG51bGxwdHIpIFwK
ICAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5EZXNjcmliZSwgbnVs
bHB0cikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiAr
MjMwLDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAg
ICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYg
U3BlY0ludGVybmFsRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJJbnRl
cm5hbEZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9
PSBTcGVjU3RyaW5nKQpAQCAtNTE4LDEwICs1MjMsMTMgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRpb25Gcm9tQ2xhc3NJbmZvSQogCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpT
RnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVu
Y3Rpb246OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRoTm9uRGVm
YXVsdEhhc0luc3RhbmNlOwotICAgICAgICByZXR1cm4gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRI
YXNJbnN0YW5jZTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjQm91bmRGdW5jdGlvbjsKKyAgICAg
ICAgcmV0dXJuIFNwZWNOb25Cb3VuZEZ1bmN0aW9uOwogICAgIH0KIAorICAgIGlmIChjbGFzc0lu
Zm8tPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgICAgICByZXR1
cm4gU3BlY0ludGVybmFsRnVuY3Rpb24gfCBTcGVjT2JqZWN0T3RoZXI7CisKICAgICBpZiAoY2xh
c3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNQcm9taXNlOjppbmZvKCkpKQogICAgICAgICByZXR1cm4g
U3BlY1Byb21pc2VPYmplY3Q7CiAgICAgCkBAIC02ODYsNiArNjk0LDE2IEBAIFR5cGVkQXJyYXlU
eXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGEKICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsK
IH0KIAorc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBl
UmFuZ2UoSlNUeXBlUmFuZ2UgcmFuZ2UpCit7CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRp
b24gPSBTcGVjTm9uZTsKKyAgICBmb3IgKHVpbnQ4X3QgdHlwZSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHJhbmdlLmZpcnN0KTsgdHlwZSA8PSBzdGF0aWNfY2FzdDx1aW50OF90PihyYW5nZS5sYXN0
KTsgdHlwZSsrKQorICAgICAgICBzcGVjdWxhdGlvbiB8PSBzcGVjdWxhdGlvbkZyb21KU1R5cGUo
c3RhdGljX2Nhc3Q8SlNUeXBlPih0eXBlKSkudmFsdWVfb3IoU3BlY05vbmUpOworICAgIGlmIChz
cGVjdWxhdGlvbiA9PSBTcGVjTm9uZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3BlY3VsYXRpb247Cit9CisKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+
IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKQEAgLTY5NSw2ICs3MTMsMTAgQEAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3Bl
Y3VsYXRpbwogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICBjYXNlIEhlYXBCaWdJbnRU
eXBlOgogICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBJbnRlcm5hbEZ1
bmN0aW9uVHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNh
c2UgSlNGdW5jdGlvblR5cGU6CisgICAgICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsK
ICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNl
IERlcml2ZWRBcnJheVR5cGU6CkBAIC05NjAsNiArOTgyLDggQEAgU3BlY3VsYXRlZFR5cGUgc3Bl
Y3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsK
ICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3QiLCBzdHJs
ZW4oIlNwZWNEYXRhVmlld09iamVjdCIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09i
amVjdDsKKyAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjSW50ZXJuYWxGdW5jdGlv
biIsIHN0cmxlbigiU3BlY0ludGVybmFsRnVuY3Rpb24iKSkpCisgICAgICAgIHJldHVybiBTcGVj
SW50ZXJuYWxGdW5jdGlvbjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2Jq
ZWN0T3RoZXIiLCBzdHJsZW4oIlNwZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJuIFNw
ZWNPYmplY3RPdGhlcjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0
Iiwgc3RybGVuKCJTcGVjT2JqZWN0IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxNCArMzYsMTUgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1Y3R1cmU7
CitzdHJ1Y3QgSlNUeXBlUmFuZ2U7CiAKIHR5cGVkZWYgdWludDY0X3QgU3BlY3VsYXRlZFR5cGU7
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAwOyAvLyBXZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4K
IHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0FycmF5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDF1bGwgPDwgMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4K
LXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRI
YXNJbnN0YW5jZSAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlv
biB0aGF0IGhhcyBpdHMgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxh
Z3MgYml0IHNldC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9u
V2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5jZSA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgSlNGdW5jdGlvbiB0aGF0IGRvZXMgbm90IGhhdmUgaXRzIEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UgdHlwZSBpbmZvIGZsYWdzIGJpdCBzZXQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRnVu
Y3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlIHwgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRI
YXNJbnN0YW5jZTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JvdW5kRnVuY3Rpb24gICAgICAgICAgICAgICAgICAg
ICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNCb3VuZEZ1bmN0aW9uLgorc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uQm91bmRGdW5jdGlvbiAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3NlcywgYnV0IG5vdCBhIEpTQm91bmRGdW5jdGlvbi4KK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCb3VuZEZ1bmN0aW9uIHwgU3BlY05vbkJvdW5kRnVuY3Rpb247IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgog
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MTZBcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA1OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNJbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDY7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
QEAgLTEwOSw4ICsxMTAsOSBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNC
aWdJCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcEJpZ0ludDsKICNlbmRpZgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PCA0NTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVybmFsRnVuY3Rpb24gICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgNDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEludGVybmFsRnVuY3Rpb24u
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1Zh
bHVlLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1
bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNT
Y29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNw
ZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1Nl
dE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJv
eHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFW
aWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9i
amVjdCBwcmVkaWN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0Fy
cmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3Vt
ZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4
cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2Jq
ZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmpl
Y3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVy
IHwgU3BlY0RhdGFWaWV3T2JqZWN0IHwgU3BlY0ludGVybmFsRnVuY3Rpb247IC8vIEJpdG1hc2sg
dXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2Vs
bE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVy
IHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNw
ZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
SGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2Vw
dCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMg
dG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpAQCAtMjMxLDcgKzIz
Myw3IEBAIGlubGluZSBib29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAogaW5saW5l
IGJvb2wgaXNGdW5jdGlvblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjRnVuY3Rpb247CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZh
bHVlICYgU3BlY0Z1bmN0aW9uKSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNQcm94eU9i
amVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpAQCAtNTE4LDYgKzUyMCw3IEBA
IEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGEKIC8vIElmIGl0J3MgYW4g
YW55SW50KCksIGl0J2xsIHJldHVybiBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIEludDUyIGxh
dHRpY2UuCiAvLyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBKU1ZhbHVl
IGxhdHRpY2UuCiBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3YXJlU3Bl
Y3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBl
PiBzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSk7CiBzdGQ6Om9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAv
LyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDExIEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW4KICAgICBPcEpuZXFQdHI6OmVt
aXQodGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25z
dGFudDo6YXBwbHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCog
Y29uZCwgTGlua1RpbWVDb25zdGFudCBjb25zdGFudCwgTGFiZWwmIHRhcmdldCkKK3sKKyAgICBP
cEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
Y29uc3RhbnQpLCB0YXJnZXQuYmluZCh0aGlzKSk7Cit9CisKIHVuc2lnbmVkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVnaXN0ZXJJ
RCogY29uZCwgTGFiZWwmIHRhcmdldCkKIHsKICAgICBPcEpuZXFQdHI6OmVtaXQ8T3Bjb2RlU2l6
ZTo6V2lkZTMyPih0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykp
OwpAQCAtMTczNSwxMiArMTc0MCwxMiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWxpdHlPcEltCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN0cmlu
ZyIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2Vs
bFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSk7CisgICAg
ICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUs
IFN0cmluZ1R5cGUsIFN0cmluZ1R5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJzeW1ib2wiKSB7CiAgICAg
ICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6
ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5bWJvbFR5cGUpOworICAgICAgICAgICAgICAg
IE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1ib2xUeXBl
LCBTeW1ib2xUeXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAiYmlnaW50IikgewpAQCAtMTc0OCw3ICsxNzUz
LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbQogI2lmIFVTRShC
SUdJTlQzMikKICAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3Au
bV92YWx1ZSk7CiAjZWxzZQotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQo
dGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFwQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAg
T3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRU
eXBlLCBIZWFwQmlnSW50VHlwZSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTI0MjQsMTIgKzI0MjksNiBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBjb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSkKLXsKLSAg
ICBPcE92ZXJyaWRlc0hhc0luc3RhbmNlOjplbWl0KHRoaXMsIGRzdCwgY29uc3RydWN0b3IsIGhh
c0luc3RhbmNlVmFsdWUpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KIC8vIEluZGljYXRlcyB0aGUg
bGVhc3QgdXBwZXIgYm91bmQgb2YgcmVzb2x2ZSB0eXBlIGJhc2VkIG9uIGxvY2FsIHNjb3BlLiBU
aGUgYnl0ZWNvZGUgbGlua2VyCiAvLyB3aWxsIHN0YXJ0IHdpdGggdGhpcyBSZXNvbHZlVHlwZSBh
bmQgY29tcHV0ZSB0aGUgbGVhc3QgdXBwZXIgYm91bmQgaW5jbHVkaW5nIGludGVyY2VwdGluZyBz
Y29wZXMuCiBSZXNvbHZlVHlwZSBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZVR5cGUoKQpAQCAt
NDYwNiw5ICs0NjA1LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9J
bmQKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5
cGVSYW5nZSByYW5nZSkKK3sKKyAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwg
c3JjLCByYW5nZS5maXJzdCwgcmFuZ2UubGFzdCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlIHR5cGUpCiB7Ci0gICAgT3BJc0NlbGxXaXRo
VHlwZTo6ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlwZSk7CisgICAgT3BJc0NlbGxXaXRoVHlwZTo6
ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlwZSwgdHlwZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OTgsNyArNzk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJ
bmMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlYyhSZWdp
c3RlcklEKiBzcmNEc3QpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRPdmVycmlkZXNIYXNJ
bnN0YW5jZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3Rl
cklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNl
T2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVBy
b3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBS
ZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5
cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CkBAIC05MTYsNiArOTE1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVy
SUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5j
dGlvbkNhbGwoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQg
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdl
dCk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJ
RCogY29uZCwgTGlua1RpbWVDb25zdGFudCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHVuc2ln
bmVkIGVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3RlcklEKiBj
b25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9pZCByZWNvcmRIYXNPd25TdHJ1Y3R1cmVQ
cm9wZXJ0eUluRm9ySW5Mb29wKFN0cnVjdHVyZUZvckluQ29udGV4dCYsIHVuc2lnbmVkIGJyYW5j
aE9mZnNldCwgTGFiZWwmIGdlbmVyaWNQYXRoKTsKIApAQCAtOTQwLDYgKzk0MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RW51bWVyYXRvckdlbmVyaWNQcm9w
ZXJ0eU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3Rl
cklEKiBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb0luZGV4U3RyaW5nKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBl
UmFuZ2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4g
ZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNH
ZW5lcmF0b3JUeXBlKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQ1LDYgKzEzNDUsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0XwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldFByb3RvdHlwZU9mKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9mKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+
bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEluc3RhbmNlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFs
dWUuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxk
IHByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTMxNjAsMjkgKzMxNzAsMjMgQEAgUmVnaXN0ZXJJ
RCogVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0QgogCiBSZWdpc3RlcklEKiBJbnN0YW5jZU9m
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXNPYmplY3Qg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGlzQ3Vz
dG9tID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y29uc3RydWN0b3IgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhhc0luc3RhbmNlVmFsdWUgPSBnZW5lcmF0b3IubW92ZUVtcHR5VmFsdWUoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
dmFsdWUuZ2V0KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWcgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIHByb3RvdHlwZS5nZXQoKSk7CiAgICAgUmVmPExhYmVsPiBj
dXN0b20gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKLSAgICBSZWY8TGFiZWw+IHR5cGVFcnJvciA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXNPYmplY3QoaXNP
YmplY3QuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZkZhbHNlKGlzT2JqZWN0LmdldCgpLCB0eXBlRXJyb3IuZ2V0KCkpOworICAgIGdlbmVyYXRvci5l
bWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9leHByMSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNv
bnN0cnVjdG9yLmdldCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNl
KGdlbmVyYXRvci5lbWl0SXNDZWxsV2l0aFR5cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgSlNUeXBlUmFuZ2UgeyBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgSlNG
dW5jdGlvblR5cGUgfSksIGN1c3RvbS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGhhc0luc3RhbmNlVmFsdWUuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgp
LCBnZW5lcmF0b3Iudm0oKS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7CiAKLSAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShpc0N1c3Rv
bS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGhhc0luc3RhbmNlVmFsdWUuZ2V0KCkpOwotCi0g
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShpc0N1c3RvbS5nZXQoKSwg
Y3VzdG9tLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3Rh
bnQoaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSwgTGlua1RpbWVDb25zdGFudDo6ZnVuY3Rpb25Qcm90
b3R5cGVIYXNJbnN0YW5jZVN5bWJvbCwgY3VzdG9tLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZkZhbHNlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QoZHN0UmVnLmdldCgpLCB2YWx1ZS5n
ZXQoKSksIGRvbmUuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChwcm90b3R5cGUuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3Iudm0oKS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwpAQCAtMzE5MSwxMCArMzE5NSw2IEBAIFJlZ2lzdGVy
SUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUKICAgICBnZW5lcmF0b3IuZW1pdEluc3Rh
bmNlT2YoZHN0UmVnLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKIAogICAg
IGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKLQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodHlwZUVycm9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJS
aWdodCBoYW5kIHNpZGUgb2YgaW5zdGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Iik7Ci0KICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGN1c3RvbS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0NzEsNyArMTQ3MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwogICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgot
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgp
LmlzQ2VsbCgpICYmIGNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSA9PSBub2RlLT5xdWVy
aWVkVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KGNoaWxkLnZhbHVlKCkuaXNDZWxsKCkgJiYgbm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlucyhj
aGlsZC52YWx1ZSgpLmFzQ2VsbCgpLT50eXBlKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbigKQEAgLTE1NTIsNyArMTU1Miw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm1fc3Ry
dWN0dXJlLmZvckVhY2goCiAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBt
YXRjaGVkID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlw
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IG5vZGUtPnF1
ZXJpZWRUeXBlKCkuY29udGFpbnMoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CkBAIC00MzM0LDEwICs0MzM0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBO
b3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOgotICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwot
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CkBAIC00NDY0LDQzICs0NDYwLDYgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAg
ICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBj
b25zdCBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIHVuc2lnbmVkIGJpdHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAg
ICAgICAgQVNTRVJUKGJpdHMpOwotICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0g
U3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIG1f
c3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEpTVmFsdWUg
dmFsdWUgPSBhYnN0cmFjdFZhbHVlLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5p
c0NlbGwoKSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBpZiB3ZSBz
ZWUgYSBjZWxsIGhlcmUsIHdlIGtub3cgaXQncyBmdWxseSBjb25zdHJ1Y3RlZAotICAgICAgICAg
ICAgICAgIC8vIGFuZCB3ZSBjYW4gcmVhZCBpdHMgaW5saW5lIHR5cGUgaW5mbyBmbGFncy4gVGhl
c2UgZmxhZ3MgZG9uJ3QgY2hhbmdlIG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gb2JqZWN0
J3MgbGlmZXRpbWUuCi0gICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5hc0NlbGwoKS0+aW5saW5l
VHlwZUZsYWdzKCkgJiBiaXRzKSA9PSBiaXRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAg
ICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgIGFic3RyYWN0VmFsdWUubV9zdHJ1
Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAg
ICAgICAgICAgICAgb2sgJj0gKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSAmIGJpdHMpID09IGJpdHM7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChvaykg
ewotICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRy
dWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAgICAgICBB
YnN0cmFjdFZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlm
ICh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk2NiwxNyArNTk2Niw2IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NoZWNrX3Rkeik7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2U6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgICAgICAgICBKU0Z1
bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSktPmZ1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgICAgIE5v
ZGUqIGNvbnN0cnVjdG9yID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbnN0cnVj
dG9yKSk7Ci0gICAgICAgICAgICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWUpKTsKLQotICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbikpLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotICAgICAgICAgICAg
TkVYVF9PUENPREUob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSk7Ci0gICAgICAgIH0KLQogICAg
ICAgICBjYXNlIG9wX2lkZW50aXR5X3dpdGhfcHJvZmlsZTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJZGVudGl0eVdpdGhQcm9maWxlPigp
OwogICAgICAgICAgICAgTm9kZSogc3JjRHN0ID0gZ2V0KGJ5dGVjb2RlLm1fc3JjRHN0KTsKQEAg
LTYwMjcsNyArNjAxNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9mLCB2YWx1ZSwg
cHJvdG90eXBlKSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
SW5zdGFuY2VPZiwgRWRnZSh2YWx1ZSwgQ2VsbFVzZSksIEVkZ2UocHJvdG90eXBlKSkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0KIApAQCAtNjA5
OCw3ICs2MDg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAg
ICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZv
KGJ5dGVjb2RlLm1fdHlwZSksIHZhbHVlKSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9k
c3QsIGFkZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhKU1R5cGVSYW5nZSB7IGJ5dGVj
b2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5tX2xhc3RUeXBlIH0pLCB2YWx1ZSkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfaXNfY2VsbF93aXRoX3R5cGUpOwogICAgICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZToKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfbW92OgotICAgIGNh
c2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2lkZW50aXR5X3dpdGhf
cHJvZmlsZToKICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9m
X2N1c3RvbToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBJ
c0NlbGxXaXRoVHlwZToKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5xdWVyaWVk
VHlwZSgpKSk7CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJpdHdpc2VfY2FzdDx1aW50MTZfdD4obm9kZS0+cXVlcmllZFR5cGUoKSkpKSk7CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6CkBAIC0xMTc2LDExICsxMTc2LDYg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQ2hl
Y2tEZXRhY2hlZDoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgcmV0dXJuOyAK
LSAgICAgICAgCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgICAgIHJlYWQoSlND
ZWxsX3R5cGVJbmZvRmxhZ3MpOwotICAgICAgICBkZWYoSGVhcExvY2F0aW9uKENoZWNrVHlwZUlu
Zm9GbGFnc0xvYywgSlNDZWxsX3R5cGVJbmZvRmxhZ3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5v
ZGUobm9kZSkpOwotICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFBhcnNlSW50OgogICAgICAg
ICAvLyBOb3RlOiBXZSB3b3VsZCBoYXZlIGVsaW1pbmF0ZWQgYSBQYXJzZUludCB0aGF0IGhhcyBq
dXN0IGEgc2luZ2xlIGNoaWxkIGFzIGFuIEludDMyVXNlIGluc2lkZSBmaXh1cC4KQEAgLTExOTIs
MTEgKzExODcsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZToKLSAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAg
ICAgIGRlZihIZWFwTG9jYXRpb24oT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MsIEpTQ2VsbF90eXBl
SW5mb0ZsYWdzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0
dGVyZmx5KTsKICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNiw0NiArMTAyNiw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewot
ICAgICAgICAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJp
dHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYml0
cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJpdHMgPT0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0g
U3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChK
U1ZhbHVlIHZhbHVlID0gYWJzdHJhY3RWYWx1ZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5
IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgY2FuIHJlYWQg
aXRzIGlubGluZSB0eXBlIGluZm8gZmxhZ3MuIFRoZXNlIGZsYWdzIGRvbid0IGNoYW5nZSBvdmVy
IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3Mo
KSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5h
dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9n
cmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgb2sgJj0gKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHM7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBpZiAob2spIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1
bmN0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUJlbG93RXE6CiAgICAgY2FzZSBDb21w
YXJlRXFQdHI6CiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6Ci0gICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVm
aW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgpAQCAtMTg4LDcgKzE4Nyw2IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbnN0YW50U3RvcmFn
ZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKLSAgICBj
YXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVmFsdWVSZXA6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OTAsNyArMTk5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAg
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAg
ICAgY2FzZSBDcmVhdGVQcm9taXNlOgpAQCAtMjA3NCwyNSArMjA3MywxNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewot
ICAgICAgICAgICAgLy8gRklYTUU6IEludHJvZHVjZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1
cmUgdGhhdCBkb2Vzbid0IGRvIGEgY2VsbCBjaGVjay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU3ODQKICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKQotICAgICAgICAgICAg
ICAgICYmIGlzNjRCaXQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKLSAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBJbkJ5SWQ6IHsKQEAgLTI4MjgsNyArMjgxOSw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBj
YXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6Ci0gICAgICAgIGNhc2Ug
Q2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoK
ICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbElubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2Ug
Q29uc3RydWN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTUgKzEwOSw3IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2MKICAgICBjYXNlIEJ1dHRl
cmZseUxvYzoKICAgICAgICAgb3V0LnByaW50KCJCdXR0ZXJmbHlMb2MiKTsKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnc0xvYzoKLSAgICAgICAg
b3V0LnByaW50KCJDaGVja1R5cGVJbmZvRmxhZ3NMb2MiKTsKLSAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZUxvYzoKLSAgICAgICAgb3V0LnByaW50KCJPdmVy
cmlkZXNIYXNJbnN0YW5jZUxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIGNh
c2UgQ2xvc3VyZVZhcmlhYmxlTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJpYWJs
ZUxvYyIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0hlYXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQw
LDYgQEAgZW51bSBMb2NhdGlvbktpbmQgewogICAgIEFycmF5TWFza0xvYywKICAgICBWZWN0b3JM
ZW5ndGhMb2MsCiAgICAgQnV0dGVyZmx5TG9jLAotICAgIENoZWNrVHlwZUluZm9GbGFnc0xvYywK
LSAgICBPdmVycmlkZXNIYXNJbnN0YW5jZUxvYywKICAgICBDbG9zdXJlVmFyaWFibGVMb2MsCiAg
ICAgRGlyZWN0QXJndW1lbnRzTG9jLAogICAgIEdldHRlckxvYywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzNiwxMCArMTQzNiwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0K
IAotICAgIEpTVHlwZSBxdWVyaWVkVHlwZSgpCisgICAgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGUo
KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dWludDhfdCwgc3Rk
Ojp1bmRlcmx5aW5nX3R5cGU8SlNUeXBlPjo6dHlwZT46OnZhbHVlLCAiRW5zdXJlIHRoYXQgdWlu
dDhfdCBpcyB0aGUgdW5kZXJseWluZyB0eXBlIGZvciBKU1R5cGUuIik7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxKU1R5cGU+KG1fb3BJbmZvLmFzPHVpbnQzMl90PigpKTsKKyAgICAgICAg
QVNTRVJUKG9wKCkgPT0gSXNDZWxsV2l0aFR5cGUpOworICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXNKU1R5cGVSYW5nZSgpOwogICAgIH0KIAogICAgIGJvb2wgaGFzU3BlY3VsYXRlZFR5cGVGb3JR
dWVyeSgpCkBAIC0xNDQ5LDcgKzE0NDksNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CisgICAgICAgIHJl
dHVybiBzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZShxdWVyaWVkVHlwZSgpKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNSZXN1bHQoKQpAQCAtMTg3Nyw3ICsxODc3LDYgQEAgcHVibGljOgog
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0lzQ29uc3RhbnQ6CiAg
ICAgICAgICAgICByZXR1cm4gaXNDZWxsKGNoaWxkMSgpLnVzZUtpbmQoKSk7Ci0gICAgICAgIGNh
c2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5j
dGlvbjoKQEAgLTE5NTIsMTcgKzE5NTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxVbmlxdWVkU3RyaW5nSW1wbCo+KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNUeXBl
SW5mb09wZXJhbmQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tUeXBlSW5m
b0ZsYWdzOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHR5cGVJbmZvT3BlcmFuZCgpCi0gICAgewot
ICAgICAgICBBU1NFUlQoaGFzVHlwZUluZm9PcGVyYW5kKCkgJiYgbV9vcEluZm8uYXM8dWludDMy
X3Q+KCkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFVDSEFSX01BWCkpOwotICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNUcmFuc2l0
aW9uKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMzMxMyw2ICszMzAxLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
TmV3QXJyYXlCdWZmZXJEYXRhPih1LmludDY0KTsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNf
SU5MSU5FIEpTVHlwZVJhbmdlIGFzSlNUeXBlUmFuZ2UoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTVHlwZVJhbmdlPihzdGF0aWNfY2FzdDx1aW50
MTZfdD4odS5pbnQ2NCkpOworICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgdWludDMyX3QgaW50MzI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXNzZXJ0SW5Cb3VuZHMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAotICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFr
ZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wK
ICAgICBtYWNybyhDaGVja0pTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0aGUg
c2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0aW9u
ICovXAogICAgIG1hY3JvKENoZWNrTm90SlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oUGFyc2VJbnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKQEAgLTM5
NSw3ICszOTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
UGhhbnRvbU5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IFwKICAgICAvKiBOb2RlcyBmb3IgbWlzYyBvcGVyYXRpb25zLiAqL1wKLSAgICBtYWNybyhPdmVy
cmlkZXNIYXNJbnN0YW5jZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSW5zdGFuY2VPZiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29s
ZWFuKSBcCiAgICAgbWFjcm8oSW5zdGFuY2VPZkN1c3RvbSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTWF0Y2hTdHJ1Y3R1cmUsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBP
cEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRzKCkp
KSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1ZShl
Y21hTW9kZS52YWx1ZSgpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxkUHV0
S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KKyAgICBleHBsaWNp
dCBPcEluZm8oSlNUeXBlUmFuZ2UgcmFuZ2UpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRf
dD4oYml0d2lzZV9jYXN0PHVpbnQxNl90PihyYW5nZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Q3JlYXRlCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
aWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVu
Y3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKKyAgICBp
ZiAoY29uc3RydWN0b3ItPmlzSlNGdW5jdGlvbigpICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29u
c3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIERlZmVyVGVy
bWluYXRpb24gZGVmZXJTY29wZSh2bSk7CiAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJv
ZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgc2NvcGUucmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzcsNyArMTAzNyw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBjYXNlIENvbXBh
cmVFcVB0cjoKICAgICAgICAgY2FzZSBTYW1lVmFsdWU6Ci0gICAgICAgIGNhc2UgT3ZlcnJpZGVz
SGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgY2FzZSBJbnN0
YW5jZU9mQ3VzdG9tOgogICAgICAgICBjYXNlIElzRW1wdHk6CkBAIC0xMzE0LDcgKzEzMTMsNiBA
QCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBE
b3VibGVBc0ludDMyOgotICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAg
Y2FzZSBBcnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQs
OSArMjU0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgIGNhc2Ug
U2FtZVZhbHVlOgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgUGFyc2VJ
bnQ6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIElzRW1wdHk6CiAg
ICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQzLDE2ICsz
NjQzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAg
ICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOiB7Ci0gICAgICAgIGNvbXBpbGVPdmVy
cmlkZXNIYXNJbnN0YW5jZShub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2Fz
ZSBJbnN0YW5jZU9mOiB7CiAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKG5vZGUpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQzMiwy
MSArNDQzMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0g
ICAgICAgIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mobm9kZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQogICAgIGNhc2UgUGFyc2VJbnQ6IHsKICAgICAgICAgY29tcGlsZVBhcnNlSW50KG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3Rh
bmNlOiB7Ci0gICAgICAgIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShub2RlKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBJbnN0YW5jZU9mOiB7CiAgICAgICAgIGNvbXBp
bGVJbnN0YW5jZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzk5NTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA4MSwyMCArNDA4MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTZXRQcml2YXRlQnIKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQotewotICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgb25seSB3b3Jr
cyBmb3IgY2hlY2tpbmcgaWYgYSBzaW5nbGUgYml0IGlzIHNldC4gSWYgd2Ugd2FudCB0byBjaGVj
ayBtb3JlCi0gICAgLy8gdGhhbiBvbmUgYml0IGF0IG9uY2UsIHdlJ2xsIG5lZWQgdG8gZml4IHRo
aXM6Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcw
NQotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZUluZm9GbGFncywgSlNWYWx1ZVJlZ3MoKSwg
bnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihub2RlLT50eXBlSW5mb09wZXJhbmQoKSkpKTsK
LQotICAgIG5vUmVzdWx0KG5vZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGFyc2VJbnQoTm9kZSogbm9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKTsKQEAgLTQxNTIsMTM2ICs0MTM4LDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQYXJzZUludChOb2QKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uo
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiB7Ci0gICAgTm9kZSogaGFzSW5zdGFuY2VWYWx1ZU5vZGUgPSBub2RlLT5jaGlsZDIo
KS5ub2RlKCk7Ci0gICAgSlNGdW5jdGlvbiogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IENlbGxVc2UpOworCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKIAot
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3REZWZhdWx0OwotICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5k
IGhhc0luc3RhbmNlVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAg
IH0KKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSlNW
YWx1ZVJlZ3MgcHJvdG90eXBlUmVnczsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOwogCi0gICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgY29uc3RhbnQgZm9sZGluZyBoYW5k
bGVkIGF1dG9tYXRpY2FsbHkgdGhlIGNhc2Ugd2hlcmUgd2Uga25ldyB0aGUgaGFzSW5zdGFuY2Ug
ZnVuY3Rpb24KLSAgICAvLyB3YXMgYSBjb25zdGFudC4gVW5mb3J0dW5hdGVseSwgdGhlIGZvbGRp
bmcgcnVsZSBmb3IgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgaXMgaW4gdGhlIHN0cmVuZ3RoIHJlZHVj
dGlvbiBwaGFzZQotICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICBpZiAoIWhh
c0luc3RhbmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5j
ZUZ1bmN0aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewotICAgICAgICBK
U1ZhbHVlUmVncyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZCht
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVl
UmVncy5ncHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwotI2Vsc2UK
LSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGhhc0luc3Rh
bmNlVmFsdWVSZWdzKSk7Ci0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgIGlmIChub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBwcm90b3R5
cGVSZWdzID0gSlNWYWx1ZVJlZ3MocHJvdG90eXBlLmdwcigpKTsKKyAgICB9IGVsc2UgewogI2Vu
ZGlmCi0gICAgfQotCi0gICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlJy4KLSAgICBtX2ppdC50ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UpLCByZXN1bHRHUFIpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCi0gICAgaWYgKCFub3REZWZhdWx0LmVt
cHR5KCkpIHsKLSAgICAgICAgbm90RGVmYXVsdC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBwcm90b3R5cGVSZWdz
ID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIH0KKyNlbmRpZgogCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgdW5ibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotfQotCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93Q2FzZSkKLXsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgg
PSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAogICAgIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRS
ZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAotICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBw
cm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0
Y2gyR1BSLAorICAgICAgICB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2VsbCkpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkp
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKHNsb3dDYXNlKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlw
ZVJlZ3MpOworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwg
dmFsdWVHUFIsIHByb3RvdHlwZVJlZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25J
bnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZUdQUiwgcHJv
dG90eXBlUmVncyk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwotfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBu
b2RlKQotewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlCi0gICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwotICAgICAgICAKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IElu
dmFsaWRHUFJSZWc7Ci0gICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgewotICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKLSAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwotICAgICAgICB9Ci0gICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwotICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0g
cHJvdG90eXBlLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgICAgICAKLSAgICAgICAgY29t
cGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFs
dWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIs
IHNjcmF0Y2gyR1BSKTsKLSAgICAgICAgCi0gICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICAKLSAgICBzdGQ6Om9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
LSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAKLSAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6REZHSklUKSkgewotICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwotICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKLSAgICB9Ci0gICAgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVS
ZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7Ci0gICAgCi0gICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxs
KHZhbHVlUmVncyk7Ci0gICAgbW92ZUZhbHNlVG8ocmVzdWx0R1BSKTsKLSAgICAKLSAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgIAotICAgIGlzQ2VsbC5saW5r
KCZtX2ppdCk7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5i
cmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7Ci0gICAgCi0gICAgY29tcGlsZUluc3RhbmNl
T2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKLSAgICAKLSAg
ICBkb25lLmxpbmsoJm1faml0KTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgIHJldHVybjsKIH0KQEAgLTUxMTYsMTggKzUwMzQsMTggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdQogICAgIC8vIFN5bWJvbC5oYXNJbnN0YW5j
ZSBiZWNvbWVzIHBvcHVsYXIgd2lsbCBsaWtlbHkgcmVtYWluIHRoYXQgd2F5LgogCiAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgaGFzSW5zdGFuY2VWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVl
LmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3RydWN0b3Iu
Z3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgY29uc3RydWN0b3JSZWdzID0gY29uc3RydWN0b3IuanNW
YWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBoYXNJbnN0YW5jZVJlZ3MgPSBoYXNJbnN0YW5j
ZVZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgpOwog
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBv
cGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJh
dGlvbkluc3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHZhbHVlUmVncywgY29uc3RydWN0b3JSZWdzLCBoYXNJbnN0YW5jZVJlZ3MpKTsKIAogICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUxNDQsMTAg
KzUwNjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDZWxsV2l0aFR5CiAKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHZhbHVlUmVncyk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFs
LAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1t
MzIobm9kZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIpOworICAgICAg
ICBtX2ppdC5pc0NlbGxXaXRoVHlwZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBub2RlLT5xdWVy
aWVkVHlwZSgpLCByZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0R1BSKTsK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAtNTE2
NiwxMCArNTA4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRoVHkK
ICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBp
bGVyOjpFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5v
ZGUtPnF1ZXJpZWRUeXBlKCkpLAotICAgICAgICAgICAgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQuaXNDZWxsV2l0aFR5cGUoY2VsbEdQUiwgbm9kZS0+cXVlcmllZFR5cGUoKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgYmxlc3NCb29sZWFuKHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTExMzI3LDcg
KzExMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UsIEdQUlJlZyBj
ZWxsKQogewotICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNGdW5jdGlvbiwg
SlNGdW5jdGlvblR5cGUpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjRnVuY3Rpb24sIG1faml0LmJyYW5jaElmTm90RnVuY3Rp
b24oY2VsbCkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihF
ZGdlIGVkZ2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTc1MywxMCArNzUzLDggQEAg
cHVibGljOgogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUq
LCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEo
Tm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3Rh
bmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcg
c2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2Fz
ZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwotICAgIHZvaWQg
Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUlz
Q2VsbFdpdGhUeXBlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KE5v
ZGUqKTsKQEAgLTEzNjMsNyArMTM2MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZUdl
dEFycmF5TGVuZ3RoKE5vZGUqKTsKIAotICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFn
cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudChOb2RlKik7CiAKICAgICB2b2lk
IGNvbXBpbGVQYXJzZUludChOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSwyNiArMzExLDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCBwcm9iYWJseSBkbyB0aGlzIGluIGNvbnN0YW50IGZvbGRpbmcgYnV0IHRoaXMgY3VycmVudGx5
IHJlbGllcyBvbiBPU1IgZXhpdCBoaXN0b3J5OgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFz
SW5zdGFuY2U6IHsKLSAgICAgICAgICAgIGlmICghbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCktPmlz
Q2VsbENvbnN0YW50KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMigpLm5vZGUoKS0+YXNDZWxsKCkgIT0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VT
eW1ib2xGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChtX25vZGUsIGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgfSBlbHNlIGlmICghbV9ncmFwaC5oYXNFeGl0U2l0ZSht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZUluZm9GbGFncykpIHsKLSAgICAgICAgICAg
ICAgICAvLyBXZSBvcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCB3ZSB3aWxsIG5vdCBzZWUgYSBm
dW5jdGlvbiB0aGF0IGhhcyBhIGN1c3RvbSBpbnN0YW5jZW9mIG9wZXJhdGlvbiBhcyB0aGV5IHNo
b3VsZCBiZSByYXJlLgotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bV9ub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVja1R5cGVJbmZvRmxhZ3MsIG1fbm9kZS0+b3JpZ2lu
LCBPcEluZm8oSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIEVkZ2UobV9ub2RlLT5jaGls
ZDEoKS5ub2RlKCksIENlbGxVc2UpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRU
b0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGxvdCBvZiBzdHJpbmcgY29uc3Rh
bnQtZm9sZGluZyBydWxlcyBoZXJlLiBJdCB3b3VsZCBiZSBncmVhdCB0bwogICAgICAgICAvLyBt
b3ZlIHRoZXNlIHRvIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlciBvbmNlIEFic3RyYWN0VmFsdWUg
Y2FuIHN1cHBvcnQgTGF6eUpTVmFsdWUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyMDQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjc1LDggKzI3NSw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAK
ICAgICBjYXNlIElzQ2FsbGFibGU6CiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgogICAgIGNhc2Ug
SXNUeXBlZEFycmF5VmlldzoKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIElu
c3RhbmNlT2ZDdXN0b206CiAgICAgY2FzZSBEb3VibGVSZXA6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OTcsMTIgKzE0OTcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVP
ZjoKICAgICAgICAgICAgIGNvbXBpbGVUeXBlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAgICAgIGNvbXBpbGVDaGVja1R5
cGVJbmZvRmxhZ3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE92ZXJyaWRl
c0hhc0luc3RhbmNlOgotICAgICAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCk7
Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICAg
ICAgY29tcGlsZUluc3RhbmNlT2YoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI3MTMsNjUg
KzEyNzA3LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9
CiAKLSAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpCi0gICAgewotICAgICAg
ICBGcm96ZW5WYWx1ZSogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBtX25vZGUtPmNlbGxP
cGVyYW5kKCk7Ci0gICAgICAgIEFTU0VSVChkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbi0+Y2Vs
bCgpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSgpKSk7Ci0KLSAgICAgICAgTFZhbHVlIGNvbnN0
cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGhhc0lu
c3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLQotICAgICAgICBMQmFzaWNC
bG9jayBkZWZhdWx0SGFzSW5zdGFuY2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAgIC8vIFVu
bGlrZSBpbiB0aGUgREZHLCB3ZSBkb24ndCB3b3JyeSBhYm91dCBjbGVhbmluZyB0aGlzIGNvZGUg
dXAgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgcHJvdmVuIHRoZSBoYXNJbnN0YW5jZVZhbHVl
IGlzIGEgY29uc3RhbnQgYXMgQjMgc2hvdWxkIGZpeCBpdCBmb3IgdXMuCi0KLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5UcnVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhh
c0luc3RhbmNlLCBmcm96ZW5Qb2ludGVyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7Ci0KLSAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhkZWZhdWx0SGFzSW5zdGFu
Y2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQudGVzdElzWmVybzMyKAot
ICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIoY29uc3RydWN0b3IsIG1faGVhcHMuSlND
ZWxsX3R5cGVJbmZvRmxhZ3MpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwotICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0g
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBpbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlUmVzdWx0LCBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoKQotICAgIHsKLSAgICAgICAgc3BlY3Vs
YXRlKAotICAgICAgICAgICAgQmFkVHlwZUluZm9GbGFncywgbm9WYWx1ZSgpLCBudWxscHRyLAot
ICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAotICAgICAgICAgICAgICAgIG1fb3V0Lmxv
YWQ4WmVyb0V4dDMyKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNDZWxsX3R5
cGVJbmZvRmxhZ3MpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT50
eXBlSW5mb09wZXJhbmQoKSkpKTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZigpCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CiAgICAgICAgIAot
ICAgICAgICBMVmFsdWUgdmFsdWU7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGJvb2wg
dmFsdWVJc0NlbGw7CiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNDZWxsOwotICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAgICAgICAgICAgJiYgbV9u
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICAgICAgdmFsdWUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewogICAgICAgICAgICAgcHJvdG90eXBlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVJc0Nl
bGwgPSB0cnVlOwogICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcHJvdG90eXBlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVJc0NlbGwgPSBhYnN0
cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CiAgICAgICAgICAg
ICBwcm90b3R5cGVJc0NlbGwgPSBhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLmlzVHlw
ZShTcGVjQ2VsbCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMjgwMSwxNCArMTI3NTMsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5n
cFNjcmF0Y2goMSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52
YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZG9uZUp1bXA7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewot
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNDZWxsID0gaml0LmJyYW5j
aElmQ2VsbCh2YWx1ZUdQUik7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5ib3hCb29sZWFuUGF5
bG9hZChmYWxzZSwgcmVzdWx0R1BSKTsKLSAgICAgICAgICAgICAgICAgICAgZG9uZUp1bXAgPSBq
aXQuanVtcCgpOwotICAgICAgICAgICAgICAgICAgICBpc0NlbGwubGluaygmaml0KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVJ
c0NlbGwpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChwcm90b3R5cGVHUFIpKTsKQEAgLTEyODMzLDE0ICsxMjc3NywxMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEpfSklUT3BlcmF0aW9uX0dTc2lKSiBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlv
bkluc3RhbmNlT2ZPcHRpbWl6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZU
TEpJVCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25J
bnN0YW5jZU9mT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmln
aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLApAQCAtMTI4NTAsNyArMTI3OTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9u
SW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdp
biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CkBAIC0xMjg2NCw5ICsxMjgw
Niw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGlmIChkb25lSnVtcC5pc1NldCgpKQotICAgICAgICAgICAgICAgICAg
ICBkb25lSnVtcC5saW5rKCZqaXQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBUaGlzIHJldHVybnMgYSBib3hlZCBib29sZWFuLgpAQCAtMTI4NzcsNyArMTI4MTYsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVl
IGNvbnN0cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVl
IGNvbnN0cnVjdG9yID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZh
bHVlIGhhc0luc3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAogICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluc3Rh
bmNlT2ZDdXN0b20sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlLCBjb25zdHJ1Y3Rv
ciwgaGFzSW5zdGFuY2UpKSk7CkBAIC0xODk4NywxNSArMTg5MjYsMTEgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBMVmFsdWUgaXNGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJl
dHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBpc1R5cGUoY2VsbCwgSlNGdW5jdGlvblR5cGUp
OworICAgICAgICByZXR1cm4gaXNDZWxsV2l0aFR5cGUoY2VsbCwgSlNUeXBlUmFuZ2UgeyBKU0Z1
bmN0aW9uVHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9LCBTcGVjRnVuY3Rpb24sIHR5cGUpOwog
ICAgIH0KICAgICBMVmFsdWUgaXNOb3RGdW5jdGlvbihMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4g
PSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNGdW5jdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gaXNOb3RUeXBlKGNlbGwsIEpTRnVu
Y3Rpb25UeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoaXNGdW5jdGlvbihj
ZWxsLCB0eXBlKSk7CiAgICAgfQogICAgICAgICAgICAgCiAgICAgTFZhbHVlIGlzRXhvdGljRm9y
VHlwZW9mKExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyMSwxMyArNjIxLDEzIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJh
dG9yRW4KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrRm9yYmlkZGVu
UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpT
VmFsdWUgcHJvdG8pCitzdGF0aWMgYm9vbCBjaGVja0ZvcmJpZGRlblByb3RvdHlwZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdmFsdWUsIEpTT2JqZWN0KiBwcm90bykK
IHsKICAgICBpZiAodmFsdWUgPT0gcHJvdG8pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHByb3RvIGhhc24ndCBiZWVuIG1v
ZGlmaWVkIHRvIGluY2x1ZGUgdmFsdWUuCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWZhdWx0SGFz
SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBwcm90bywgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZS0+
aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvKTsKIH0KIAogSlNWYWx1ZSBKU0luamVj
dGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC02OTQsNyArNjk0LDcgQEAgSlNWYWx1ZSBKU0lu
amVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogICAgICAgICAgICAgaWYgKHZhbHVlLmluaGVy
aXRzPFByb3h5T2JqZWN0Pih2bSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6Q29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkpCisgICAgICAgICAgICBpZiAo
dmFsdWUuaXNPYmplY3QoKSAmJiBvYmplY3QtPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBh
c09iamVjdCh2YWx1ZSkpKQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QsIGFycmF5LT5sZW5ndGgoKSwgdmFsdWUpOwogCiAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMy
LDggKzkzMiwyMiBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmVHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElm
Tm90SGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNl
bGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBl
KTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQorICAgIEp1bXAg
YnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNl
bGxHUFIsIEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUg
fSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0
dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU1R5cGVSYW5nZSB7IEpTRnVuY3Rpb25UeXBl
LCBKU0JvdW5kRnVuY3Rpb25UeXBlIH0pOyB9CisKKyAgICB2b2lkIGlzQ2VsbFdpdGhUeXBlKEdQ
UlJlZyBjZWxsR1BSLCBKU1R5cGVSYW5nZSByYW5nZSwgR1BSUmVnIGRzdCkKKyAgICB7CisgICAg
ICAgIGlmIChyYW5nZS5sYXN0ID09IHJhbmdlLmZpcnN0KSB7CisgICAgICAgICAgICBjb21wYXJl
OChFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0KSwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChyYW5nZS5sYXN0ID4gcmFuZ2UuZmlyc3QpOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaCA9IHNjcmF0Y2hSZWdpc3RlcigpOworICAgICAgICBsb2FkOChB
ZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
KyAgICAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0KSwgc2NyYXRjaCk7CisgICAg
ICAgIGNvbXBhcmUzMihCZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihyYW5nZS5s
YXN0IC0gcmFuZ2UuZmlyc3QpLCBkc3QpOworICAgIH0KICAgICAKICAgICB2b2lkIGlzRW1wdHko
R1BSUmVnIGdwciwgR1BSUmVnIGRzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNiBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9zZXRfcHJpdmF0ZV9icmFu
ZCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfcHJvdG90eXBlX29mKQotICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKICAgICAgICAgREVGSU5FX09QKG9w
X2lzX2VtcHR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzk5NTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NzQsNyArNTc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfaW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyNzk5
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNywzNCArMTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25l
d19vYmplY3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3RhbmNlPigpOwotICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY29u
c3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAgIFZpcnR1YWxSZWdpc3RlciBo
YXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5jZVZhbHVlOwotCi0gICAgZW1p
dExvYWRQYXlsb2FkKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsKLSAgICAvLyBXZSBkb24ndCBq
dW1wIGlmIHdlIGtub3cgd2hhdCBTeW1ib2wuaGFzSW5zdGFuY2Ugd291bGQgZG8uCi0gICAgSnVt
cCBoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwoaGFzSW5zdGFu
Y2VWYWx1ZSk7Ci0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVlID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkt
PmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpKTsKLQotICAgIC8vIFdl
IGtub3cgdGhhdCBjb25zdHJ1Y3RvciBpcyBhbiBvYmplY3QgZnJvbSB0aGUgd2F5IGJ5dGVjb2Rl
IGlzIGVtaXR0ZWQgZm9yIGluc3RhbmNlb2YgZXhwcmVzc2lvbnMuCi0gICAgZW1pdExvYWRQYXls
b2FkKGNvbnN0cnVjdG9yLCByZWdUMCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGNvbnN0cnVjdG9y
ICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJyBpLmUuIHRoZSBvYmplY3QgaXMgbm90IGEg
Qy1BUEkgdXNlciBub3IgYSBib3VuZCBmdW5jdGlvbi4KLSAgICB0ZXN0OChaZXJvLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVnVDApOwotICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKLQotICAgIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7Ci0gICAgY3VzdG9t
aGFzSW5zdGFuY2VWYWx1ZS5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1pdFN0b3JlQm9vbChkc3QsIHJl
Z1QwKTsKLQotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwpAQCAtMTU3LDggKzEyOSw2IEBAIHZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHIKICAgICBlbWl0TG9hZFBheWxvYWQo
dmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0TG9hZFBheWxvYWQocHJvdG8sIHJlZ1QxKTsKIAotICAg
IC8vIENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFsIG11c3QgYmUgYSBjZWxsIC0g
dGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5bWJvbC5oYXNJbnN0YW5jZS4K
LSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodmFsdWUpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRv
ciBnZW4oCkBAIC0yMTEsOSArMTgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2ZfY3VzdG9tKAogICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNv
ZGUubV9oYXNJbnN0YW5jZVZhbHVlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdU
MCk7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGNvbnN0cnVjdG9yLCByZWdUMik7Ci0gICAgZW1pdExv
YWQoaGFzSW5zdGFuY2VWYWx1ZSwgcmVnVDQsIHJlZ1QzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykp
OworICAgIGVtaXRMb2FkKGNvbnN0cnVjdG9yLCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2Fk
KGhhc0luc3RhbmNlVmFsdWUsIHJlZ1Q1LCByZWdUNCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1Q1LCByZWdUNCkpOwogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZXR1cm5WYWx1ZUdQ
Uik7CiB9CiAgICAgCkBAIC0zMDQsMTIgKzI3NCwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19j
ZWxsX3dpdGhfdHlwZShjb25zCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVy
YW5kOwotICAgIGludCB0eXBlID0gYnl0ZWNvZGUubV90eXBlOwogCiAgICAgZW1pdExvYWQodmFs
dWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDEpOwogCi0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSksIHJlZ1QwKTsKKyAgICBpc0Nl
bGxXaXRoVHlwZShyZWdUMCwgSlNUeXBlUmFuZ2UgeyBieXRlY29kZS5tX2ZpcnN0VHlwZSwgYnl0
ZWNvZGUubV9sYXN0VHlwZSB9LCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCiAg
ICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSwzMiArMTIxLDYgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNl
bGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hh
c0luc3RhbmNlPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9y
OwotICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJ
bnN0YW5jZVZhbHVlOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihoYXNJbnN0YW5jZVZh
bHVlLCByZWdUMCk7Ci0KLSAgICAvLyBXZSBkb24ndCBqdW1wIGlmIHdlIGtub3cgd2hhdCBTeW1i
b2wuaGFzSW5zdGFuY2Ugd291bGQgZG8uCi0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVl
ID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkp
KTsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQot
ICAgIC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UnIGkuZS4gdGhlIG9iamVjdCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0
aW9uLgotICAgIHRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCBy
ZWdUMCk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKLSAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7Ci0KLSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmso
dGhpcyk7Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDAp
OwotCi0gICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
KTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5zdGFuY2VvZj4oKTsKQEAgLTE1OSw4ICsxMzMsNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHJlZ1Qx
KTsKICAgICAKLSAgICAvLyBDaGVjayB0aGF0IHByb3RvIGFyZSBjZWxscy4gYmFzZVZhbCBtdXN0
IGJlIGEgY2VsbCAtIHRoaXMgaXMgY2hlY2tlZCBieSB0aGUgZ2V0X2J5X2lkIGZvciBTeW1ib2wu
aGFzSW5zdGFuY2UuCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QyLCB2YWx1
ZSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAg
ICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKQEAgLTMyNiwxMiArMjk4LDExIEBAIHZvaWQg
SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnMKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUg
PSBieXRlY29kZS5tX29wZXJhbmQ7Ci0gICAgaW50IHR5cGUgPSBieXRlY29kZS5tX3R5cGU7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05v
dENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCi0gICAgY29tcGFyZTgoRXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
dHlwZSksIHJlZ1QwKTsKKyAgICBpc0NlbGxXaXRoVHlwZShyZWdUMCwgSlNUeXBlUmFuZ2UgeyBi
eXRlY29kZS5tX2ZpcnN0VHlwZSwgYnl0ZWNvZGUubV9sYXN0VHlwZSB9LCByZWdUMCk7CiAgICAg
Ym94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyNCwxOCArMjMyNCwxNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0R2V0CiB9CiAjZW5kaWYKIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFu
Y2UpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20s
IHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZENv
bnN0cnVjdG9yKTsKICAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEhhc0luc3RhbmNlKTsKIAotICAgIGlmIChjb25zdHJ1Y3Rvci0+aGFzSW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpCi0gICAgICAgIHJldHVy
biAxOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBqc0luc3RhbmNlb2ZPcGVyYXRvcihnbG9i
YWxPYmplY3QsIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7CiB9CiAKIEFM
V0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCkBAIC0yODY3LDM0ICsyODY2
LDMyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXNoV2kKICAgICByZXR1
cm4gSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUsIG9i
amVjdCk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9m
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTQ2VsbCogdmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFBy
b3RvKTsKICAgICAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAg
ICBib29sIHJlc3VsdCA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgcHJvdG8pOworICAgIGJvb2wgcmVzdWx0ID0ganNJc1Byb3RvdHlwZU9mKGdsb2Jh
bE9iamVjdCwgcHJvdG8sIGFzT2JqZWN0KHZhbHVlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFByb3RvKTsKICAgICAKLSAgICBib29sIHJlc3VsdCA9IEpTT2JqZWN0OjpkZWZhdWx0SGFz
SW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pOworICAgIGJvb2wgcmVzdWx0ID0g
anNJc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgcHJvdG8sIGFzT2JqZWN0KHZhbHVlKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7Ci0gICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2Rl
QmxvY2ssIHZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSkpKQorICAgIGlmIChzdHViSW5mby0+Y29u
c2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJsb2NrLCB2YWx1ZS0+c3RydWN0dXJlKHZtKSkp
CiAgICAgICAgIHJlcGF0Y2hJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1
ZSwgcHJvdG8sICpzdHViSW5mbywgcmVzdWx0KTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDggKzI3MSw5
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXQKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBzaXplX3QsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBK
U09iamVjdCogb2JqZWN0KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklu
c3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8p
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXpl
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogdmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsK
K0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6
ZV90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRDb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0lu
c3RhbmNlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpemVGcmFtZUZv
ckZvcndhcmRBcmd1bWVudHMsIGludDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzLCBpbnQzMl90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBh
cmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0dXBGb3J3YXJk
QXJndW1lbnRzRnJhbWUsIENhbGxGcmFtZSosIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90IGxlbmd0aCkpOwpAQCAtMzAzLDcgKzMw
NCw2IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXAKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eldpdGhDYWxsRnJhbWUsIHZv
aWQsIChWTSopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25SZXRyaWV2
ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRjaGFibGUsIEpTQ2VsbCosIChWTSopKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25z
dHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSk7CiAKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVBZGQsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2Zp
bGUqKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMTksMjEgKzEyMTksMTggQEAgdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJy
YW5kKEpTR2xvYmFsT2JqZQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJ
bnN0YW5jZU9mKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU1ZhbHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5
cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91bmQp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlVmFsdWUuaXND
ZWxsKCkpOyAvLyBzaG91bGRDb25zaWRlckNhY2hpbmcgcmVqZWN0cyBub24tY2VsbHMuCi0gICAg
CiAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogICAgIAogICAgIHsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIAotICAgICAg
ICBKU0NlbGwqIHZhbHVlID0gdmFsdWVWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgUmVmUHRyPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKQEAgLTEyNzksMTEgKzEyNzYsMTEg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuYwogfQogCiB2b2lkIHJl
cGF0Y2hJbnN0YW5jZU9mKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFs
dWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNDZWxsKiB2YWx1ZSwgSlNWYWx1ZSBw
cm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdhc0ZvdW5k
KQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAg
ICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZh
bHVlLCBwcm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hl
KQorICAgIGlmICh0cnlDYWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZh
bHVlLCBwcm90b3R5cGUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKICAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25J
bnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5KEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsCiB2b2lkIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJv
b2wgd2FzRm91bmQsICBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoQ2hlY2tQcml2
YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hTZXRQcml2YXRl
QnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlcGF0Y2hJ
bnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7Cit2b2lk
IHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNDZWxsKiB2
YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3Vu
ZCk7CiB2b2lkIGxpbmtNb25vbW9ycGhpY0NhbGwoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0lu
Zm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rRGlyZWN0Q2FsbChDYWxsRnJhbWUqLCBDYWxsTGlu
a0luZm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4p
Owogdm9pZCBsaW5rU2xvd0ZvcihDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA5LDIzICs2MDksMTcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2luc3RhbmNlbwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJ
bnN0YW5jZW9mPigpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX3Byb3RvdHlwZSk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihK
U09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvKSkp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVj
dCwgcHJvdG8sIGFzT2JqZWN0KHZhbHVlKSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2luc3RhbmNlb2ZfY3VzdG9tKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0KICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5zdGFuY2VvZkN1c3RvbT4oKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
IEpTVmFsdWUgY29uc3RydWN0b3IgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9j
b25zdHJ1Y3Rvcik7CiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZSk7Ci0KLSAgICBBU1NFUlQoY29u
c3RydWN0b3IuaXNPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUgIT0gZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIHx8ICFj
b25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xl
YW4oY29uc3RydWN0b3IuZ2V0T2JqZWN0KCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFs
dWUsIGhhc0luc3RhbmNlVmFsdWUpKTsKLSAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzSW5zdGFuY2VvZk9wZXJhdG9yKGdsb2JhbE9iamVjdCwg
dmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKSkpOwogfQogCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdHJ5X2dldF9ieV9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NiwzNSArMTI4Niw2
IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAgICBkaXNwYXRj
aCgpCiBlbmQpCiAKLWxsaW50T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwgT3BPdmVycmlk
ZXNIYXNJbnN0YW5jZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZ2V0KG1fZHN0
LCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0KLSAg
ICAjIEZpcnN0IGNoZWNrIGlmIGhhc0luc3RhbmNlVmFsdWUgaXMgdGhlIG9uZSBvbiBGdW5jdGlv
bi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXQotICAgIGdldChtX2hhc0luc3RhbmNlVmFs
dWUsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxs
VGFnLCB0MiwgLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwpCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbAotCi0gICAgIyBXZSBkb24ndCBu
ZWVkIGhhc0luc3RhbmNlVmFsdWUncyB0YWcgcmVnaXN0ZXIgYW55bW9yZS4KLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qx
XSwgdDEKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9mdW5jdGlvblByb3RvSGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvblt0MV0sIHQxCi0gICAgYmluZXEgdDEsIHQyLCAub3BPdmVycmlkZXNo
YXNJbnN0YW5jZVZhbHVlTm90RGVmYXVsdAotCi0gICAgIyBXZSBrbm93IHRoZSBjb25zdHJ1Y3Rv
ciBpcyBhIGNlbGwuCi0gICAgZ2V0KG1fY29uc3RydWN0b3IsIHQwKQotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHNpemUsIHQwLCB0MSkKLSAgICB0YnogSlNDZWxs
OjptX2ZsYWdzW3QxXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgdDAKLSAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi0KLS5vcE92
ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsOgotLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VW
YWx1ZU5vdERlZmF1bHQ6Ci0gICAgc3RvcmVpIDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfZW1wdHks
IE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQo
bV9vcGVyYW5kLCB0MSkKQEAgLTEzNjksOCArMTM0MCwxMCBAQCBsbGludE9wV2l0aFJldHVybihv
cF9pc19jZWxsX3dpdGhfdHlwZSwgCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDAsIHQzKQogICAgIGJpbmVxIHQwLCBDZWxsVGFn
LCAubm90Q2VsbENhc2UKLSAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlwZSwg
dDApCi0gICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0M10sIHQwLCB0MQorICAgIGdldHUoc2l6ZSwg
T3BJc0NlbGxXaXRoVHlwZSwgbV9maXJzdFR5cGUsIHQwKQorICAgIGJiYiBKU0NlbGw6Om1fdHlw
ZVt0M10sIHQwLCAubm90Q2VsbENhc2UKKyAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUs
IG1fbGFzdFR5cGUsIHQyKQorICAgIGNiYmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIsIHQxCiAg
ICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQxKQogLm5vdENlbGxDYXNlOgogICAgIHJldHVybihCb29s
ZWFuVGFnLCAwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQ2LDI5ICsxMzQ2LDYgQEAgbGxpbnRPcFdpdGhQcm9maWxlKG9wX2JpdG5vdCwg
T3BCaXRub3QsIAogZW5kKQogCiAKLWxsaW50T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwg
T3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAg
Z2V0KG1fZHN0LCB0MykKLQotICAgIGdldChtX2hhc0luc3RhbmNlVmFsdWUsIHQxKQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQotICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgotICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uW3QyXSwgdDIKLSAgICBicW5lcSB0MCwgdDIsIC5vcE92ZXJyaWRlc0hhc0luc3RhbmNl
Tm90RGVmYXVsdFN5bWJvbAotCi0gICAgZ2V0KG1fY29uc3RydWN0b3IsIHQxKQotICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQotICAgIHRieiBKU0NlbGw6Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MQotICAgIG9ycSBWYWx1ZUZhbHNl
LCB0MQotICAgIHN0b3JlcSB0MSwgW2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goKQotCi0ub3BP
dmVycmlkZXNIYXNJbnN0YW5jZU5vdERlZmF1bHRTeW1ib2w6Ci0gICAgc3RvcmVxIFZhbHVlVHJ1
ZSwgW2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goKQotZW5kKQotCi0KIGxsaW50T3BXaXRoUmV0
dXJuKG9wX2lzX2VtcHR5LCBPcElzRW1wdHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBy
ZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDApCkBAIC0xNDM5LDExICsxNDE2LDEzIEBAIGVsc2UKIGVuZAogCiBsbGlu
dE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBnZXR1KHNpemUsIE9wSXNDZWxs
V2l0aFR5cGUsIG1fdHlwZSwgdDApCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNr
LCAubm90Q2VsbENhc2UKLSAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCisgICAg
Z2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QzXSwgdDAsIC5ub3RDZWxsQ2FzZQorICAgIGdldHUoc2l6ZSwgT3BJc0Nl
bGxXaXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCisgICAgY2JiZXEgSlNDZWxsOjptX3R5cGVbdDNd
LCB0MiwgdDEKICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKICAgICByZXR1cm4odDEpCiAubm90Q2Vs
bENhc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2
Miw3ICs1NjIsNiBAQCBjb25zdCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAK
ICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
Y29uc3RleHByIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UgPSBjb25zdGV4cHIgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29u
c3QgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dl
dFByb3RvdHlwZU91dE9mTGluZQogCiAjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw5ICs3NSw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0
T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9w
ZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3Rv
bUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7Ci0gICAgQ3VzdG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0Rf
VEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2UpOwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJv
cGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgIERlZmlu
ZU93blByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlZmluZU93blByb3Bl
cnR5KTsKIApAQCAtMTU1LDcgKzE1Miw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAg
ICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVz
LCBcCi0gICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnByZXZl
bnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
IFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIGNvbnN0IENsYXNzSW5m
byBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBl
KSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVu
Y1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJv
dG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oY2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlvbi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MCw3
ICs2MSw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAq
Y2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1
YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9y
KHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogCi0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3Ms
IGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KICAgICAKQEAgLTk5LDQgKzEwMCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25Qcm90b0Z1CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVu
Y0hhc0luc3RhbmNlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgYm9vbCByZXN1bHQg
PSBhc09iamVjdCh0aGlzVmFsdWUpLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAy
Nzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlv
biA6IHB1YmxpYyBKU05vbkZpbgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSB8IE92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxE
YXRhOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZp
c2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0
cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUp
OwotICAgICAgICBBU1NFUlQoIWNhbGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0
aW9uPih2bSkpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3Jz
IGFsd2F5cyBoYXZlIGBwcm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAg
ICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUp
OworICAgICAgICBib29sIGhhc0luc3RhbmNlID0gY2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUpOwpAQCAtMTA2LDEwICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVu
d3JhcEZvckxlZ2FjeUludGxDb25zdHJ1CiAgICAgaWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAg
ICAgIHJldHVybiBpbnN0YW5jZTsKIAotICAgIEFTU0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRl
IGluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IGNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7
IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fu
bm90IGJlIGRlbGV0ZWQuCi0gICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0
YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0LCBwcm90b3R5cGUpOworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVm
YXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCwxOSArMTQ0LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rp
b25DbwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBu
ZXdUYXJnZXQpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Ci17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+
KGpzRHluYW1pY0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJv
dW5kT2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRP
YmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUp
KSk7Ci19Ci0KIGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24pCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEw
LDExICsxOTcsNiBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAg
ICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1ib29sIEpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFz
SW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9i
amVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUp
OwotfQotCiBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRU
aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZU1heUJl
TnVsbCwgZG91YmxlIGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0
RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwx
MCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3Vu
ZEZ1bmN0aW9uQ2FsbCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5j
dGlvbkNvbnN0cnVjdCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5jdGlv
bik7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7
Ci0KIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdz
ICYgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC00OSw4ICs0MSw2IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGRvdWJsZSBsZW5ndGgsIEpTU3RyaW5nKiBu
YW1lTWF5QmVOdWxsKTsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFy
Z2V0RnVuY3Rpb24oKSB7IHJldHVybiBtX3RhcmdldEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNW
YWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQpAQCAtNzEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5j
dGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQm91
bmRGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rpb24sIG1fdGFyZ2V0RnVuY3Rpb24pOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdAogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24g
Mjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20p
CiAvLyBUaGUgZmlyc3QgYW5kIGxhc3QgSlNUeXBlIGFyZSBpbmNsdXNpdmUKIHN0cnVjdCBKU1R5
cGVSYW5nZSB7CiAgICAgYm9vbCBjb250YWlucyhKU1R5cGUgdHlwZSkgY29uc3QgeyByZXR1cm4g
Zmlyc3QgPD0gdHlwZSAmJiB0eXBlIDw9IGxhc3Q7IH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QgeyBvdXQucHJpbnQoIkpTVHlwZVJhbmdlIHsgIiwgZmlyc3QsICIsICIs
IGxhc3QsICIgfSIpOyB9CiAKICAgICBKU1R5cGUgZmlyc3Q7CiAgICAgSlNUeXBlIGxhc3Q7CkBA
IC03MSw3ICs3Miw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oSlNTdHJpbmdJ
dGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0
ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RP
YmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVj
dFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCi0gICAgbWFjcm8oSlNGdW5jdGlvbiwg
SlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAorICAgIG1h
Y3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNCb3VuZEZ1
bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJu
YWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSkgXAogICAgIG1h
Y3JvKE51bGxTZXR0ZXJGdW5jdGlvbiwgSlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLCBK
U1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5
cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNSwxMiArMjE1LDYgQEAgY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoVk0mIHZtKSBj
bwogICAgIHJldHVybiBjbGFzc0luZm8odm0pLT5jbGFzc05hbWU7CiB9CiAKLWJvb2wgSlNDZWxs
OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkK
LXsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0Owor
ICAgIGJvb2wgaXNKU0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJik7
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJik7CiAgICAgdGVtcGxhdGU8Q29uY3VycmVuY3k+
IFRyaVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0mKTsKQEAgLTI1Myw3ICsyNTQs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBz
ZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpOwog
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0NywxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6
OmlzUHJveHkoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94
eVR5cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0VHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlND
ZWxsOjppc0pTRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gSlNGdW5j
dGlvblR5cGUgfHwgbV90eXBlID09IEpTQm91bmRGdW5jdGlvblR5cGU7Cit9CisKIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgZ2V0Q2FsbERhdGEgY29uY3VycmVuY3ktc2FmZSBvbmNlIE5QQVBJ
IHN1cHBvcnQgaXMgcmVtb3ZlZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4MDEKIHRlbXBsYXRlPENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5PgpAQCAtMjU0
LDcgKzI1OSw3IEBAIEFMV0FZU19JTkxJTkUgVHJpU3RhdGUgSlNDZWxsOjppc0NhbGxhYmwKIHsK
ICAgICBpZiAoIWlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7Ci0g
ICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKCkp
CiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoaW5saW5lVHlwZUZsYWdz
KCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgewogICAgICAgICBpZiBjb25zdGV4cHIgKGNvbmN1
cnJlbmN5ID09IENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKQpAQCAtMjc3LDcgKzI4Miw3IEBAIGlu
bGluZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXQKICAgICAgICAgcmV0dXJuICht
ZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6
VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICAvLyBX
ZSBrbm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3REYXRhIG9mIGJvdGggdHlwZXMgYXJlIGNvbmN1
cnJlbmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNsYXNzZXMgb2YgSlNGdW5jdGlvbiBhbmQgSW50
ZXJuYWxGdW5jdGlvbgogICAgIC8vIG5ldmVyIG92ZXJyaWRlIGdldENvbnN0cnVjdERhdGEgKHRo
aXMgaXMgZW5zdXJlZCBieSBBU1NFUlQgaW4gSlNGdW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlv
bikuCi0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSB8fCB0eXBlKCkgPT0gSW50ZXJu
YWxGdW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNGdW5jdGlvbigpIHx8IHR5cGUoKSA9PSBJbnRl
cm5hbEZ1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENv
bnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0
ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNiBAQCBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlCiAgICAgOiBCYXNlKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFn
SW52YXJpYW50cygpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGds
b2JhbE9iamVjdCk7CiB9CiAKQEAgLTExMiw3ICsxMTEsNiBAQCB2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0aGlzKSk7Ci0gICAgQVNT
RVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CiAgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERh
dGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4K
ICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAtMTIyLDcgKzEyMCw2IEBA
IHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCAKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAg
ICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKICAgICAvLyBKU0NlbGw6OntnZXRD
YWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEgPT0gJkpT
RnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSkt
PmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk7CkBAIC05MDYsMTYgKzkw
Myw0IEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnIKICAgICByZXR1
cm4gUHJvcGVydHlTdGF0dXM6OlJlaWZpZWQ7CiB9CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotdm9p
ZCBKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCkKLXsKLSAgICAvLyBJ
ZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSdsbCBuZWVkIHRvIHVwZGF0ZSBzcGVjdWxhdGlvbkZyb21D
bGFzc0luZm9Jbmhlcml0YW5jZS4KLSAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0lu
Zm8odm0oKSk7Ci0gICAgaWYgKCEoaW5saW5lVHlwZUZsYWdzKCkgJiBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mbyA9PSBKU0JvdW5kRnVu
Y3Rpb246OmluZm8oKSk7Ci0gICAgZWxzZQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvICE9
IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKTsKLX0KLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDEyICsyMTIsNiBA
QCBwcml2YXRlOgogICAgIFByb3BlcnR5U3RhdHVzIHJlaWZ5TGF6eU5hbWVJZk5lZWRlZChWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlm
eUxhenlCb3VuZE5hbWVJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKIAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgdm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZh
cmlhbnRzKCk7Ci0jZWxzZQotICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygp
IHsgfQotI2VuZGlmCi0KICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgdWludHB0cl90IG1fZXhlY3V0YWJsZU9yUmFyZURhdGE7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgaW5saW5lIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oVk0mIHZtLCBGdQogICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkK
ICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZXhl
Y3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQogCiBp
bmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODEsNiArNzgxLDggQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0pOwogCiAgICAgbV9m
dW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFu
Y2VTeW1ib2wpXS5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOworCiAg
ICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0Z1
bmN0aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpOwpA
QCAtOTMxLDEzICs5MzMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAgICAgfSk7CiAgICAgbV9wcm94eU9iamVjdFN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBi
b29sIGlzQ2FsbGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNOdWxsKCksIGlzQ2FsbGFi
bGUpKTsKLSAgICAgICAgfSk7Ci0gICAgbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLmlu
aXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQp
IHsKLSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBpbml0
LnNldChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpz
TnVsbCgpLCBpc0NhbGxhYmxlKSk7CisgICAgICAgICAgICBpbml0LnNldChQcm94eU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpKSk7CiAgICAgICAg
IH0pOwogICAgIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewpAQCAtMTM1NSwxNSArMTM1MSw2
IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMKICAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBl
ZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSkpOwogICAgICAgICB9KTsK
LSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5n
KCksIGlzQm91bmRGdW5jdGlvbikpOwotICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGhhc0luc3Rh
bmNlQm91bmRGdW5jdGlvbikpOwotICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbnN0YW5jZU9mKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Ci0gICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNl
T2YpKTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxvZyldLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpKTsKICAgICAgICAgfSk7CkBA
IC0yMTg1LDcgKzIxNzIsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKCiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyNSw3ICs0MjUsNiBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9i
amVjdFN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5UmV2b2tlU3RydWN0dXJlOwogICAgIExhenlD
bGFzc1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlOwogCkBAIC04NDcsNyAr
ODQ2LDYgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAg
U3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIHByb3h5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eU9iamVj
dFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBTdHJ1Y3R1cmUqIGNhbGxhYmxlUHJveHlPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMp
OyB9CiAgICAgU3RydWN0dXJlKiBvcmlnaW5hbFJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0
aENvbnRpZ3VvdXMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwQW5hbHl6ZXIuaCIKICNpbmNsdWRl
ICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKQEAgLTY0LDYgKzY1LDcg
QEAgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydAogY29uc3QgQVNDSUlM
aXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvciB7
ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmln
dXJhYmxlIHByb3BlcnR5LiJfcyB9OwogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxl
UHJvcGVydHlDaGFuZ2VFbnVtZXJhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ug
ZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBj
b25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5
RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiJfcyB9OworY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQ
cm90b3R5cGVOb3RPYmplY3RFcnJvciB7ICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qg
d2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MgfTsKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTT2JqZWN0KSB9OwogCkBAIC0yMzQ2LDEyICsyMzQ4
LDM0IEBAIHN0ZDo6b3B0aW9uYWw8U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hFbnQKICAgICByZXR1
cm4gc3RydWN0dXJlKHZtKS0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CiB9
CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaW5zdGFuY2VvZm9wZXJhdG9yCiti
b29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKworICAgIGlmIChoYXNJbnN0
YW5jZVZhbHVlID09IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKKworICAgIHJldHVybiBoYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVl
LCBoYXNJbnN0YW5jZVZhbHVlKTsKK30KKwogYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0
YW5jZVZhbHVlKQogeworICAgIEFTU0VSVChoYXNJbnN0YW5jZVZhbHVlKTsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
JiYgaGFzSW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgewogICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0
YSh2bSwgaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5z
dGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwpAQCAtMjM2Niw2OCAr
MjM5MCw1NiBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjCiAgICAg
ICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgfQogCi0gICAg
VHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCk7Ci0gICAgaWYgKGluZm8u
aW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVl
LCBwcm90b3R5cGUpKTsKLSAgICB9Ci0gICAgaWYgKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNl
KCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
Ci0gICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIG1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhp
cywgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAgIH0KKyAgICBpZiAoaXNDYWxsYWJsZSh2bSkp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGds
b2JhbE9iamVjdCwgdmFsdWUpKTsKIAogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihn
bG9iYWxPYmplY3QsIHRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmpl
Y3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5aGFzaW5zdGFuY2UK
K2Jvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
aGFzSW5zdGFuY2VTeW1ib2wpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotfQorICAgIGlmICghaXNDYWxsYWJsZSh2
bSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0lu
c3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgcHJvdG8pCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBpZiAoaW5oZXJpdHM8SlNCb3Vu
ZEZ1bmN0aW9uPih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KHRoaXMpLT50YXJnZXRGdW5jdGlvbigpLT5oYXNJbnN0YW5jZShn
bG9iYWxPYmplY3QsIHZhbHVlKSk7CiAKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIEpTVmFsdWUgcHJvdG8gPSBnZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKKwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW5zdGFuY2VvZiBjYWxsZWQgb24g
YW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgSW5zdGFuY2VvZlByb3RvdHlw
ZU5vdE9iamVjdEVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBhc09iamVjdChwcm90byktPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBhc09i
amVjdCh2YWx1ZSkpKTsKK30KKworYm9vbCBKU09iamVjdDo6aXNQcm90b3R5cGVPZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBKU1ZhbHVlIG9iamVjdFZhbHVl
ID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFvYmplY3RWYWx1ZS5p
c09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBvYmplY3QgPSBh
c09iamVjdChvYmplY3RWYWx1ZSk7Ci0gICAgICAgIGlmIChwcm90byA9PSBvYmplY3QpCisgICAg
ICAgIGlmIChvYmplY3QgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
cHJvdG8pKSk7Ci19Ci0KIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIERv
bnRFbnVtUHJvcGVydGllc01vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgU2lnbmF0dXJlOwogCiBp
bmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZh
bHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBl
KSkKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCktPmlzSlNGdW5jdGlv
bigpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC04Miw2ICs4Miw3IEBAIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJ
SUxpdGUKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25m
aWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9yOwogZXh0ZXJuIEpTX0VY
UE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hh
bmdlRW51bWVyYWJpbGl0eUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFT
Q0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvcjsK
K2V4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgSW5zdGFuY2VvZlBy
b3RvdHlwZU5vdE9iamVjdEVycm9yOwogCiBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogCkBAIC02NzUs
NyArNjc2LDggQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VW
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbnN0YW5jZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwotICAgIHN0YXRpYyBib29sIGRlZmF1bHRIYXNJbnN0YW5jZShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZGVmYXVsdEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Byb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bVByb3RvdHlwZUNoYWluRGVwdGggPSA0MDAwMDsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwpAQCAtMTI0MCw4ICsxMjQyLDYgQEAgcHJpdmF0
ZToKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik7Ci0KIGlubGluZSBKU0ZpbmFsT2JqZWN0
KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVXaXRoQnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQogewogICAgIEpTRmluYWxPYmplY3QqIGZp
bmFsT2JqZWN0ID0gbmV3ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQw
LDcgKzU0MCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKIAog
QUxXQVlTX0lOTElORSBDYWxsRGF0YSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTQ2VsbCogY2VsbCkK
IHsKLSAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxs
LT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmdldENhbGxEYXRh
KGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q2FsbERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJlc3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lIHx8IGNlbGwtPmlzVmFsaWRDYWxsZWUoKSk7CkBAIC01NTksNyArNTU5LDcgQEAgaW5s
aW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoVk0mIHZtLAogICAgIGlmICghdmFsdWUuaXND
ZWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXND
ZWxsKCk7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAo
Y2VsbC0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDb25z
dHJ1Y3REYXRhKGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxl
KHZtKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKICAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0g
Q2FsbERhdGE6OlR5cGU6Ok5vbmUgfHwgY2VsbC0+aXNWYWxpZENhbGxlZSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDCiAgICAgQ0FTRShGaW5hbE9iamVjdFR5cGUpCiAgICAgQ0FTRShKU0NhbGxlZVR5cGUpCiAg
ICAgQ0FTRShKU0Z1bmN0aW9uVHlwZSkKKyAgICBDQVNFKEpTQm91bmRGdW5jdGlvblR5cGUpCiAg
ICAgQ0FTRShJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKE51bGxTZXR0ZXJGdW5jdGlv
blR5cGUpCiAgICAgQ0FTRShCb29sZWFuT2JqZWN0VHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksMTAg
QEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBPYmplY3RUeXBlLAogICAgIEZpbmFsT2Jq
ZWN0VHlwZSwKICAgICBKU0NhbGxlZVR5cGUsCi0gICAgSlNGdW5jdGlvblR5cGUsCiAgICAgSW50
ZXJuYWxGdW5jdGlvblR5cGUsCiAgICAgTnVsbFNldHRlckZ1bmN0aW9uVHlwZSwKKyAgICBKU0Z1
bmN0aW9uVHlwZSwKKyAgICBKU0JvdW5kRnVuY3Rpb25UeXBlLAogICAgIEJvb2xlYW5PYmplY3RU
eXBlLAogICAgIE51bWJlck9iamVjdFR5cGUsCiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAy
Nzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogLy8gSW5saW5lIGZsYWdzLgogCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCi1zdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSAxIDw8IDE7CiBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldENhbGxEYXRhID0gMSA8PCAyOyAvLyBOZWVkIHRo
aXMgZmxhZyBpZiB5b3UgaW1wbGVtZW50IFtbQ2FsbGFibGVdXSBpbnRlcmZhY2UsIHdoaWNoIG1l
YW5zIG92ZXJyaWRpbmcgZ2V0Q2FsbERhdGEuIFRoZSBvYmplY3QgbWF5IG5vdCBiZSBjYWxsYWJs
ZSBzaW5jZSBnZXRDYWxsRGF0YSBjYW4gc2F5IGl0IGlzIG5vdCBjYWxsYWJsZS4KIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCAzOwog
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNUb1RoaXMgPSAxIDw8IDQ7IC8vIElm
IHRoaXMgaXMgZmFsc2UgdGhlbiB0aGlzIHJldHVybnMgc29tZXRoaW5nIG90aGVyIHRoYW4gJ3Ro
aXMnLiBOb24tb2JqZWN0IGNlbGxzIHRoYXQgYXJlIHZpc2libGUgdG8gSlMgaGF2ZSB0aGlzIHNl
dCBhcyBkbyBzb21lIGV4b3RpYyBvYmplY3RzLgpAQCAtNDcsNyArNDYsNiBAQCBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2VsCiAKIC8vIE91dCBvZiBsaW5lIGZsYWdzLgog
Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwg
ODsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1l
cyA9IDEgPDwgOTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duU3Bl
Y2lhbFByb3BlcnR5TmFtZXMgPSAxIDw8IDEwOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBQ
cm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDExOwpAQCAtOTAsOCArODgsNiBAQCBwdWJs
aWM6CiAKICAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9mbGFnczIpIDw8IG51bWJlck9mSW5saW5lQml0cykgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9mbGFncyk7IH0KICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCk7IH0K
LSAgICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25G
bGFnczI8SW1wbGVtZW50c0hhc0luc3RhbmNlPigpOyB9Ci0gICAgYm9vbCBpbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxJbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRDYWxsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVzR2V0Q2FsbERhdGE+KCk7IH0K
ICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxhZ3MoKSk7IH0KICAgICBib29s
IGhhc1N0YXRpY1Byb3BlcnR5VGFibGUoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU+KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBOdW1i
ZXJDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bWJl
clByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVy
dHkpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQ
cm90b3R5cGVPZik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90
b0Z1bmNEZWZpbmVHZXR0ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcik7CkBAIC02Myw3ICs2Miw3IEBAIHZvaWQg
T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLCBvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc093blByb3BlcnR5LCBvYmplY3RQcm90
b0Z1bmNIYXNPd25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEsIEhhc093blByb3BlcnR5SW50cmluc2ljKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5wcm9wZXJ0
eUlzRW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKLSAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
c1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX0JVSUxU
SU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJvdG90
eXBlT2YsIG9iamVjdFByb3RvdHlwZUlzUHJvdG90eXBlT2ZDb2RlR2VuZXJhdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19kZWZp
bmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19kZWZpbmVTZXR0
ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29rdXBHZXR0ZXJfXywg
b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CkBAIC0xMjcsMzMgKzEyNiw2IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3Qs
IGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlm
ICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKLSAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmopOwotICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCi0gICAgICAgIHJldHVybiBl
bmNvZGVkSlNWYWx1ZSgpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgIGlmICghdi5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgaWYgKHYgPT0gdGhpc09iaikK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKLSAg
ICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IH0KLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDYgKzc3LDM1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc1R5cGVvZklzRnVuY3Rpb24o
SlMKICAgICByZXR1cm4gcmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOwogfQogCitBTFdBWVNfSU5M
SU5FIGJvb2wganNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlLCBKU09iamVjdCogdmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGFzT2JqZWN0KHByb3RvdHlwZSktPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSkpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wganNJbnN0YW5jZW9mT3BlcmF0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBjb25z
dHJ1Y3RvciwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSaWdodCBoYW5kIHNpZGUgb2YgaW5zdGFuY2Vv
ZiBpcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaGFzSW5zdGFuY2VWYWx1ZQorICAgICAg
ICA/IGFzT2JqZWN0KGNvbnN0cnVjdG9yKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSwgaGFzSW5zdGFuY2VWYWx1ZSkKKyAgICAgICAgOiBhc09iamVjdChjb25zdHJ1Y3RvciktPmhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIEpTU3Ry
aW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IHUxLCBKU1N0cmluZyogczIpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJ
KHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIgKzQ4LDYgQEAgUHJveHlPYmplY3Q6
OlByb3h5T2JqZWN0KFZNJiB2bSwgU3RydWN0dQogewogfQogCi1TdHJ1Y3R1cmUqIFByb3h5T2Jq
ZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0YXJnZXQpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJl
dHVybiB0YXJnZXQuaXNDYWxsYWJsZSh2bSkgPyBnbG9iYWxPYmplY3QtPmNhbGxhYmxlUHJveHlP
YmplY3RTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKTsK
LX0KLQogdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogewog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcxLDExICs2NSw2
IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwKICAgICBKU09iamVj
dCogdGFyZ2V0QXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpOwogCiAgICAgbV9p
c0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzQ2FsbGFibGUodm0pOwotICAgIGlmIChtX2lz
Q2FsbGFibGUpIHsKLSAgICAgICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSh2bSktPnR5cGVJ
bmZvKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNl
KCkgJiYgaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwotICAgIH0KLQogICAg
IG1faXNDb25zdHJ1Y3RpYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzQ29uc3RydWN0b3Iodm0pOwog
CiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXRBc09iamVjdCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFByb3h5T2Jq
ZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQs
IEpTVmFsdWUgaGFuZGxlcikKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gUHJveHlPYmplY3Q6OnN0cnVj
dHVyZUZvclRhcmdldChnbG9iYWxPYmplY3QsIHRhcmdldCk7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVyZSgpOwogICAgICAg
ICBQcm94eU9iamVjdCogcHJveHkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm94eU9i
amVjdD4odm0uaGVhcCkpIFByb3h5T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwcm94
eS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsKICAg
ICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBib29sIGlzQ2FsbGFibGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBmbGFncyA9IFN0cnVjdHVyZUZsYWdz
OwotICAgICAgICBpZiAoaXNDYWxsYWJsZSkKLSAgICAgICAgICAgIGZsYWdzIHw9IChJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKTsKLSAgICAgICAg
U3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgZmxhZ3MpLCBpbmZvKCksIE5vbkFy
cmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICBTdHJ1Y3R1cmUqIHJlc3Vs
dCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oUHJveHlPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgTm9uQXJyYXkgfCBN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSkp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzcsNyArNzQsNiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3h5T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSB0YXJnZXQpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1By
b2ZpbGVyLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNCw3ICs1MzQs
NyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkCiAgICAgICAgICAg
ICAgICAgbV9saXZlQ2VsbFBvaW50ZXJzLmFkZChjYWxsZWUpOwogICAgICAgICAgICAgfTsKIAot
ICAgICAgICAgICAgaWYgKGNhbGxlZUNlbGwtPnR5cGUoKSAhPSBKU0Z1bmN0aW9uVHlwZSkgewor
ICAgICAgICAgICAgaWYgKCFjYWxsZWVDZWxsLT5pc0pTRnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGNh
bGxlZUNlbGwtPnZtKCksIGNhbGxlZUNlbGwpKQogICAgICAgICAgICAgICAgICAgICBhZGRDYWxs
ZWUob2JqZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDctMTUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IEFuIGlzc3VlIGFib3V0IGV2YWx1YXRpbmcgaW5zdGFuY2VvZgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorCiAyMDIxLTA3LTE1ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5j
b20+CiAKICAgICAgICAgPGRpYWxvZz4gZWxlbWVudDogZG8gbm90IHBlcmZvcm0gY2xvc2UoKSBt
ZXRob2Qgc3RlcHMgd2hlbiByZW1vdmluZyBvcGVuIGF0dHJpYnV0ZS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rv
ckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBKU0RPTUNvbnN0
cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9N
T2JqZWN0OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6
OkltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRh
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGE7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtMjkxNCw3ICsyOTE0LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJHN0cnVjdHVy
ZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0
Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH07Ci0gICAgJHN0cnVjdHVyZUZsYWdz
eyJKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSJ9ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IjsKICAgICAgICAg
CiAgICAgIyBQcm90b3R5cGUKICAgICB1bmxlc3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3Rv
dHlwZSgkaW50ZXJmYWNlKSB8fCAkaW50ZXJmYWNlLT5pc05hbWVzcGFjZU9iamVjdCkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdpbmRvdyY+KEJh
c2U6OndyYXBwZWQoKSk7CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3Rh
dGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKIHByb3RlY3RlZDoKICAgICBKU0RPTVdpbmRvdyhKU0M6OlZNJiwgSlNDOjpT
dHJ1Y3R1cmUqLCBSZWY8RE9NV2luZG93PiYmLCBKU1dpbmRvd1Byb3h5Kik7CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNXaW5kb3dQcm94eSopOwpJbmRleDogTGF5b3V0VGVz
dHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTk1NSkKKysrIExheW91dFRlc3RzL2pzL2RvbS9vYmpl
Y3QtcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05
LDcgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsCiBQQVNT
IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVj
dC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVuZGVmaW5lZCwgJ2hhc093blByb3BlcnR5JykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1bmRlZmluZWQsICdo
YXNPd25Qcm9wZXJ0eScpJykuCiBQQVNTIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1l
cmFibGUuY2FsbCh1bmRlZmluZWQsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdP
YmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodW5kZWZpbmVkLCAncHJv
cGVydHlJc0VudW1lcmFibGUnKScpLgotUEFTUyBPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBl
T2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLmlzUHJv
dG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpJykuCitQQVNTIE9iamVjdC5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZi5jYWxsKHVuZGVmaW5lZCwgdGhpcykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433675</attachid>
            <date>2021-07-16 07:20:08 -0700</date>
            <delta_ts>2021-07-16 12:47:31 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210716172006.patch</filename>
            <type>text/plain</type>
            <size>173661</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnQgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0IGFuZCBBcnJheS5wcm90b3R5cGUuZmluZExh
c3RJbmRleApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5h
bC1mdW5jdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0
YW5jZW9mLWludGVybmFsLWZ1bmN0aW9uLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZuKCkge30K
KyAgICB2YXIgYXJyID0gW107CisgICAgdmFyIHJlID0gLyg/OikvOworICAgIHZhciBkYXRlID0g
bmV3IERhdGU7CisgICAgdmFyIG1hcCA9IG5ldyBNYXA7CisgICAgdmFyIHNldCA9IG5ldyBTZXQ7
CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7
CisgICAgICAgIGFjYyArPSBmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uCisgICAgICAgICAgICAmJiBh
cnIgaW5zdGFuY2VvZiBBcnJheQorICAgICAgICAgICAgJiYgcmUgaW5zdGFuY2VvZiBSZWdFeHAK
KyAgICAgICAgICAgICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlCisgICAgICAgICAgICAmJiBtYXAg
aW5zdGFuY2VvZiBNYXAKKyAgICAgICAgICAgICYmIHNldCBpbnN0YW5jZW9mIFNldDsKKyAgICB9
CisgICAgaWYgKGFjYyAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2Yt
cHJpbWl0aXZlLWNlbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
aW5zdGFuY2VvZi1wcmltaXRpdmUtY2VsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQor
ICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgbnVtYmVyID0gNC41OworICAgIHZhciBz
dHJpbmcgPSAic3RyIjsKKyAgICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7CisgICAgdmFyIGJpZ2lu
dCA9IDEwbjsKKworICAgIHZhciBhY2MgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU3
OyArK2kpIHsKKyAgICAgICAgYWNjICs9IG51bWJlciBpbnN0YW5jZW9mIEZvbworICAgICAgICAg
ICAgfHwgc3RyaW5nIGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCBzeW1ib2wgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IGJpZ2ludCBpbnN0YW5jZW9mIEJhcjsKKyAgICB9Cisg
ICAgaWYgKGFjYykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOwor
fSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZl
LW5vbi1jZWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3Rh
bmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7
fQorICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyArPSB1bmRlZmluZWQgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IG51bGwgaW5zdGFuY2VvZiBCYXIKKyAgICAgICAgICAg
IHx8IHRydWUgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IGkgaW5zdGFuY2VvZiBCYXI7
CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LXByb3h5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNl
b2YtcHJveHkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5z
dGFuY2VvZi1wcm94eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisoZnVuY3Rp
b24oKSB7CisgICAgZnVuY3Rpb24gVGFyZ2V0KCkge30KKyAgICB2YXIgdmFsdWUgPSBuZXcgVGFy
Z2V0KCk7CisgICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KFRhcmdldCwgUmVmbGVjdCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGlmICghKHZhbHVlIGlu
c3RhbmNlb2YgcHJveHkpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1j
ZWxsLXdpdGgtdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
cy1jZWxsLXdpdGgtdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
CisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGlzQXJyYXkgPSAkdm0uY3JlYXRlQnVpbHRpbigiKGZ1
bmN0aW9uIChjKSB7IHJldHVybiBAaXNBcnJheShjKTsgfSkiKTsKKyAgICBub0lubGluZShpc0Fy
cmF5KTsKKworICAgIHZhciBzeW0gPSBTeW1ib2woKTsKKyAgICB2YXIgYXJyID0gW107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBpZiAodHlwZW9mICJmb28i
ICE9PSAic3RyaW5nIiB8fCB0eXBlb2YgaSA9PT0gInN0cmluZyIgfHwKKyAgICAgICAgICAgIHR5
cGVvZiBzeW0gIT09ICJzeW1ib2wiIHx8IHR5cGVvZiBhcnIgPT09ICJzeW1ib2wiIHx8CisgICAg
ICAgICAgICAhaXNBcnJheShhcnIpIHx8IGlzQXJyYXkoc3ltKSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDogSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjc5OTU1KQorKysgSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk5LDkgKzE1OTksNiBAQCB0
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2NvCiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVy
YXRvcnMvc2NvcGUtcGFyYW0tcmVzdC1lbGVtLXZhci1vcGVuLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtvdXRzaWRlwrssIMKraW5zaWRlwrspIHRv
IGJlIHRydWUnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2luc3RhbmNlb2YvcHJvdG90eXBl
LWdldHRlci13aXRoLXByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogZ2V0
dGVyIGZvciAncHJvdG90eXBlJyBjYWxsZWQiCi0gIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9y
OiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtYW5kLWFzc2lnbm1lbnQtb3BlcmF0b3Itbm9uLXNp
bXBsZS1saHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBzaG91bGQg
bm90IGJlIGV2YWx1YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNz
aWdubWVudC9sZ2NsLW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5q
czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
OCBAQAorMjAyMS0wNy0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CisKKyAgICAgICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVm
LmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKGNvbnN0cnVjdG9ySGFzSW5zdGFuY2Up
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0aW9uUHJvdG90
eXBlLmpzOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3lt
Ym9sSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL09iamVjdFByb3Rv
dHlwZS5qczogQWRkZWQuCisgICAgICAgIChpc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlzaXRXZWFr
KToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxs
VmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9F
eGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9TdHJpbmcpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1
cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
byk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFuY2UpOgor
ICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZSk6CisgICAgICAgIChKU0M6
OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVN0
cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNGdW5jdGlvblNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1
bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2luc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHSGVh
cExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpxdWVyaWVkVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6OmFzSlNUeXBlUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1R5cGVJbmZvT3BlcmFuZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dHlwZUluZm9PcGVyYW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZv
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhUeXBl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVj
dGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpjaGVja0ZvcmJpZGRlblByb3RvdHlwZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmTm90RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNl
T2YpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlv
blByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91
bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgIChKU0M6OkpTVHlwZVJhbmdlOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSk6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzc2Vy
dFR5cGVJbmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm94eU9iamVjdFN0cnVjdHVyZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtBdXhpbGlhcnlBbmRWaXNpdE91dE9mTGluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
Z2V0SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpnZXRDb25zdHJ1Y3REYXRh
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjptYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUpOgor
ICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0hhc0luc3RhbmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlND
Ojpqc0luc3RhbmNlb2ZPcGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJp
ZmllZFN0YWNrVHJhY2VzKToKKwogMjAyMS0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzYW1wbGluZ1Byb2ZpbGVySWdub3JlRXh0
ZXJuYWxTb3VyY2VJRCBvcHRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
TW9kdWxlTG9hZGVyLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL051bWJl
ckNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dENvbnN0cnVjdG9yLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZU9wZXJhdGlvbnMuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL01hcFByb3Rv
dHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCiAkKFBST0pF
Q1RfRElSKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVp
bHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKKyQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwogJChQUk9K
RUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQsNiArMTE0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBcCisgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShy
ZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1l
cyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xv
dE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwotICAgIHN0YXRpY19hc3NlcnQoIShTdHJ1Y3R1cmVG
bGFncyAmIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCAidXNpbmcgY3VzdG9tSGFzSW5z
dGFuY2UiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwg
T3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3Bl
cnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAgICAgfkpTQ2FsbGJhY2tPYmplY3Qo
KTsKIApAQCAtMjAwLDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOwogCiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mLCBT
dWJzcGFjZUFjY2Vzcyk7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBjdXN0b21IYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgY3Vz
dG9tVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTIxMSw4ICsyMTEsNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAK
LSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBnZXRPd25TcGVjaWFsUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250
RW51bVByb3BlcnRpZXNNb2RlKTsKIAogICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsMTYgKzExNCwyNCBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6aW5pdChKU0dsCiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAKKyAgICBib29sIGhhc0N1c3RvbUhhc0luc3RhbmNlID0g
ZmFsc2U7CiAgICAgYm9vbCBoYXNDb252ZXJ0VG9UeXBlID0gZmFsc2U7CiAgICAgVmVjdG9yPEpT
T2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwogICAgIEpTQ2xhc3NS
ZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7CiAgICAgZG8geworICAgICAgICBpZiAoanNDbGFzcy0+
aGFzSW5zdGFuY2UpCisgICAgICAgICAgICBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IHRydWU7CiAg
ICAgICAgIGlmIChqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKQogICAgICAgICAgICAgaGFzQ29udmVy
dFRvVHlwZSA9IHRydWU7CiAgICAgICAgIGlmIChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBp
bml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5l
cy5hcHBlbmQoaW5pdGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykpOwogCisgICAgaWYgKGhhc0N1c3RvbUhhc0luc3RhbmNlKSB7CisgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2ws
CisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wuaGFzSW5zdGFuY2VdIl9zLCBjdXN0b21IYXNJbnN0YW5jZSksCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
fQogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAgIHRoaXMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsCiAgICAgICAgICAgICBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCkBAIC01MDEsMTQgKzUwOSwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5z
dGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOworICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9i
YWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmpl
Y3QqPih0aGlzT2JqZWN0KSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5j
bGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAg
ICAgICAgaWYgKEpTT2JqZWN0SGFzSW5zdGFuY2VDYWxsYmFjayBoYXNJbnN0YW5jZSA9IGpzQ2xh
c3MtPmhhc0luc3RhbmNlKSB7CkBAIC01MjAsMTEgKzUzMiwxMSBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5z
dGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9u
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw4ICsyODgsNiBAQCBib29sIEpTVmFsdWVJc0luc3Rh
bmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhnbG9iYWxP
YmplY3QsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdG9KUyhjb25z
dHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5m
bygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGpz
VmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksMTcgKzEwOSw2IEBAIGRvbmU6CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRG
OFN0cmluZzpidWZmZXIuZGF0YSgpXTsKIH0KIAotc3RhdGljIGJvb2wgY29uc3RydWN0b3JIYXNJ
bnN0YW5jZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiwgSlNW
YWx1ZVJlZiBwb3NzaWJsZUluc3RhbmNlLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7Ci0gICAgSlNDOjpWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLQot
ICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3RvclJlZik7Ci0g
ICAgSlNDOjpKU1ZhbHVlIGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmplY3QsIHBvc3NpYmxlSW5z
dGFuY2UpOwotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOwotfQotCiBzdGF0aWMgSlNDOjpKU09iamVjdCogbWFr
ZVdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBpZCB3cmFwcGVk
T2JqZWN0KQogewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMo
Y3R4KTsKQEAgLTE0OSwxOCArMTM4LDYgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QgKm9iamVjdFdp
dGhDdXN0b21CcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBKU0M6OkpTT2JqZWN0
ICpjb25zdHJ1Y3RvcldpdGhDdXN0b21CcmFuZChKU0NvbnRleHQgKmNvbnRleHQsIE5TU3RyaW5n
ICpicmFuZCwgQ2xhc3MgY2xzKQotewotICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb247
Ci0gICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIGRlZmluaXRp
b24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJpbmddOwotICAgIGRlZmluaXRpb24uaGFzSW5z
dGFuY2UgPSBjb25zdHJ1Y3Rvckhhc0luc3RhbmNlOwotICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYg
PSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICBKU0M6OkpTT2JqZWN0KiByZXN1bHQg
PSBtYWtlV3JhcHBlcihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwgY2xz
KTsKLSAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQogLy8gTG9vayBmb3IgQG9wdGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjb250
YWluaW5nIGEgc2VsZWN0b3IgdG8gcHJvcGVydHkKIC8vIG5hbWUgbWFwcGluZywgc2VwYXJhdGVk
IGJ5IGEgX19KU19FWFBPUlRfQVNfXyBkZWxpbWl0ZXIuCiBzdGF0aWMgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVJlbmFtZU1hcChQcm90b2NvbCAqcHJvdG9jb2wsIEJPT0wg
aXNJbnN0YW5jZU1ldGhvZCkKQEAgLTQzMiw3ICs0MDksNyBAQCAtICh2b2lkKWRlYWxsb2MKIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MoSlND
b250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyKiBjbGFzc05hbWUsIENsYXNzIGNscykKIHsKICAg
ICBpZiAoIXN1cHBvcnRzSW5pdE1ldGhvZENvbnN0cnVjdG9ycygpKQotICAgICAgICByZXR1cm4g
Y29uc3RydWN0b3JXaXRoQ3VzdG9tQnJhbmQoY29udGV4dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgY2xzKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdFdpdGhDdXN0b21CcmFuZChjb250ZXh0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVzQ29uc3RydWN0b3IiLCBjbGFzc05hbWVdLCBjbHMpOwogCiAgICAgLy8gRm9yIGVhY2gg
cHJvdG9jb2wgdGhhdCB0aGUgY2xhc3MgaW1wbGVtZW50cywgZ2F0aGVyIGFsbCBvZiB0aGUgaW5p
dCBmYW1pbHkgbWV0aG9kcyBpbnRvIGEgaGFzaCB0YWJsZS4KICAgICBfX2Jsb2NrIEhhc2hNYXA8
U3RyaW5nLCBDRlR5cGVSZWY+IGluaXRUYWJsZTsKQEAgLTQ3OCw3ICs0NTUsNyBAQCAgICAgICAg
ICAgICAgICAgaW5pdFRhYmxlLnNldChuYW1lLCAoX19iCiAgICAgICAgIEpTT2JqZWN0UmVmIG1l
dGhvZCA9IG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW5pdChjb250ZXh0LCBjbHMsIGluaXRQcm90
b2NvbCwgaW5pdE1ldGhvZCwgdHlwZXMpOwogICAgICAgICByZXR1cm4gdG9KUyhtZXRob2QpOwog
ICAgIH0KLSAgICByZXR1cm4gY29uc3RydWN0b3JXaXRoQ3VzdG9tQnJhbmQoY29udGV4dCwgW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgY2xz
KTsKKyAgICByZXR1cm4gb2JqZWN0V2l0aEN1c3RvbUJyYW5kKGNvbnRleHQsIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJXNDb25zdHJ1Y3RvciIsIGNsYXNzTmFtZV0sIGNscyk7CiB9CiAK
IHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3Ry
dWN0b3JQcm90b3R5cGVQYWlyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTkxLDYgKzQxOTEs
NyBAQAogCQk4NDkyNUE5QTIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NDkyNUE5QjIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5MjVBOUMyMkIz
MENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0RjE1M0ZFMjY5QTA4NzIw
MDBCOUNERSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBPYmpl
Y3RQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MURGMEYz
QTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
WDg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUxMEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODk4Niw2ICs4OTg3LDcgQEAKIAkJCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyog
TW9kdWxlTG9hZGVyLmpzICovLAogCQkJCUE1MjcwNDg2MUQwMjdDODgwMDM1NEMzNyAvKiBOdW1i
ZXJDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5REIxRUYgLyogT2Jq
ZWN0Q29uc3RydWN0b3IuanMgKi8sCisJCQkJODRGMTUzRkUyNjlBMDg3MjAwMEI5Q0RFIC8qIE9i
amVjdFByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1RTFCNjVEOUIxMDA5REIxRUYgLyogUHJv
bWlzZUNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBQ
cm9taXNlT3BlcmF0aW9ucy5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyog
UHJvbWlzZVByb3RvdHlwZS5qcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDkgKzEyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGlzU2hhcmVkVHlwZWRBcnJh
eVZpZXcpIFwKICAgICBtYWNybyhpc0RldGFjaGVkKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheURl
ZmF1bHRDb21wYXJhdG9yKSBcCi0gICAgbWFjcm8oaXNCb3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFj
cm8oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oaW5zdGFuY2VPZikgXAor
ICAgIG1hY3JvKGZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wpIFwKICAgICBtYWNy
byhpc0FycmF5U2xvdykgXAogICAgIG1hY3JvKHNhbWVWYWx1ZSkgXAogICAgIG1hY3JvKGNvbmNh
dE1lbWNweSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9u
UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9GdW5jdGlvblByb3RvdHlwZS5qcwkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwyMSArNDIsNiBAQCBmdW5jdGlvbiBhcHBseSh0aGlzVmFsdWUsIGFyZ3VtZW50VmFsdWVz
CiAgICAgcmV0dXJuIHRoaXMuQGFwcGx5KHRoaXNWYWx1ZSwgYXJndW1lbnRWYWx1ZXMpOwogfQog
Ci1Ab3ZlcnJpZGRlbk5hbWU9IltTeW1ib2wuaGFzSW5zdGFuY2VdIgotZnVuY3Rpb24gc3ltYm9s
SGFzSW5zdGFuY2UodmFsdWUpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXND
YWxsYWJsZSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKEBpc0JvdW5k
RnVuY3Rpb24odGhpcykpCi0gICAgICAgIHJldHVybiBAaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KHRoaXMsIHZhbHVlKTsKLQotICAgIHZhciB0YXJnZXQgPSB0aGlzLnByb3RvdHlwZTsKLSAgICBy
ZXR1cm4gQGluc3RhbmNlT2YodmFsdWUsIHRhcmdldCk7Ci19Ci0KIGZ1bmN0aW9uIGJpbmQodGhp
c1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQWxleGV5
IFNodmF5a2EgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGlz
UHJvdG90eXBlT2YodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNP
YmplY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQGluc3Rh
bmNlT2YodmFsdWUsIEB0b09iamVjdCh0aGlzKSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc01h
cEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNTZXRJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzVW5k
ZWZpbmVkT3JOdWxsKSBcCisgICAgbWFjcm8oaW5zdGFuY2VPZikgXAogICAgIG1hY3JvKHRhaWxD
YWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBcCiAgICAg
bWFjcm8odGhyb3dSYW5nZUVycm9yKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAg
LTQwMiwxMyArNDAyLDYgQEAgb3AgOmlkZW50aXR5X3dpdGhfcHJvZmlsZSwKICAgICAgICAgYm90
dG9tUHJvZmlsZTogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6b3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBj
b25zdHJ1Y3RvcjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBoYXNJbnN0YW5jZVZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCiBvcCA6aW5zdGFuY2VvZiwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApAQCAtNDM0LDcgKzQyNyw4IEBAIG9wIDppc19j
ZWxsX3dpdGhfdHlwZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHR5cGU6IEpTVHlw
ZSwKKyAgICAgICAgZmlyc3RUeXBlOiBKU1R5cGUsCisgICAgICAgIGxhc3RUeXBlOiBKU1R5cGUs
CiAgICAgfQogCiBvcCA6aW5fYnlfdmFsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzQsNyArMjM0LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcgogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wSGFzUHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BIYXNQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKQotICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCiAgICAgVVNFUyhPcEFkZCwgbGhzLCByaHMpCiAgICAgVVNFUyhPcE11bCwg
bGhzLCByaHMpCkBAIC00OTAsNyArNDg5LDYgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVucwogICAgIERFRlMoT3BHZXRCeUlkV2l0aFRoaXMsIGRzdCkKICAgICBERUZT
KE9wR2V0QnlWYWxXaXRoVGhpcywgZHN0KQogICAgIERFRlMoT3BHZXRQcm90b3R5cGVPZiwgZHN0
KQotICAgIERFRlMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgZHN0KQogICAgIERFRlMoT3BJbnN0
YW5jZW9mLCBkc3QpCiAgICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZT
KE9wR2V0QnlWYWwsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QqIGNhbGxlZSA9IGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlT3JDb2RlQmxvY2suZ2V0KCkp
OwotICAgICAgICAgICAgICAgIGlmIChjYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkg
eworICAgICAgICAgICAgICAgIGlmIChjYWxsZWUtPmlzSlNGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDbGVhcmluZyBjYWxsIHRvICIsCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBDYWxsTGlua0lu
Zm86OnZpc2l0V2VhayhWTSYgdm0pCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFpc0RpcmVj
dCgpICYmIGhhdmVMYXN0U2VlbkNhbGxlZSgpICYmICF2bS5oZWFwLmlzTWFya2VkKGxhc3RTZWVu
Q2FsbGVlKCkpKSB7Ci0gICAgICAgIGlmIChsYXN0U2VlbkNhbGxlZSgpLT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpCisgICAgICAgIGlmIChsYXN0U2VlbkNhbGxlZSgpLT5pc0pTRnVuY3Rpb24o
KSkKICAgICAgICAgICAgIGhhbmRsZVNwZWNpZmljQ2FsbGVlKGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
bGFzdFNlZW5DYWxsZWUoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2NsZWFyZWRC
eUdDID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
VmFyaWFudC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gSWYgdGhpcyB2YXJpYW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2Ug
aXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1dGFibGUuCiAgICAgQUxXQVlTX0lOTElORSBDYWxsVmFy
aWFudCBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fY2Fs
bGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgICAgIGlmIChtX2NhbGxlZS0+aXNK
U0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVu
Y3Rpb24qPihtX2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5j
cHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgY29uc3QgY2hhciog
ZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIkJhZENvbnN0YW50
Q2FjaGUiOwogICAgIGNhc2UgQmFkSW5kZXhpbmdUeXBlOgogICAgICAgICByZXR1cm4gIkJhZElu
ZGV4aW5nVHlwZSI7Ci0gICAgY2FzZSBCYWRUeXBlSW5mb0ZsYWdzOgotICAgICAgICByZXR1cm4g
IkJhZFR5cGVJbmZvRmxhZ3MiOwogICAgIGNhc2UgT3ZlcmZsb3c6CiAgICAgICAgIHJldHVybiAi
T3ZlcmZsb3ciOwogICAgIGNhc2UgTmVnYXRpdmVaZXJvOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIGVudW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBCYWRDYWNoZSwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFu
dENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAo
dXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgogICAgIEJhZEluZGV4aW5nVHlwZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCi0gICAgQmFkVHlw
ZUluZm9GbGFncywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNz
dW1wdGlvbiBhYm91dCB3aGF0IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4KICAgICBPdmVy
ZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJv
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgogICAg
IE5lZ2F0aXZlSW5kZXgsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGEgbmVn
YXRpdmUgaW5kZXggaW4gYSBwbGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzczLDYgQEAgSW5z
dGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdQogI2lmIEVOQUJMRShERkdfSklU
KQogSW5zdGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8o
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8pCiB7Ci0gICAgLy8gRklYTUU6IFdlIHdvdWxkbid0IGhhdmUgdG8gYmFpbCBmb3Igbm9u
Q2VsbCBpZiB3ZSB0YXVnaHQgTWF0Y2hTdHJ1Y3R1cmUgaG93IHRvIGhhbmRsZSBub24KLSAgICAv
LyBjZWxscy4gSWYgd2UgZml4ZWQgdGhhdCB0aGVuIHdlIHdvdWxkbid0IGJlIGFibGUgdG8gdXNl
IHN1bW1hcnkoKTsKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1Nzg0CiAgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5m
bzo6c3VtbWFyeSh2bSwgc3R1YkluZm8pOwogICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkp
KQogICAgICAgICByZXR1cm4gSW5zdGFuY2VPZlN0YXR1cyhzdW1tYXJ5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICB2KGlzRGV0YWNoZWQsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlE
ZWZhdWx0Q29tcGFyYXRvciwgbnVsbHB0cikgXAogICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3Jl
YXRlLCBudWxscHRyKSBcCi0gICAgdihpc0JvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKLSAgICB2
KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoZnVuY3Rpb25Qcm90
b3R5cGVIYXNJbnN0YW5jZVN5bWJvbCwgbnVsbHB0cikgXAogICAgIHYoaW5zdGFuY2VPZiwgbnVs
bHB0cikgXAogICAgIHYoQnVpbHRpbkxvZywgbnVsbHB0cikgXAogICAgIHYoQnVpbHRpbkRlc2Ny
aWJlLCBudWxscHRyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMCw2ICsyMzAsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0
cgogICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0YVZpZXciKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAo
dmFsdWUgJiBTcGVjSW50ZXJuYWxGdW5jdGlvbikKKyAgICAgICAgICAgICAgICBzdHJPdXQucHJp
bnQoIkludGVybmFsRnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNT
dHJpbmcpID09IFNwZWNTdHJpbmcpCkBAIC01MTgsMTAgKzUyMywxMyBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9JCiAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNs
YXNzT2YoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpT
Qm91bmRGdW5jdGlvbjo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIFNwZWNGdW5jdGlvbldp
dGhOb25EZWZhdWx0SGFzSW5zdGFuY2U7Ci0gICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRo
RGVmYXVsdEhhc0luc3RhbmNlOworICAgICAgICAgICAgcmV0dXJuIFNwZWNCb3VuZEZ1bmN0aW9u
OworICAgICAgICByZXR1cm4gU3BlY05vbkJvdW5kRnVuY3Rpb247CiAgICAgfQogCisgICAgaWYg
KGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCisgICAg
ICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbiB8IFNwZWNPYmplY3RPdGhlcjsKKwogICAg
IGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU1Byb21pc2U6OmluZm8oKSkpCiAgICAgICAg
IHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICAKQEAgLTY4Niw2ICs2OTQsMTYgQEAgVHlw
ZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGVGcm9tU3BlY3VsYQogICAgIHJldHVybiBOb3RUeXBl
ZEFycmF5OwogfQogCitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZy
b21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSByYW5nZSkKK3sKKyAgICBTcGVjdWxhdGVkVHlwZSBz
cGVjdWxhdGlvbiA9IFNwZWNOb25lOworICAgIGZvciAodWludDhfdCB0eXBlID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4ocmFuZ2UuZmlyc3QpOyB0eXBlIDw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJh
bmdlLmxhc3QpOyB0eXBlKyspCisgICAgICAgIHNwZWN1bGF0aW9uIHw9IHNwZWN1bGF0aW9uRnJv
bUpTVHlwZShzdGF0aWNfY2FzdDxKU1R5cGU+KHR5cGUpKS52YWx1ZV9vcihTcGVjTm9uZSk7Cisg
ICAgaWYgKHNwZWN1bGF0aW9uID09IFNwZWNOb25lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzcGVjdWxhdGlvbjsKK30KKwogc3RkOjpvcHRpb25hbDxTcGVjdWxh
dGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtNjk1LDYgKzcxMywxMCBAQCBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRU
eXBlPiBzcGVjdWxhdGlvCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwogICAgIGNhc2UgSGVh
cEJpZ0ludFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKKyAgICBjYXNlIElu
dGVybmFsRnVuY3Rpb25UeXBlOgorICAgICAgICByZXR1cm4gU3BlY0ludGVybmFsRnVuY3Rpb247
CisgICAgY2FzZSBKU0Z1bmN0aW9uVHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNOb25Cb3VuZEZ1
bmN0aW9uOwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0FycmF5Owog
ICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTk2MCw2ICs5ODIsOCBAQCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29uCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZl
ZEFycmF5OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09iamVj
dCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQogICAgICAgICByZXR1cm4gU3BlY0Rh
dGFWaWV3T2JqZWN0OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNJbnRlcm5h
bEZ1bmN0aW9uIiwgc3RybGVuKCJTcGVjSW50ZXJuYWxGdW5jdGlvbiIpKSkKKyAgICAgICAgcmV0
dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwg
IlNwZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICBy
ZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNw
ZWNPYmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDE0ICszNiwxNSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0
cnVjdHVyZTsKK3N0cnVjdCBKU1R5cGVSYW5nZTsKIAogdHlwZWRlZiB1aW50NjRfdCBTcGVjdWxh
dGVkVHlwZTsKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY05vbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDA7IC8vIFdlIGRvbid0IGtub3cgYW55dGhpbmcgeWV0
Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3QgICAgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U0FycmF5Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb25XaXRo
RGVmYXVsdEhhc0luc3RhbmNlICAgID0gMXVsbCA8PCAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U0Z1bmN0aW9uIHRoYXQgaGFzIGl0cyBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHR5cGUg
aW5mbyBmbGFncyBiaXQgc2V0Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
RnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhhc0luc3RhbmNlID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0Z1bmN0aW9uIHRoYXQgZG9lcyBub3QgaGF2ZSBpdHMgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3MgYml0IHNldC4KLXN0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9
IFNwZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5zdGFuY2UgfCBTcGVjRnVuY3Rpb25XaXRoTm9u
RGVmYXVsdEhhc0luc3RhbmNlOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uLgorc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQm91bmRGdW5jdGlvbiAgICAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0JvdW5kRnVuY3Rp
b24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25Cb3VuZEZ1bmN0aW9u
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVu
Y3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLCBidXQgbm90IGEgSlNCb3VuZEZ1bmN0aW9u
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0JvdW5kRnVuY3Rpb24gfCBTcGVjTm9uQm91bmRGdW5jdGlv
bjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDU7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNjsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgpAQCAtMTA5LDggKzExMCw5IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0kKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwQmlnSW50OwogI2VuZGlmCiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8IDQ1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgor
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZXJuYWxGdW5jdGlvbiAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA0NjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSW50ZXJuYWxG
dW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5
dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2Jq
ZWN0IEpTVmFsdWUuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkg
fCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRz
IHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2Jq
ZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3Qg
fCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8
IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBT
cGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtp
bmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3Qg
fCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGly
ZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBT
cGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNw
ZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vh
a1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2Jq
ZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3QgfCBTcGVjSW50ZXJuYWxGdW5jdGlvbjsgLy8g
Qml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlv
bi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8
IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlND
ZWxsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQmlnSW50MzIgfCBTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2Vw
dCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBDb3Jy
ZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEgYnl0ZWNvZGUgbG9jYWwuCkBAIC0y
MzEsNyArMjMzLDcgQEAgaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZQog
CiBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNGdW5jdGlvbjsKKyAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiBTcGVjRnVuY3Rpb24pID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBp
c1Byb3h5T2JqZWN0U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC01MTgsNiAr
NTIwLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYQogLy8gSWYg
aXQncyBhbiBhbnlJbnQoKSwgaXQnbGwgcmV0dXJuIHNwZWN1bGF0ZWQgdHlwZXMgZnJvbSB0aGUg
SW50NTIgbGF0dGljZS4KIC8vIE90aGVyd2lzZSwgaXQnbGwgcmV0dXJuIHR5cGVzIGZyb20gdGhl
IEpTVmFsdWUgbGF0dGljZS4KIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIGludDUy
QXdhcmVTcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8U3BlY3Vs
YXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKEpTVHlwZVJhbmdlKTsKIHN0ZDo6
b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUpOwog
CiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShUeXBlZEFycmF5
VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9yIHR5cGVkIHZpZXdzLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcs
MTEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bgogICAgIE9wSm5l
cVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChSZWdp
c3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50IGNvbnN0YW50LCBMYWJlbCYgdGFyZ2V0KQor
eworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChu
dWxscHRyLCBjb25zdGFudCksIHRhcmdldC5iaW5kKHRoaXMpKTsKK30KKwogdW5zaWduZWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShS
ZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogewogICAgIE9wSm5lcVB0cjo6ZW1pdDxP
cGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxw
dHIsIExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rpb24pLCB0YXJnZXQuYmlu
ZCh0aGlzKSk7CkBAIC0xNzM1LDEyICsxNzQwLDEyIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFcXVhbGl0eU9wSW0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9
PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAg
IE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTdHJpbmdUeXBl
KTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3Au
bV92YWx1ZSwgU3RyaW5nVHlwZSwgU3RyaW5nVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN5bWJvbCIp
IHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3ltYm9sVHlwZSk7CisgICAgICAg
ICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5
bWJvbFR5cGUsIFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJiaWdpbnQiKSB7CkBAIC0xNzQ4
LDcgKzE3NTMsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltCiAj
aWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywg
ZHN0LCBvcC5tX3ZhbHVlKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlw
ZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlKTsKKyAgICAgICAg
ICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgSGVh
cEJpZ0ludFR5cGUsIEhlYXBCaWdJbnRUeXBlKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjQyNCwxMiArMjQyOSw2IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVl
KQotewotICAgIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U6OmVtaXQodGhpcywgZHN0LCBjb25zdHJ1
Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogLy8gSW5kaWNh
dGVzIHRoZSBsZWFzdCB1cHBlciBib3VuZCBvZiByZXNvbHZlIHR5cGUgYmFzZWQgb24gbG9jYWwg
c2NvcGUuIFRoZSBieXRlY29kZSBsaW5rZXIKIC8vIHdpbGwgc3RhcnQgd2l0aCB0aGlzIFJlc29s
dmVUeXBlIGFuZCBjb21wdXRlIHRoZSBsZWFzdCB1cHBlciBib3VuZCBpbmNsdWRpbmcgaW50ZXJj
ZXB0aW5nIHNjb3Blcy4KIFJlc29sdmVUeXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlw
ZSgpCkBAIC00NjA2LDkgKzQ2MDUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRUb0luZAogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMsIEpTVHlwZVJhbmdlIHJhbmdlKQoreworICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhp
cywgZHN0LCBzcmMsIHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0KTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUgdHlwZSkKIHsKLSAgICBPcElz
Q2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKKyAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlLCB0eXBlKTsKICAgICByZXR1cm4gZHN0
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5OCw3ICs3OTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE92ZXJy
aWRlc0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3Is
IFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklE
KiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2ZDdXN0
b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3Ry
dWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKQEAgLTkxNiw2
ICs5MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcElmRmFsc2Uo
UmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAg
ICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJl
bCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChS
ZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50LCBMYWJlbCYgdGFyZ2V0KTsKICAgICAg
ICAgdW5zaWduZWQgZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5KFJlZ2lz
dGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIHJlY29yZEhhc093blN0
cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoU3RydWN0dXJlRm9ySW5Db250ZXh0JiwgdW5zaWdu
ZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpOwogCkBAIC05NDAsNiArOTQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbnVtZXJhdG9yR2Vu
ZXJpY1Byb3BlcnR5TmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3Is
IFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJp
bmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpbmRleCk7CiAKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
LCBKU1R5cGVSYW5nZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NlbGxXaXRoVHlwZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTR2VuZXJhdG9yVHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywg
SlNBc3luY0dlbmVyYXRvclR5cGUpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNDUsNiArMTM0NSwxNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJvdG90eXBl
T2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2luc3RhbmNl
T2YoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUg
PSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKK30KKwogc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOwpAQCAtMzE2MCwyOSArMzE3MCwyMyBAQCBS
ZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCCiAKIFJlZ2lzdGVySUQqIElu
c3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBoYXNJbnN0YW5jZVZh
bHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
c09iamVjdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaXNDdXN0b20gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdlbmVyYXRvci5tb3ZlRW1wdHlWYWx1
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90
b3R5cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmln
aHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCB2YWx1ZS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZyA9IGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgcHJvdG90eXBlLmdldCgpKTsKICAgICBSZWY8
TGFiZWw+IGN1c3RvbSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gZG9u
ZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgIFJlZjxMYWJlbD4gdHlwZUVycm9yID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRJc09i
amVjdChpc09iamVjdC5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmRmFsc2UoaXNPYmplY3QuZ2V0KCksIHR5cGVFcnJvci5nZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX2V4cHIxKTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmRmFsc2UoZ2VuZXJhdG9yLmVtaXRJc0NlbGxXaXRoVHlwZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBKU1R5cGVSYW5nZSB7IEludGVybmFsRnVuY3Rpb25U
eXBlLCBKU0Z1bmN0aW9uVHlwZSB9KSwgY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSwgY29uc3RydWN0
b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9s
KTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNl
KGlzQ3VzdG9tLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgaGFzSW5zdGFuY2VWYWx1ZS5nZXQo
KSk7Ci0KLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGlzQ3VzdG9t
LmdldCgpLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90TGlua1Rp
bWVDb25zdGFudChoYXNJbnN0YW5jZVZhbHVlLmdldCgpLCBMaW5rVGltZUNvbnN0YW50OjpmdW5j
dGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJhdG9yLmVtaXRJc09iamVjdChkc3RSZWcuZ2V0KCks
IHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRv
ci52bSgpLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CkBAIC0zMTkxLDEwICszMTk1LDYgQEAg
UmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZQogICAgIGdlbmVyYXRvci5l
bWl0SW5zdGFuY2VPZihkc3RSZWcuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGRvbmUuZ2V0KCkpOwotCi0gICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0eXBlRXJyb3IuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBl
RXJyb3IoIlJpZ2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiKTsK
LQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IHRydWU7CiAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgSXNDZWxsV2l0
aFR5cGU6Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxk
LnZhbHVlKCkuaXNDZWxsKCkgJiYgY2hpbGQudmFsdWUoKS5hc0NlbGwoKS0+dHlwZSgpID09IG5v
ZGUtPnF1ZXJpZWRUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0NlbGwoKSAmJiBub2RlLT5xdWVyaWVkVHlwZSgpLmNv
bnRhaW5zKGNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSkpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKApAQCAtMTU1Miw3ICsxNTUyLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGQubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1hdGNoZWQgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1
ZXJpZWRUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0g
bm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlucyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKQEAgLTQzMzQsMTAgKzQzMzQsNiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAg
ICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgT3ZlcnJpZGVz
SGFzSW5zdGFuY2U6Ci0gICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9v
bGVhbik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJbnN0YW5jZU9m
OgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTQ0NjQsNDMgKzQ0NjAsNiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDbGVhckNhdGNoTG9j
YWxzOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0g
ICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgdW5zaWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFu
ZCgpOwotICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAgICAgIGlmIChiaXRzID09IEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1f
dHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
SlNWYWx1ZSB2YWx1ZSA9IGFic3RyYWN0VmFsdWUudmFsdWUoKSkgewotICAgICAgICAgICAgaWYg
KHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNl
IGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0g
ICAgICAgICAgICAgICAgLy8gYW5kIHdlIGNhbiByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZs
YWdzLiBUaGVzZSBmbGFncyBkb24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAv
LyBvYmplY3QncyBsaWZldGltZS4KLSAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgp
LT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgYWJzdHJhY3RWYWx1
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKLSAgICAgICAgICAgICAgICBvayAmPSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5
cGVGbGFncygpICYgYml0cykgPT0gYml0czsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
aWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZv
bGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAg
ICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTY2LDE3ICs1OTY2LDYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2hlY2tfdGR6KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdp
bigpKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKTsKLQotICAgICAg
ICAgICAgTm9kZSogY29uc3RydWN0b3IgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
Y29uc3RydWN0b3IpKTsKLSAgICAgICAgICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZSkpOwotCi0gICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChPdmVy
cmlkZXNIYXNJbnN0YW5jZSwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGRlZmF1bHRIYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKSksIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTsKLSAgICAgICAg
fQotCiAgICAgICAgIGNhc2Ugb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElkZW50aXR5V2l0aFBy
b2ZpbGU+KCk7CiAgICAgICAgICAgICBOb2RlKiBzcmNEc3QgPSBnZXQoYnl0ZWNvZGUubV9zcmNE
c3QpOwpAQCAtNjAyNyw3ICs2MDE2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluc3RhbmNlT2Ys
IHZhbHVlLCBwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChJbnN0YW5jZU9mLCBFZGdlKHZhbHVlLCBDZWxsVXNlKSwgRWRnZShwcm90b3R5cGUp
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgfQog
CkBAIC02MDk4LDcgKzYwODcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+
KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwot
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBl
LCBPcEluZm8oYnl0ZWNvZGUubV90eXBlKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdl
IHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZhbHVlKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CiAgICAgICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHJvZmlsZV90
eXBlOgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9tb3Y6
Ci0gICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3BfaWRlbnRp
dHlfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKICAgICBjYXNlIG9wX2lu
c3RhbmNlb2ZfY3VzdG9tOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAKICAg
ICBjYXNlIElzQ2VsbFdpdGhUeXBlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUt
PnF1ZXJpZWRUeXBlKCkpKTsKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnQxNl90Pihub2RlLT5xdWVyaWVkVHlwZSgpKSkp
KTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKQEAgLTExNzYsMTEg
KzExNzYsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBy
ZXR1cm47IAotICAgICAgICAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAg
cmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oQ2hl
Y2tUeXBlSW5mb0ZsYWdzTG9jLCBKU0NlbGxfdHlwZUluZm9GbGFncywgbm9kZS0+Y2hpbGQxKCkp
LCBMYXp5Tm9kZShub2RlKSk7Ci0gICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgUGFyc2VJbnQ6
CiAgICAgICAgIC8vIE5vdGU6IFdlIHdvdWxkIGhhdmUgZWxpbWluYXRlZCBhIFBhcnNlSW50IHRo
YXQgaGFzIGp1c3QgYSBzaW5nbGUgY2hpbGQgYXMgYW4gSW50MzJVc2UgaW5zaWRlIGZpeHVwLgpA
QCAtMTE5MiwxMSArMTE4Nyw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgY2xvYmJlclRvcCgpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgotICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb0ZsYWdz
KTsKLSAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihPdmVycmlkZXNIYXNJbnN0YW5jZUxvYywgSlND
ZWxsX3R5cGVJbmZvRmxhZ3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwotICAg
ICAgICByZXR1cm47Ci0KICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgcmVhZChKU09i
amVjdF9idXR0ZXJmbHkpOwogICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI2LDQ2
ICsxMDI2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0Zs
YWdzOiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICAgICAgICAgIEFT
U0VSVChiaXRzKTsKLSAgICAgICAgICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1f
dHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBhYnN0cmFjdFZhbHVlLnZhbHVlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgaWYgd2Ugc2VlIGEgY2VsbCBoZXJlLCB3ZSBrbm93IGl0
J3MgZnVsbHkgY29uc3RydWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBj
YW4gcmVhZCBpdHMgaW5saW5lIHR5cGUgaW5mbyBmbGFncy4gVGhlc2UgZmxhZ3MgZG9uJ3QgY2hh
bmdlIG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGlt
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUuYXNDZWxsKCktPmlubGluZVR5
cGVGbGFncygpICYgYml0cykgPT0gYml0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZShtX2dyYXBoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGFic3RyYWN0VmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvayAm
PSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykgPT0gYml0
czsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvaykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNiBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlQmVsb3dFcToKICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKLSAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIFR5cGVP
ZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6CkBAIC0xODgsNyArMTg3LDYg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29uc3Rh
bnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdz
OgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNl
dDoKICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBWYWx1ZVJlcDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTk5MCw3ICsxOTkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5j
ZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CkBAIC0yMDc0LDI1ICsyMDczLDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRj
aFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgotICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAogICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjogewotICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkKLSAgICAg
ICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAg
ICAgICAgICAgICAgJiYgaXM2NEJpdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNo
b3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mQ3Vz
dG9tOgotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEluQnlJZDogewpAQCAtMjgyOCw3ICsyODE5
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAg
ICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKLSAgICAg
ICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVk
Q2FsbGVyOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAg
ICAgY2FzZSBDb25zdHJ1Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSAr
MTA5LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvYwogICAgIGNh
c2UgQnV0dGVyZmx5TG9jOgogICAgICAgICBvdXQucHJpbnQoIkJ1dHRlcmZseUxvYyIpOwogICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzTG9jOgot
ICAgICAgICBvdXQucHJpbnQoIkNoZWNrVHlwZUluZm9GbGFnc0xvYyIpOwotICAgICAgICByZXR1
cm47CiAKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlTG9jOgotICAgICAgICBvdXQucHJp
bnQoIk92ZXJyaWRlc0hhc0luc3RhbmNlTG9jIik7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAg
CiAgICAgY2FzZSBDbG9zdXJlVmFyaWFibGVMb2M6CiAgICAgICAgIG91dC5wcmludCgiQ2xvc3Vy
ZVZhcmlhYmxlTG9jIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsNiBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgQXJyYXlNYXNrTG9jLAogICAg
IFZlY3Rvckxlbmd0aExvYywKICAgICBCdXR0ZXJmbHlMb2MsCi0gICAgQ2hlY2tUeXBlSW5mb0Zs
YWdzTG9jLAotICAgIE92ZXJyaWRlc0hhc0luc3RhbmNlTG9jLAogICAgIENsb3N1cmVWYXJpYWJs
ZUxvYywKICAgICBEaXJlY3RBcmd1bWVudHNMb2MsCiAgICAgR2V0dGVyTG9jLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDEwICsx
NDM2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gSXNDZWxsV2l0aFR5cGU7
CiAgICAgfQogCi0gICAgSlNUeXBlIHF1ZXJpZWRUeXBlKCkKKyAgICBKU1R5cGVSYW5nZSBxdWVy
aWVkVHlwZSgpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx1aW50
OF90LCBzdGQ6OnVuZGVybHlpbmdfdHlwZTxKU1R5cGU+Ojp0eXBlPjo6dmFsdWUsICJFbnN1cmUg
dGhhdCB1aW50OF90IGlzIHRoZSB1bmRlcmx5aW5nIHR5cGUgZm9yIEpTVHlwZS4iKTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV9vcEluZm8uYXM8dWludDMyX3Q+KCkpOwor
ICAgICAgICBBU1NFUlQob3AoKSA9PSBJc0NlbGxXaXRoVHlwZSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hc0pTVHlwZVJhbmdlKCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNTcGVjdWxhdGVk
VHlwZUZvclF1ZXJ5KCkKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKHF1ZXJpZWRUeXBlKCkpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCkBAIC0xODc3LDcgKzE4NzcsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENoZWNrSXNDb25z
dGFudDoKICAgICAgICAgICAgIHJldHVybiBpc0NlbGwoY2hpbGQxKCkudXNlS2luZCgpKTsKLSAg
ICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdB
c3luY0Z1bmN0aW9uOgpAQCAtMTk1MiwxNyArMTk1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPFVuaXF1ZWRTdHJpbmdJbXBsKj4oKTsKICAgICB9CiAKLSAgICBib29s
IGhhc1R5cGVJbmZvT3BlcmFuZCgpCi0gICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVj
a1R5cGVJbmZvRmxhZ3M7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdHlwZUluZm9PcGVyYW5kKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNUeXBlSW5mb09wZXJhbmQoKSAmJiBtX29wSW5mby5h
czx1aW50MzJfdD4oKSA8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVUNIQVJfTUFYKSk7Ci0gICAg
ICAgIHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKLSAgICB9Ci0KICAgICBib29sIGhh
c1RyYW5zaXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC0zMzEzLDYg
KzMzMDEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxOZXdBcnJheUJ1ZmZlckRhdGE+KHUuaW50NjQpOwogICAgICAgICB9CisgICAgICAg
IEFMV0FZU19JTkxJTkUgSlNUeXBlUmFuZ2UgYXNKU1R5cGVSYW5nZSgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNUeXBlUmFuZ2U+KHN0YXRpY19j
YXN0PHVpbnQxNl90Pih1LmludDY0KSk7CisgICAgICAgIH0KIAogICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBc3NlcnRJbkJvdW5kcywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRl
KSAvKiBUYWtlcyBhbiBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUg
c2V0ICovXAogICAgIG1hY3JvKENoZWNrSlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUaGlz
IGlzIHRoZSBzYW1lIGFzIGpzQ2FzdCBidXQgYXMgYSBzcGVjdWxhdGlvbiByYXRoZXIgdGhhbiBh
c3NlcnRpb24gKi9cCiAgICAgbWFjcm8oQ2hlY2tOb3RKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhQYXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykg
XApAQCAtMzk1LDcgKzM5NCw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhQaGFudG9tTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAotICAgIG1h
Y3JvKE92ZXJyaWRlc0hhc0luc3RhbmNlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQ3VzdG9tLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhNYXRjaFN0cnVjdHVyZSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
c3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBt
X3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRl
RmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQorICAg
IGV4cGxpY2l0IE9wSW5mbyhKU1R5cGVSYW5nZSByYW5nZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+KHJhbmdlKSkpIHsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc5
OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25DcmVhdGUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkg
eworICAgIGlmIChjb25zdHJ1Y3Rvci0+aXNKU0Z1bmN0aW9uKCkgJiYganNDYXN0PEpTRnVuY3Rp
b24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAg
RGVmZXJUZXJtaW5hdGlvbiBkZWZlclNjb3BlKHZtKTsKICAgICAgICAgYXV0byByYXJlRGF0YSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9j
YXRpb25Qcm9maWxlKGdsb2JhbE9iamVjdCwgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBzY29w
ZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNyw3ICsxMDM3
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUVxUHRyOgogICAgICAgICBjYXNlIFNhbWVWYWx1ZToKLSAgICAgICAgY2FzZSBP
dmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBj
YXNlIEluc3RhbmNlT2ZDdXN0b206CiAgICAgICAgIGNhc2UgSXNFbXB0eToKQEAgLTEzMTQsNyAr
MTMxMyw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAg
ICBjYXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgog
ICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1NCw5ICsyNTQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CiAg
ICAgY2FzZSBTYW1lVmFsdWU6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2Fz
ZSBQYXJzZUludDoKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSXNF
bXB0eToKICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmpl
Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
NDMsMTYgKzM2NDMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7
Ci0gICAgICAgIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mobm9kZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6IHsKLSAgICAgICAgY29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
ICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAgICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDMyLDIxICs0NDMyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxh
Z3M6IHsKLSAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhub2RlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAgICAgICBjb21waWxlUGFy
c2VJbnQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgT3ZlcnJpZGVz
SGFzSW5zdGFuY2U6IHsKLSAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKG5vZGUp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAg
ICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDIwICs0MDgxLDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCi17
Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0K
LSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IHdvcmtzIGZvciBjaGVja2luZyBpZiBhIHNpbmdsZSBiaXQgaXMgc2V0LiBJZiB3ZSB3YW50
IHRvIGNoZWNrIG1vcmUKLSAgICAvLyB0aGFuIG9uZSBiaXQgYXQgb25jZSwgd2UnbGwgbmVlZCB0
byBmaXggdGhpczoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NzA1Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlSW5mb0ZsYWdzLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5vZGUtPnR5cGVJbmZvT3BlcmFu
ZCgpKSkpOwotCi0gICAgbm9SZXN1bHQobm9kZSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBTdHJpbmdVc2UpOwpAQCAtNDE1MiwxMzYgKzQxMzgsNjggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJ
bnN0YW5jZShOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YoTm9kZSogbm9kZSkKIHsKLSAgICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlTm9kZSA9IG5vZGUt
PmNoaWxkMigpLm5vZGUoKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7
CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdERlZmF1bHQ7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1
ZU9wZXJhbmQgaGFzSW5zdGFuY2VWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQorCisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisK
KyAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAKLSAgICAvLyBJdCB3b3VsZCBiZSBncmVhdCBpZiBjb25zdGFudCBmb2xk
aW5nIGhhbmRsZWQgYXV0b21hdGljYWxseSB0aGUgY2FzZSB3aGVyZSB3ZSBrbmV3IHRoZSBoYXNJ
bnN0YW5jZSBmdW5jdGlvbgotICAgIC8vIHdhcyBhIGNvbnN0YW50LiBVbmZvcnR1bmF0ZWx5LCB0
aGUgZm9sZGluZyBydWxlIGZvciBPdmVycmlkZXNIYXNJbnN0YW5jZSBpcyBpbiB0aGUgc3RyZW5n
dGggcmVkdWN0aW9uIHBoYXNlCi0gICAgLy8gc2luY2UgaXQgcmVsaWVzIG9uIE9TUiBpbmZvcm1h
dGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzMgotICAg
IGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhh
c0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7Ci0g
ICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1
ZS5qc1ZhbHVlUmVncygpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG5vdERlZmF1bHQu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3Rh
bmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7
Ci0jZWxzZQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
aGFzSW5zdGFuY2VWYWx1ZVJlZ3MpKTsKLSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
IHByb3RvdHlwZVJlZ3MgPSBKU1ZhbHVlUmVncyhwcm90b3R5cGUuZ3ByKCkpOworICAgIH0gZWxz
ZSB7CiAjZW5kaWYKLSAgICB9Ci0KLSAgICAvLyBDaGVjayB0aGF0IGJhc2UgJ0ltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UnLgotICAgIG1faml0LnRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSksIHJlc3VsdEdQUik7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBu
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAKLSAgICBpZiAoIW5vdERl
ZmF1bHQuZW1wdHkoKSkgewotICAgICAgICBub3REZWZhdWx0LmxpbmsoJm1faml0KTsKLSAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHByb3Rv
dHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncykpOworI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgfQorI2VuZGlmCiAKLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQotewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaDJHUFIsCisgICAgICAgIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzLnBheWxvYWRH
UFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxs
KSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd0Nhc2UpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKLSAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywg
cHJvdG90eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5j
ZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJ
bmZvR1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
R1BSLCBwcm90b3R5cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VP
ZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7Ci19CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqIG5vZGUpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UKLSAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIAotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwotICAgICAgICAKLSAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7Ci0gICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwotICAg
ICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBwcm90b3R5
cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAgICAgIAotICAg
ICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaDJHUFIpOwotICAgICAgICAKLSAgICAgICAgYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
ICAgIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIAotICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90
eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgIAotICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7Ci0gICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Ci0g
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwotICAgIH0KLSAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKLSAgICAKLSAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFu
Y2hJZkNlbGwodmFsdWVSZWdzKTsKLSAgICBtb3ZlRmFsc2VUbyhyZXN1bHRHUFIpOwotICAgIAot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgCi0gICAgaXND
ZWxsLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVSZWdzKTsKLSAgICAKLSAgICBjb21waWxl
SW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0
R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwot
ICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgcmV0dXJuOwogfQpAQCAtNTExNiwxOCArNTAzNCwxOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkN1CiAgICAgLy8gU3ltYm9sLmhh
c0luc3RhbmNlIGJlY29tZXMgcG9wdWxhciB3aWxsIGxpa2VseSByZW1haW4gdGhhdCB3YXkuCiAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
IEpTVmFsdWVPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBK
U1ZhbHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25z
dHJ1Y3Rvci5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyBjb25zdHJ1Y3RvclJlZ3MgPSBjb25zdHJ1
Y3Rvci5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlUmVncyA9IGhh
c0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5q
dW1wKCk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Us
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVn
cykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhp
cywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvclJlZ3MsIGhhc0luc3RhbmNlUmVncykp
OwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAt
NTE0NCwxMCArNTA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRo
VHkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwodmFsdWVSZWdzKTsKIAotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxl
cjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgIFRy
dXN0ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIG5v
ZGUtPnF1ZXJpZWRUeXBlKCksIHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1
bHRHUFIpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwog
CkBAIC01MTY2LDEwICs1MDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2Vs
bFdpdGhUeQogICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2Vs
bEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVk
SW1tMzIobm9kZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5pc0NlbGxXaXRoVHlwZShjZWxsR1BSLCBub2RlLT5xdWVyaWVkVHlwZSgpLCBy
ZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0R1BSKTsKICAgICAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTEzMjcsNyArMTEyMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3Qo
RWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSwg
R1BSUmVnIGNlbGwpCiB7Ci0gICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3BlY0Z1
bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNGdW5jdGlvbiwgbV9qaXQuYnJhbmNoSWZO
b3RGdW5jdGlvbihjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1
bmN0aW9uKEVkZ2UgZWRnZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDEwICs3
NTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVT
dHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7Ci0g
ICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlSXNDZWxsV2l0aFR5cGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUlzVHlwZWRBcnJh
eVZpZXcoTm9kZSopOwpAQCAtMTM2Myw3ICsxMzYxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwogCi0gICAgdm9pZCBjb21waWxlQ2hlY2tUeXBl
SW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKIAog
ICAgIHZvaWQgY29tcGlsZVBhcnNlSW50KE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDI2ICszMTEsNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRoaXMgaW4gY29uc3RhbnQgZm9sZGluZyBidXQgdGhpcyBj
dXJyZW50bHkgcmVsaWVzIG9uIE9TUiBleGl0IGhpc3Rvcnk6Ci0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICAgICAgY2FzZSBPdmVy
cmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICAgICAgaWYgKCFtX25vZGUtPmNoaWxkMigpLm5v
ZGUoKS0+aXNDZWxsQ29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpLT5hc0NlbGwoKSAhPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZl
cnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2dyYXBoLmhhc0V4
aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRUeXBlSW5mb0ZsYWdzKSkgewotICAg
ICAgICAgICAgICAgIC8vIFdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZSB0aGF0IHdlIHdpbGwgbm90
IHNlZSBhIGZ1bmN0aW9uIHRoYXQgaGFzIGEgY3VzdG9tIGluc3RhbmNlb2Ygb3BlcmF0aW9uIGFz
IHRoZXkgc2hvdWxkIGJlIHJhcmUuCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZShtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrVHlwZUluZm9GbGFncywgbV9ub2Rl
LT5vcmlnaW4sIE9wSW5mbyhJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgRWRnZShtX25v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgbG90IG9mIHN0cmlu
ZyBjb25zdGFudC1mb2xkaW5nIHJ1bGVzIGhlcmUuIEl0IHdvdWxkIGJlIGdyZWF0IHRvCiAgICAg
ICAgIC8vIG1vdmUgdGhlc2UgdG8gdGhlIGFic3RyYWN0IGludGVycHJldGVyIG9uY2UgQWJzdHJh
Y3RWYWx1ZSBjYW4gc3VwcG9ydCBMYXp5SlNWYWx1ZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTIwNApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsOCArMjc1LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CiAg
ICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgot
ICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAg
IGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICBjYXNlIERvdWJsZVJlcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ5NywxMiArMTQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgVHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZVR5cGVPZigpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgotICAgICAgICAgICAgY29tcGls
ZUNoZWNrVHlwZUluZm9GbGFncygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
T3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAgICAgICAgICBjb21waWxlT3ZlcnJpZGVzSGFzSW5z
dGFuY2UoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6CiAg
ICAgICAgICAgICBjb21waWxlSW5zdGFuY2VPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MjcxMyw2NSArMTI3MDcsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCkKLSAgICB7
Ci0gICAgICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IG1fbm9k
ZS0+Y2VsbE9wZXJhbmQoKTsKLSAgICAgICAgQVNTRVJUKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0
aW9uLT5jZWxsKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKCkpKTsKLQotICAgICAgICBMVmFs
dWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFs
dWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAg
IExCYXNpY0Jsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0KLSAgICAg
ICAgLy8gVW5saWtlIGluIHRoZSBERkcsIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNsZWFuaW5nIHRo
aXMgY29kZSB1cCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBwcm92ZW4gdGhlIGhhc0luc3Rh
bmNlVmFsdWUgaXMgYSBjb25zdGFudCBhcyBCMyBzaG91bGQgZml4IGl0IGZvciB1cy4KLQotICAg
ICAgICBWYWx1ZUZyb21CbG9jayBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQuYm9vbGVhblRydWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90
RXF1YWwoaGFzSW5zdGFuY2UsIGZyb3plblBvaW50ZXIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rp
b24pKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsK
LQotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRI
YXNJbnN0YW5jZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC50ZXN0SXNa
ZXJvMzIoCi0gICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICBtX291dC5jb25zdEludDMy
KEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7Ci0gICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIGltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2VSZXN1bHQsIG5vdERlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCkpOwotICAg
IH0KLQotICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncygpCi0gICAgewotICAgICAg
ICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRUeXBlSW5mb0ZsYWdzLCBub1ZhbHVlKCksIG51
bGxwdHIsCi0gICAgICAgICAgICBtX291dC50ZXN0SXNaZXJvMzIoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZDhaZXJvRXh0MzIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMiht
X25vZGUtPnR5cGVJbmZvT3BlcmFuZCgpKSkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKCkKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAg
ICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworCisgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKICAg
ICAgICAgCi0gICAgICAgIExWYWx1ZSB2YWx1ZTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHByb3RvdHlwZTsKLSAgICAg
ICAgYm9vbCB2YWx1ZUlzQ2VsbDsKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0NlbGw7Ci0gICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCi0gICAgICAgICAg
ICAmJiBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmIChtX25vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAgICAgICBwcm90b3R5cGUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2
YWx1ZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgICAgICBwcm90b3R5cGVJc0NlbGwgPSB0cnVlOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZUlzQ2Vs
bCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKICAg
ICAgICAgICAgIHByb3RvdHlwZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDIo
KSkuaXNUeXBlKFNwZWNDZWxsKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyODAxLDE0ICsx
Mjc1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
cGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MikgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSXND
ZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBpc0NlbGwgPSBq
aXQuYnJhbmNoSWZDZWxsKHZhbHVlR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmJveEJv
b2xlYW5QYXlsb2FkKGZhbHNlLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgICAgICAgICBkb25l
SnVtcCA9IGppdC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlzQ2VsbC5saW5rKCZqaXQp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgICAgICBpZiAoIXBy
b3RvdHlwZUlzQ2VsbCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQu
YnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZUdQUikpOwpAQCAtMTI4MzMsMTQgKzEyNzc3LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fR1NzaUpKIG9wdGltaXphdGlvbkZ1bmN0aW9uID0g
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCkBAIC0xMjg1MCw3ICsxMjc5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0
R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKQEAgLTEyODY0
LDkgKzEyODA2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGRvbmVKdW1wLmlzU2V0KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRvbmVKdW1wLmxpbmsoJmppdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
CiAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBhIGJveGVkIGJvb2xlYW4uCkBAIC0xMjg3Nyw3ICsx
MjgxNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwog
CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uSW5zdGFuY2VPZkN1c3RvbSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIGNv
bnN0cnVjdG9yLCBoYXNJbnN0YW5jZSkpKTsKQEAgLTE4OTg3LDE1ICsxODkyNiwxMSBAQCBwcml2
YXRlOgogICAgIAogICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjRnVuY3Rpb24pKQotICAgICAg
ICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIGlzVHlwZShjZWxsLCBKU0Z1bmN0
aW9uVHlwZSk7CisgICAgICAgIHJldHVybiBpc0NlbGxXaXRoVHlwZShjZWxsLCBKU1R5cGVSYW5n
ZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0JvdW5kRnVuY3Rpb25UeXBlIH0sIFNwZWNGdW5jdGlvbiwg
dHlwZSk7CiAgICAgfQogICAgIExWYWx1ZSBpc05vdEZ1bmN0aW9uKExWYWx1ZSBjZWxsLCBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVl
IHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0Z1bmN0aW9uKSkK
LSAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBpc05vdFR5cGUoY2Vs
bCwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICByZXR1cm4gbV9vdXQubG9naWNhbE5vdChpc0Z1
bmN0aW9uKGNlbGwsIHR5cGUpKTsKICAgICB9CiAgICAgICAgICAgICAKICAgICBMVmFsdWUgaXNF
eG90aWNGb3JUeXBlb2YoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIxLDEzICs2MjEsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6aXRlcmF0b3JFbgogICAgIHJldHVybiBhcnJheTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tG
b3JiaWRkZW5Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWx1ZSBwcm90bykKK3N0YXRpYyBib29sIGNoZWNrRm9yYmlkZGVuUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB2YWx1ZSwgSlNPYmplY3Qq
IHByb3RvKQogewogICAgIGlmICh2YWx1ZSA9PSBwcm90bykKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgcHJvdG8gaGFzbid0
IGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSB2YWx1ZS4KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHByb3RvLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlLT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgcHJvdG8pOwogfQogCiBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTY5NCw3ICs2OTQsNyBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhCiAgICAgICAgICAgICBpZiAodmFs
dWUuaW5oZXJpdHM8UHJveHlPYmplY3Q+KHZtKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG90eXBlKSkKKyAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc09iamVjdCgpICYmIG9iamVjdC0+aXNQcm90b3R5cGVPZihnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpCiAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgYXJyYXktPmxlbmd0aCgpLCB2YWx1ZSk7CiAKICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MzIsOCArOTMyLDIyIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9s
KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9s
VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAg
YnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkZ1bmN0
aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5j
dGlvblR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9Cisg
ICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJ
ZlR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9uVHlwZSwgSlNCb3VuZEZ1bmN0
aW9uVHlwZSB9KTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTVHlwZVJhbmdlIHsgSlNGdW5j
dGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSk7IH0KKworICAgIHZvaWQgaXNDZWxsV2l0
aFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZVJhbmdlIHJhbmdlLCBHUFJSZWcgZHN0KQorICAg
IHsKKyAgICAgICAgaWYgKHJhbmdlLmxhc3QgPT0gcmFuZ2UuZmlyc3QpIHsKKyAgICAgICAgICAg
IGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBkc3QpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHJhbmdlLmxhc3QgPiByYW5nZS5maXJz
dCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgICAg
IGxvYWQ4KEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNj
cmF0Y2gpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBzY3JhdGNo
KTsKKyAgICAgICAgY29tcGFyZTMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMy
KHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCksIGRzdCk7CisgICAgfQogICAgIAogICAgIHZvaWQg
aXNFbXB0eShHUFJSZWcgZ3ByLCBHUFJSZWcgZHN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw2IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3NldF9wcml2
YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCi0gICAgICAgIERFRklORV9PUChv
cF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2Vv
ZikKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfZW1wdHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3NCw3ICs1NzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDM0ICsxMTcsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxSZWdp
c3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3RydWN0b3I7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7Ci0K
LSAgICBlbWl0TG9hZFBheWxvYWQoaGFzSW5zdGFuY2VWYWx1ZSwgcmVnVDApOwotICAgIC8vIFdl
IGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5oYXNJbnN0YW5jZSB3b3VsZCBkby4K
LSAgICBKdW1wIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbCho
YXNJbnN0YW5jZVZhbHVlKTsKLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkpOwotCi0g
ICAgLy8gV2Uga25vdyB0aGF0IGNvbnN0cnVjdG9yIGlzIGFuIG9iamVjdCBmcm9tIHRoZSB3YXkg
Ynl0ZWNvZGUgaXMgZW1pdHRlZCBmb3IgaW5zdGFuY2VvZiBleHByZXNzaW9ucy4KLSAgICBlbWl0
TG9hZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8vIENoZWNrIHRoYXQgY29u
c3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGkuZS4gdGhlIG9iamVjdCBp
cyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgotICAgIHRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7Ci0gICAgSnVtcCBkb25l
ID0ganVtcCgpOwotCi0gICAgaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwubGluayh0aGlzKTsKLSAg
ICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7Ci0gICAgbW92ZShUcnVzdGVkSW1t
MzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBlbWl0U3RvcmVCb29s
KGRzdCwgcmVnVDApOwotCi19Ci0KIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CkBAIC0xNTcsOCArMTI5LDYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cgogICAgIGVtaXRMb2Fk
UGF5bG9hZCh2YWx1ZSwgcmVnVDIpOwogICAgIGVtaXRMb2FkUGF5bG9hZChwcm90bywgcmVnVDEp
OwogCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuIGJhc2VWYWwgbXVzdCBiZSBh
IGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9ieV9pZCBmb3IgU3ltYm9sLmhhc0lu
c3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCh2YWx1ZSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKQEAgLTE5NCw5ICsxNjQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5zdGFuY2VvZihjb25zdCBJCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9p
bnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLSAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwogICAgIGVt
aXRMb2FkVGFnKHByb3RvLCByZWdUMyk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDAsIHJlZ1QyKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QxKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMSkpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTIxMSw5
ICsxODAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNl
VmFsdWU7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0TG9h
ZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QyKTsKLSAgICBlbWl0TG9hZChoYXNJbnN0YW5jZVZh
bHVlLCByZWdUNCwgcmVnVDMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
ZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCByZWdUMiwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgZW1pdExvYWQo
Y29uc3RydWN0b3IsIHJlZ1QzLCByZWdUMik7CisgICAgZW1pdExvYWQoaGFzSW5zdGFuY2VWYWx1
ZSwgcmVnVDUsIHJlZ1Q0KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZD
dXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0
KSk7CiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KICAgICAKQEAg
LTMwNCwxMiArMjczLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNv
bnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdp
dGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7Ci0gICAgaW50IHR5
cGUgPSBieXRlY29kZS5tX3R5cGU7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKLSAgICBj
b21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOworICAgIGlzQ2VsbFdpdGhUeXBlKHJlZ1Qw
LCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5tX2xhc3RUeXBl
IH0sIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGlu
ayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
cmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDMyICsxMjEsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxSZWdp
c3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3RydWN0b3I7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7Ci0K
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsKLQot
ICAgIC8vIFdlIGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5oYXNJbnN0YW5jZSB3
b3VsZCBkby4KLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUgPSBicmFuY2hQdHIoTm90
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkpOwotCi0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihjb25zdHJ1Y3RvciwgcmVnVDApOwotCi0gICAgLy8gQ2hlY2sgdGhh
dCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScgaS5lLiB0aGUgb2Jq
ZWN0IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQgZnVuY3Rpb24uCi0gICAgdGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIHJlZ1QwKTsKLSAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwotICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKLQotICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3Zl
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxp
bmsodGhpcyk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwotfQotCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0
YW5jZW9mPigpOwpAQCAtMTU5LDggKzEzMyw2IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNl
b2YoY29uc3QgSW5zdHIKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcmVnVDEpOwogICAgIAotICAgIC8v
IENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFsIG11c3QgYmUgYSBjZWxsIC0gdGhp
cyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5bWJvbC5oYXNJbnN0YW5jZS4KLSAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDIsIHZhbHVlKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IgZ2VuKApAQCAtMzI2LDEyICsyOTgsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
Y2VsbF93aXRoX3R5cGUoY29ucwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3Bl
cmFuZDsKLSAgICBpbnQgdHlwZSA9IGJ5dGVjb2RlLm1fdHlwZTsKIAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElm
Tm90Q2VsbChyZWdUMCk7CiAKLSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOwor
ICAgIGlzQ2VsbFdpdGhUeXBlKHJlZ1QwLCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RU
eXBlLCBieXRlY29kZS5tX2xhc3RUeXBlIH0sIHJlZ1QwKTsKICAgICBib3hCb29sZWFuKHJlZ1Qw
LCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzI0LDE4ICsyMzI0LDE3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRHZXQKIH0KICNlbmRpZgogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCogY29u
c3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQ29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJ
bnN0YW5jZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1
ZSBjb25zdHJ1Y3RvciA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQ29uc3RydWN0b3IpOwogICAg
IEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkSGFzSW5z
dGFuY2UpOwogCi0gICAgaWYgKGNvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIGpzSW5zdGFuY2VvZk9wZXJhdG9yKGdsb2JhbE9iamVjdCwgdmFsdWUs
IGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIEpTVmFsdWUgYmFzZVZh
bHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKQEAgLTI4NjcsMzQgKzI4NjYsMzIgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hXaQogICAgIHJldHVybiBKU1dpdGhTY29wZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgb2JqZWN0KTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvdG8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3RvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAgIAogICAg
IHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIGJvb2wgcmVzdWx0ID0g
SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90byk7
CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywg
YXNPYmplY3QodmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwq
IHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAg
IAotICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBwcm90byk7CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2Yo
Z2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgIAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgdmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKHZtKSkpCisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5l
cmljKHZtLCBjb2RlQmxvY2ssIHZhbHVlLT5zdHJ1Y3R1cmUodm0pKSkKICAgICAgICAgcmVwYXRj
aEluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlLCBwcm90bywgKnN0dWJJ
bmZvLCByZXN1bHQpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlc3VsdCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsOCArMjcxLDkgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25EZWxldAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQsIEVDTUFNb2RlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3Qp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIHZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJv
dG8pKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBKU0NlbGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3QsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50
cywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBp
bnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIGlu
dDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJf
dCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZSwg
Q2FsbEZyYW1lKiwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSk7CkBAIC0zMDMsNyArMzA0LDYgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FeGNlcAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25FeGNlcHRpb25GdXp6V2l0aENhbGxGcmFtZSwgdm9pZCwgKFZNKikpOwogCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRp
b25JZkNhdGNoYWJsZSwgSlNDZWxsKiwgKFZNKikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25WYWx1ZUFkZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
OSwyMSArMTIxOSwxOCBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNGb3VuZCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7
CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQodmFsdWVWYWx1ZS5pc0NlbGwoKSk7IC8vIHNob3Vs
ZENvbnNpZGVyQ2FjaGluZyByZWplY3RzIG5vbi1jZWxscy4KLSAgICAKICAgICBpZiAoZm9yY2VJ
Q0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAg
ICAgCiAgICAgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgCi0gICAgICAgIEpTQ2VsbCogdmFsdWUg
PSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZh
bHVlLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
ICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgcHJvdG90eXBlVmFsdWUpOwpAQCAtMTI3OSwxMSArMTI3NiwxMSBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiB9CiAKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2Yo
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91bmQpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIGlmICh0cnlDYWNoZUlu
c3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3RvdHlwZVZh
bHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCisgICAgaWYgKHRyeUNh
Y2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWUsIHByb3RvdHlwZSwg
c3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQogICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmlj
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmwKIHZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwg
U3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKK3ZvaWQgcmVwYXRjaEluc3RhbmNl
T2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua01v
bm9tb3JwaGljQ2FsbChWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayos
IEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7
CiB2b2lkIGxpbmtEaXJlY3RDYWxsKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9j
ayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtTbG93
Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDksMjMgKzYwOSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aW5zdGFuY2VvCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVl
KTsKICAgICBKU1ZhbHVlIHByb3RvID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
cHJvdG90eXBlKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pKSk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmpl
Y3QodmFsdWUpKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFu
Y2VvZl9jdXN0b20pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbnN0YW5jZW9mQ3VzdG9tPigpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBjb25zdHJ1
Y3RvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2NvbnN0cnVjdG9yKTsKICAg
ICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9oYXNJbnN0YW5jZVZhbHVlKTsKLQotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci5pc09iamVj
dCgpKTsKLSAgICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UoKSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5n
ZXRPYmplY3QoKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VW
YWx1ZSkpOwotICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJbnN0YW5jZW9mT3BlcmF0b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF90cnlfZ2V0X2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDM1ICsxMjg2LDYgQEAgbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX2JpdG5vdCwgT3BCaXRub3QsIAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxp
bnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV9kc3QsIHQzKQotICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLQotICAgICMgRmlyc3QgY2hlY2sg
aWYgaGFzSW5zdGFuY2VWYWx1ZSBpcyB0aGUgb25lIG9uIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1i
b2wuaGFzSW5zdGFuY2VdCi0gICAgZ2V0KG1faGFzSW5zdGFuY2VWYWx1ZSwgdDApCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQyLCAub3BPdmVy
cmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQwLCB0MSwgdDIpCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE92ZXJyaWRlc2hh
c0luc3RhbmNlVmFsdWVOb3RDZWxsCi0KLSAgICAjIFdlIGRvbid0IG5lZWQgaGFzSW5zdGFuY2VW
YWx1ZSdzIHRhZyByZWdpc3RlciBhbnltb3JlLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQotICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
W3QxXSwgdDEKLSAgICBiaW5lcSB0MSwgdDIsIC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVO
b3REZWZhdWx0Ci0KLSAgICAjIFdlIGtub3cgdGhlIGNvbnN0cnVjdG9yIGlzIGEgY2VsbC4KLSAg
ICBnZXQobV9jb25zdHJ1Y3RvciwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRVbmNoZWNrZWQoc2l6ZSwgdDAsIHQxKQotICAgIHRieiBKU0NlbGw6Om1fZmxhZ3NbdDFdLCBJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MAotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQotLm9wT3ZlcnJpZGVzaGFzSW5zdGFu
Y2VWYWx1ZU5vdENlbGw6Ci0ub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90RGVmYXVsdDoK
LSAgICBzdG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkK
LWVuZCkKLQogCiBsbGludE9wV2l0aFJldHVybihvcF9pc19lbXB0eSwgT3BJc0VtcHR5LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQpA
QCAtMTM2OSw4ICsxMzQwLDExIEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90
eXBlLCAKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCwgdDMpCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5ub3RDZWxsQ2FzZQot
ICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKLSAgICBjYmVxIEpT
Q2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBl
LCBtX2ZpcnN0VHlwZSwgdDEpCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2xh
c3RUeXBlLCB0MikKKyAgICBjYmFlcSBKU0NlbGw6Om1fdHlwZVt0M10sIHQxLCB0MQorICAgIGNi
YmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIsIHQyCisgICAgYW5kaSB0MiwgdDEKICAgICByZXR1
cm4oQm9vbGVhblRhZywgdDEpCiAubm90Q2VsbENhc2U6CiAgICAgcmV0dXJuKEJvb2xlYW5UYWcs
IDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTEzNDYsMjkgKzEzNDYsNiBAQCBsbGludE9wV2l0aFByb2ZpbGUob3BfYml0bm90LCBPcEJpdG5v
dCwgCiBlbmQpCiAKIAotbGxpbnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJy
aWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV9k
c3QsIHQzKQotCi0gICAgZ2V0KG1faGFzSW5zdGFuY2VWYWx1ZSwgdDEpCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQy
Ci0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCi0gICAgbG9hZHAg
SlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb25b
dDJdLCB0MgotICAgIGJxbmVxIHQwLCB0MiwgLm9wT3ZlcnJpZGVzSGFzSW5zdGFuY2VOb3REZWZh
dWx0U3ltYm9sCi0KLSAgICBnZXQobV9jb25zdHJ1Y3RvciwgdDEpCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgdGJ6IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIHQxCi0gICAgb3JxIFZhbHVlRmFsc2UsIHQxCi0g
ICAgc3RvcmVxIHQxLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi0KLS5vcE92ZXJyaWRl
c0hhc0luc3RhbmNlTm90RGVmYXVsdFN5bWJvbDoKLSAgICBzdG9yZXEgVmFsdWVUcnVlLCBbY2Zy
LCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KLQogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
ICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MCkKQEAgLTE0MzksMTEgKzE0MTYsMTQgQEAgZWxzZQogZW5kCiAKIGxsaW50T3BXaXRo
UmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlw
ZSwgbV90eXBlLCB0MCkKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5ub3RD
ZWxsQ2FzZQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgdDEKKyAgICBnZXR1KHNp
emUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fZmlyc3RUeXBlLCB0MSkKKyAgICBnZXR1KHNpemUsIE9w
SXNDZWxsV2l0aFR5cGUsIG1fbGFzdFR5cGUsIHQyKQorICAgIGNiYWVxIEpTQ2VsbDo6bV90eXBl
W3QzXSwgdDEsIHQxCisgICAgY2JiZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MiwgdDIKKyAgICBh
bmRpIHQyLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAgIHJldHVybih0MSkKIC5ub3RD
ZWxsQ2FzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAt
NTYyLDcgKzU2Miw2IEBAIGNvbnN0IE51bWJlck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5nQmkK
IAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBjb25zdGV4cHIgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAotY29uc3QgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSA9IGNvbnN0ZXhwciBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlCiBj
b25zdCBPdmVycmlkZXNHZXRQcm90b3R5cGVPdXRPZkxpbmUgPSBjb25zdGV4cHIgT3ZlcnJpZGVz
R2V0UHJvdG90eXBlT3V0T2ZMaW5lCiAKICMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24g
Mjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICBH
ZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blBy
b3BlcnR5TmFtZXMpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0Rf
VEFCTEVfRU5UUlkoZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMpOwogCi0gICAgdXNpbmcgQ3Vz
dG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKLSAgICBDdXN0b21IYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIE1FVEhP
RF9UQUJMRV9FTlRSWShjdXN0b21IYXNJbnN0YW5jZSk7Ci0KICAgICB1c2luZyBEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgRGVm
aW5lT3duUHJvcGVydHlGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVmaW5lT3duUHJv
cGVydHkpOwogCkBAIC0xNTUsNyArMTUyLDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAg
ICAgJkNsYXNzTmFtZTo6dG9UaGlzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3Bl
cnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFt
ZXMsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFzSW5zdGFuY2UsIFwKICAgICAgICAg
JkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwKICAgICAgICAgJkNsYXNzTmFtZTo6cHJl
dmVudEV4dGVuc2lvbnMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6aXNFeHRlbnNpYmxlLCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKAogY29uc3QgQ2xhc3NJ
bmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5
cGUpIH07CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Q
cm90b0Z1bmNIYXNJbnN0YW5jZVN5bWJvbCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihjYWxsRnVuY3Rpb25Qcm90b3R5cGUpOwogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2
Mi8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLWZ1bmN0aW9uLXByb3RvdHlwZS1vYmplY3QKQEAgLTYw
LDcgKzYxLDcgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZQogICAg
ICpjYWxsRnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxs
UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0
b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKLSAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZnVuY3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Iodm0p
LCBnbG9iYWxPYmplY3QpOworICAgICpoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLmhhc0luc3RhbmNlXSJf
cywgZnVuY3Rpb25Qcm90b0Z1bmNIYXNJbnN0YW5jZVN5bWJvbCk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sLCAq
aGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogfQogICAgIApAQCAtOTksNCArMTAwLDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvblByb3RvRnUKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9G
dW5jSGFzSW5zdGFuY2VTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CisKKyAgICBib29sIHJlc3Vs
dCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSktPmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHJlc3VsdCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0
aW9uIDogcHVibGljIEpTTm9uRmluCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlIHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0Q2Fs
bERhdGE7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEwICs3Nyw3IEBAIEpTVmFsdWUgY29u
c3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm8KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1
ZSk7Ci0gICAgICAgIEFTU0VSVCghY2FsbGVlLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVu
Y3Rpb24+KHZtKSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3Rv
cnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCi0gICAg
ICAgIEFTU0VSVChwcm90b3R5cGUpOwotICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmpl
Y3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3RvdHlw
ZSk7CisgICAgICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjYWxsZWUtPmRlZmF1bHRIYXNJbnN0YW5j
ZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzSW5zdGFuY2UpIHsKICAgICAgICAg
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yKGluc3RhbmNlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSk7CkBAIC0xMDYsMTAgKzEwMyw3IEBAIEluc3RhbmNlVHlwZSog
dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnUKICAgICBpZiAoTElLRUxZKGluc3RhbmNlKSkKICAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOwogCi0gICAgQVNTRVJUKCFjb25zdHJ1Y3Rvci0+dGVtcGxh
dGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwotICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gY29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
KTsgLy8gUGFzc2VkIGNvbnN0cnVjdG9ycyBhbHdheXMgaGF2ZSBgcHJvdG90eXBlYCB3aGljaCBj
YW5ub3QgYmUgZGVsZXRlZC4KLSAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBib29sIGhhc0lu
c3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIHByb3RvdHlwZSk7CisgICAgYm9vbCBoYXNJbnN0YW5jZSA9IGNvbnN0cnVjdG9yLT5k
ZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBpZiAoIWhhc0luc3RhbmNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDE5ICsxNDQsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5j
dGlvbkNvCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEsIGFyZ3Ms
IG5ld1RhcmdldCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5j
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9v
bD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPnZtKCksIGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSkpOwotfQotCi1KU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRPYmplY3QgPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3Vu
ZE9iamVjdC0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpKTsKLX0KLQogaW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0y
MTAsMTEgKzE5Nyw2IEBAIEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUK
ICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLWJvb2wgSlNCb3VuZEZ1bmN0aW9uOjpjdXN0b21I
YXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4o
b2JqZWN0KS0+bV90YXJnZXRGdW5jdGlvbi0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSk7Ci19Ci0KIEpTQm91bmRGdW5jdGlvbjo6SlNCb3VuZEZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZl
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3Vu
ZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIEpTU3RyaW5nKiBuYW1lTWF5
QmVOdWxsLCBkb3VibGUgbGVuZ3RoKQogICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3RhcmdldEZ1bmN0aW9uKHZtLCB0aGlzLCB0YXJn
ZXRGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTggKzI5
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJv
dW5kRnVuY3Rpb25DYWxsKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9B
cmdzRnVuY3Rpb25Db25zdHJ1Y3QpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZEZ1
bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaXNCb3VuZEZ1bmN0
aW9uKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KTsKLQogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyAmIH5JbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwotICAgIHN0YXRpY19hc3NlcnQoU3RydWN0dXJlRmxh
Z3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsICIiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTQ5LDggKzQxLDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncywgZG91YmxlIGxlbmd0aCwgSlNTdHJpbmcq
IG5hbWVNYXlCZU51bGwpOwotICAgIAotICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNl
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiB0
YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBK
U1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CkBAIC03MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1
bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNC
b3VuZEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV90YXJnZXRGdW5jdGlvbik7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjc5
OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0CiAKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJv
bSkKIC8vIFRoZSBmaXJzdCBhbmQgbGFzdCBKU1R5cGUgYXJlIGluY2x1c2l2ZQogc3RydWN0IEpT
VHlwZVJhbmdlIHsKICAgICBib29sIGNvbnRhaW5zKEpTVHlwZSB0eXBlKSBjb25zdCB7IHJldHVy
biBmaXJzdCA8PSB0eXBlICYmIHR5cGUgPD0gbGFzdDsgfQorICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdCB7IG91dC5wcmludCgiSlNUeXBlUmFuZ2UgeyAiLCBmaXJzdCwgIiwg
IiwgbGFzdCwgIiB9Iik7IH0KIAogICAgIEpTVHlwZSBmaXJzdDsKICAgICBKU1R5cGUgbGFzdDsK
QEAgLTcxLDcgKzcyLDcgQEAgc3RydWN0IEpTVHlwZVJhbmdlIHsKICAgICBtYWNybyhKU1N0cmlu
Z0l0ZXJhdG9yLCBKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlLCBKU1R5cGU6OkpTU3RyaW5n
SXRlcmF0b3JUeXBlKSBcCiAgICAgbWFjcm8oSlNPYmplY3QsIEZpcnN0T2JqZWN0VHlwZSwgTGFz
dE9iamVjdFR5cGUpIFwKICAgICBtYWNybyhKU0ZpbmFsT2JqZWN0LCBKU1R5cGU6OkZpbmFsT2Jq
ZWN0VHlwZSwgSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUpIFwKLSAgICBtYWNybyhKU0Z1bmN0aW9u
LCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlKSBcCisgICAg
bWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0JvdW5k
RnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxGdW5jdGlvbiwgSlNUeXBlOjpJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgSlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKSBcCiAgICAg
bWFjcm8oTnVsbFNldHRlckZ1bmN0aW9uLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUs
IEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEpTQXJyYXksIEpT
VHlwZTo6QXJyYXlUeXBlLCBKU1R5cGU6OkRlcml2ZWRBcnJheVR5cGUpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE1LDEyICsyMTUsNiBAQCBjb25zdCBjaGFyKiBKU0NlbGw6OmNsYXNzTmFtZShWTSYgdm0p
IGNvCiAgICAgcmV0dXJuIGNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZTsKIH0KIAotYm9vbCBKU0Nl
bGw6OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KQotewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBib29sIEpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICBib29s
IGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Byb3h5KCkgY29uc3Q7
CisgICAgYm9vbCBpc0pTRnVuY3Rpb24oKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUoVk0m
KTsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKTsKICAgICB0ZW1wbGF0ZTxDb25jdXJyZW5j
eT4gVHJpU3RhdGUgaXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeShWTSYpOwpAQCAtMjUzLDcgKzI1
NCw2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29s
IHNldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCk7
CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggSlNWYWx1ZSBnZXRQcm90b3R5cGUo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDExIEBAIGlubGluZSBib29sIEpTQ2Vs
bDo6aXNQcm94eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSB8fCBtX3R5cGUgPT0gUHJveHlPYmplY3RUeXBlOwogfQogCitpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzSlNGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBKU0Z1
bmN0aW9uVHlwZSB8fCBtX3R5cGUgPT0gSlNCb3VuZEZ1bmN0aW9uVHlwZTsKK30KKwogLy8gRklY
TUU6IENvbnNpZGVyIG1ha2luZyBnZXRDYWxsRGF0YSBjb25jdXJyZW5jeS1zYWZlIG9uY2UgTlBB
UEkgc3VwcG9ydCBpcyByZW1vdmVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNTgwMQogdGVtcGxhdGU8Q29uY3VycmVuY3kgY29uY3VycmVuY3k+CkBAIC0y
NTQsNyArMjU5LDcgQEAgQUxXQVlTX0lOTElORSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ2FsbGFibAog
ewogICAgIGlmICghaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsK
LSAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChpc0pTRnVuY3Rpb24o
KSkKICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmIChpbmxpbmVUeXBlRmxh
Z3MoKSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoY29u
Y3VycmVuY3kgPT0gQ29uY3VycmVuY3k6Ok1haW5UaHJlYWQpCkBAIC0yNzcsNyArMjgyLDcgQEAg
aW5saW5lIFRyaVN0YXRlIEpTQ2VsbDo6aXNDb25zdHJ1Y3RvcldpdAogICAgICAgICByZXR1cm4g
KG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRh
OjpUeXBlOjpOb25lKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogICAgIC8v
IFdlIGtub3cgdGhhdCBib3RoIGdldENvbnN0cnVjdERhdGEgb2YgYm90aCB0eXBlcyBhcmUgY29u
Y3VycmVuY3kgYXdhcmUuIFBsdXMsIGRlcml2ZWQgY2xhc3NlcyBvZiBKU0Z1bmN0aW9uIGFuZCBJ
bnRlcm5hbEZ1bmN0aW9uCiAgICAgLy8gbmV2ZXIgb3ZlcnJpZGUgZ2V0Q29uc3RydWN0RGF0YSAo
dGhpcyBpcyBlbnN1cmVkIGJ5IEFTU0VSVCBpbiBKU0Z1bmN0aW9uIGFuZCBJbnRlcm5hbEZ1bmN0
aW9uKS4KLSAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlIHx8IHR5cGUoKSA9PSBJbnRl
cm5hbEZ1bmN0aW9uVHlwZSkKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKCkgfHwgdHlwZSgpID09IElu
dGVybmFsRnVuY3Rpb25UeXBlKQogICAgICAgICByZXR1cm4gKG1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKSA/IFRyaVN0
YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw2IEBAIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGUKICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlT3JSYXJlRGF0YShiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihleGVjdXRhYmxlKSkKIHsKLSAgICBhc3NlcnRUeXBlSW5mb0Zs
YWdJbnZhcmlhbnRzKCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0g
Z2xvYmFsT2JqZWN0KTsKIH0KIApAQCAtMTEyLDcgKzExMSw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRoaXMpKTsKLSAgICBB
U1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKICAgICAvLyBKU0NlbGw6OntnZXRDYWxs
RGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
LgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEgPT0gJkpTRnVu
Y3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdl
dENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk7CkBAIC0xMjIsNyArMTIwLDYg
QEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIAogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwot
ICAgIEFTU0VSVCh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpOwogICAgIC8vIEpTQ2VsbDo6e2dl
dENhbGxEYXRhLGdldENvbnN0cnVjdERhdGF9IHJlbGllcyBvbiB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMuCiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAm
SlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZt
KS0+Z2V0Q2FsbERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENhbGxEYXRhKTsKQEAgLTkwNiwxNiAr
OTAzLDQgQEAgSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cgogICAgIHJl
dHVybiBQcm9wZXJ0eVN0YXR1czo6UmVpZmllZDsKIH0KIAotI2lmIEFTU0VSVF9FTkFCTEVECi12
b2lkIEpTRnVuY3Rpb246OmFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKQotewotICAgIC8v
IElmIHlvdSBjaGFuZ2UgdGhpcywgeW91J2xsIG5lZWQgdG8gdXBkYXRlIHNwZWN1bGF0aW9uRnJv
bUNsYXNzSW5mb0luaGVyaXRhbmNlLgotICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNz
SW5mbyh2bSgpKTsKLSAgICBpZiAoIShpbmxpbmVUeXBlRmxhZ3MoKSAmIEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvID09IEpTQm91bmRG
dW5jdGlvbjo6aW5mbygpKTsKLSAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8g
IT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpOwotfQotI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVE
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTIgKzIxMiw2
IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5TmFtZUlmTmVlZGVkKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U3RhdHVzIHJl
aWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0lu
dmFyaWFudHMoKTsKLSNlbHNlCi0gICAgdm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRz
KCkgeyB9Ci0jZW5kaWYKLQogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICB1aW50cHRyX3QgbV9leGVjdXRhYmxlT3JSYXJlRGF0YTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBpbmxpbmUgSlNGdW5jdGlv
bjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1CiAgICAgOiBCYXNlKHZtLCBzY29wZSwgc3RydWN0dXJl
KQogICAgICwgbV9leGVjdXRhYmxlT3JSYXJlRGF0YShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihl
eGVjdXRhYmxlKSkKIHsKLSAgICBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CiB9CiAK
IGlubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSw2ICs3ODEsOCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgfSk7CiAKICAgICBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZnVuY3Rpb25Qcm90b3R5cGVIYXNJbnN0
YW5jZVN5bWJvbCldLnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CisK
ICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKICAgICAgICAgW10g
KGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQpIHsKICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIHRocm93ZXIgPSBpbml0Lm93bmVyLT50aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7
CkBAIC05MzEsMTMgKzkzMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICB9KTsKICAgICBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmluaXRMYXRlcigKICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAg
IGJvb2wgaXNDYWxsYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgaW5pdC5zZXQoUHJveHlPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSwgaXNDYWxs
YWJsZSkpOwotICAgICAgICB9KTsKLSAgICBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUu
aW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgewotICAgICAgICAgICAgYm9vbCBpc0NhbGxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlu
aXQuc2V0KFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwg
anNOdWxsKCksIGlzQ2FsbGFibGUpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNOdWxsKCkpKTsKICAgICAg
ICAgfSk7CiAgICAgbV9wcm94eVJldm9rZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CkBAIC0xMzU1LDE1ICsxMzUx
LDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIwogICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5
cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKSk7CiAgICAgICAgIH0p
OwotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmlzQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7Ci0gICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uKSk7Ci0gICAgICAgIH0pOwotICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omluc3RhbmNlT2YpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFu
Y2VPZikpOwotICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9nKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZykpOwogICAgICAgICB9KTsK
QEAgLTIxODUsNyArMjE3Miw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5J
bXBsKEoKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNpdCh2aXNp
dG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDI1LDcgKzQyNSw2IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5
T2JqZWN0U3RydWN0dXJlOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7CiAgICAgTGF6
eUNsYXNzU3RydWN0dXJlIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmU7CiAKQEAgLTg0Nyw3
ICs4NDYsNiBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2Jq
ZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSogY2FsbGFibGVQcm94eU9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3h5UmV2b2tlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm94eVJldm9rZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBT
dHJ1Y3R1cmUqIHJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBhcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIG9yaWdpbmFsUmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlX
aXRoQ29udGlndW91cyk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwQW5hbHl6ZXIuaCIKICNpbmNs
dWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNr
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCkBAIC02NCw2ICs2OCw3IEBAIGNvbnN0IEFT
Q0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnQKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS4iX3MgfTsKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hh
bmdlRW51bWVyYWJpbGl0eUVycm9yIHsgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUg
YXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyB9OwogY29uc3QgQVNDSUlM
aXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9yIHsgIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iX3MgfTsKK2NvbnN0IEFTQ0lJTGl0ZXJhbCBJbnN0YW5jZW9mUHJvdG90eXBlTm90
T2JqZWN0RXJyb3IgeyAiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52
YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIl9zIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU09iamVj
dDo6c19pbmZvID0geyAiT2JqZWN0IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU09iamVjdCkgfTsKIApAQCAtMjM0NiwxMiArMjM1MSw0MyBAQCBzdGQ6
Om9wdGlvbmFsPFN0cnVjdHVyZTo6UHJvcGVydHlIYXNoRW50CiAgICAgcmV0dXJuIHN0cnVjdHVy
ZSh2bSktPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpOwogfQogCisvLyBodHRw
czovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWluc3RhbmNlb2ZvcGVyYXRvcgorYm9vbCBKU09iamVj
dDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVU
b1JlY3Vyc2VTb2Z0KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgSlNW
YWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+aGFzSW5zdGFuY2VTeW1ib2wpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICBpZiAoaGFzSW5zdGFuY2VWYWx1ZSA9
PSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkp
CisgICAgICAgIHJldHVybiBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CisKKyAgICByZXR1cm4gaGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFu
Y2VWYWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc05vbkNhbGxhYmxlQVBJT2JqZWN0
VGhhdFBlcmZvcm1zRGVmYXVsdEhhc0luc3RhbmNlKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkK
K3sKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4odm0pKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiBvYmplY3QtPmluaGVyaXRzPEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcj4odm0pOworfQorCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFs
dWUpCiB7CisgICAgQVNTRVJUKGhhc0luc3RhbmNlVmFsdWUpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJ
bnN0YW5jZVZhbHVlICE9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24oKSkgeworICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CiAgICAgICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBo
YXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZh
bHVlTm90RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCB0aGlzKSk7CkBAIC0yMzY2LDY4ICsyNDAyLDU1
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0
dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKICAgICB9CiAKLSAgICBUeXBlSW5m
byBpbmZvID0gc3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKTsKLSAgICBpZiAoaW5mby5pbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBn
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3Rv
dHlwZSkpOwotICAgIH0KLSAgICBpZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgewot
ICAgICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgbWV0aG9kVGFibGUodm0pLT5jdXN0b21IYXNJbnN0YW5jZSh0aGlzLCBnbG9i
YWxPYmplY3QsIHZhbHVlKSk7Ci0gICAgfQorICAgIGlmIChpc0NhbGxhYmxlKHZtKSB8fCBpc05v
bkNhbGxhYmxlQVBJT2JqZWN0VGhhdFBlcmZvcm1zRGVmYXVsdEhhc0luc3RhbmNlKHZtLCB0aGlz
KSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogCi0gICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU09i
amVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnloYXNpbnN0YW5j
ZQorYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5oYXNJbnN0YW5jZVN5bWJvbCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci19CisgICAgaWYgKCFpc0NhbGxhYmxl
KHZtKSAmJiAhaXNOb25DYWxsYWJsZUFQSU9iamVjdFRoYXRQZXJmb3Jtc0RlZmF1bHRIYXNJbnN0
YW5jZSh2bSwgdGhpcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotYm9vbCBKU09iamVjdDo6
ZGVmYXVsdEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIEpTVmFsdWUgcHJvdG8pCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBpZiAoaW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRoaXMpLT50YXJnZXRGdW5jdGlvbigpLT5o
YXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlKSk7CiAKICAgICBpZiAoIXZhbHVlLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEpTVmFsdWUgcHJvdG8gPSBnZXQo
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW5zdGFuY2Vv
ZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHku
Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgSW5zdGFu
Y2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBhc09iamVjdChwcm90byktPmlzUHJvdG90eXBlT2YoZ2xvYmFs
T2JqZWN0LCBhc09iamVjdCh2YWx1ZSkpKTsKK30KKworYm9vbCBKU09iamVjdDo6aXNQcm90b3R5
cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBKU1ZhbHVl
IG9iamVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFv
YmplY3RWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBvYmplY3QgPSBhc09iamVjdChvYmplY3RWYWx1ZSk7Ci0gICAgICAgIGlmIChwcm90byA9PSBv
YmplY3QpCisgICAgICAgIGlmIChvYmplY3QgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIHByb3Rv
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLQotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgcHJvdG8pKSk7Ci19Ci0KIHZvaWQgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIERvbnRFbnVtUHJvcGVydGllc01vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgU2ln
bmF0dXJlOwogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpT
RnVuY3Rpb25UeXBlKSkKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgdmFsdWUuYXNDZWxsKCkt
PmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CkBAIC04Miw2ICs4Miw3IEBAIGV4dGVybiBKU19FWFBPUlRfUFJJVkFU
RSBjb25zdCBBU0NJSUxpdGUKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxp
dGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9yOwog
ZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlRW51bWVyYWJpbGl0eUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFi
aWxpdHlFcnJvcjsKK2V4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwg
SW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yOwogCiBjbGFzcyBKU0ZpbmFsT2JqZWN0
OwogCkBAIC02NzUsNyArNjc2LDggQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUg
aGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbnN0YW5j
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotICAgIHN0YXRpYyBib29sIGRlZmF1bHRIYXNJ
bnN0YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVy
dHkpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVmYXVsdEhhc0luc3RhbmNlKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Byb3Rv
dHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWF4aW11bVByb3RvdHlwZUNoYWluRGVwdGggPSA0MDAwMDsKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwpAQCAtMTI0MCw4ICsxMjQy
LDYgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZik7Ci0KIGlubGluZSBK
U0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVXaXRoQnV0dGVyZmx5KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQogewogICAgIEpTRmlu
YWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQwLDcgKzU0MCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRh
UHJvcGVydHkKIAogQUxXQVlTX0lOTElORSBDYWxsRGF0YSBnZXRDYWxsRGF0YShWTSYgdm0sIEpT
Q2VsbCogY2VsbCkKIHsKLSAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQor
ICAgIGlmIChjZWxsLT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246
OmdldENhbGxEYXRhKGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRh
YmxlKHZtKS0+Z2V0Q2FsbERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJlc3VsdC50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lIHx8IGNlbGwtPmlzVmFsaWRDYWxsZWUoKSk7CkBAIC01NTksNyAr
NTU5LDcgQEAgaW5saW5lIENhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoVk0mIHZtLAogICAgIGlm
ICghdmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgSlNDZWxsKiBjZWxs
ID0gdmFsdWUuYXNDZWxsKCk7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSkKKyAgICBpZiAoY2VsbC0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKGNlbGwpOwogICAgIENhbGxEYXRhIHJlc3VsdCA9IGNlbGwt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKICAgICBBU1NFUlQocmVz
dWx0LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgfHwgY2VsbC0+aXNWYWxpZENhbGxlZSgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgSlNDCiAgICAgQ0FTRShGaW5hbE9iamVjdFR5cGUpCiAgICAgQ0FTRShKU0Nh
bGxlZVR5cGUpCiAgICAgQ0FTRShKU0Z1bmN0aW9uVHlwZSkKKyAgICBDQVNFKEpTQm91bmRGdW5j
dGlvblR5cGUpCiAgICAgQ0FTRShJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKE51bGxT
ZXR0ZXJGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShCb29sZWFuT2JqZWN0VHlwZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksOSArNTksMTAgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBPYmplY3RUeXBlLAog
ICAgIEZpbmFsT2JqZWN0VHlwZSwKICAgICBKU0NhbGxlZVR5cGUsCi0gICAgSlNGdW5jdGlvblR5
cGUsCiAgICAgSW50ZXJuYWxGdW5jdGlvblR5cGUsCiAgICAgTnVsbFNldHRlckZ1bmN0aW9uVHlw
ZSwKKyAgICBKU0Z1bmN0aW9uVHlwZSwKKyAgICBKU0JvdW5kRnVuY3Rpb25UeXBlLAogICAgIEJv
b2xlYW5PYmplY3RUeXBlLAogICAgIE51bWJlck9iamVjdFR5cGUsCiAgICAgRXJyb3JJbnN0YW5j
ZVR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogLy8gSW5saW5lIGZsYWdzLgogCiBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCi1zdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSAxIDw8IDE7
CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldENhbGxEYXRhID0gMSA8PCAy
OyAvLyBOZWVkIHRoaXMgZmxhZyBpZiB5b3UgaW1wbGVtZW50IFtbQ2FsbGFibGVdXSBpbnRlcmZh
Y2UsIHdoaWNoIG1lYW5zIG92ZXJyaWRpbmcgZ2V0Q2FsbERhdGEuIFRoZSBvYmplY3QgbWF5IG5v
dCBiZSBjYWxsYWJsZSBzaW5jZSBnZXRDYWxsRGF0YSBjYW4gc2F5IGl0IGlzIG5vdCBjYWxsYWJs
ZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
ID0gMSA8PCAzOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNUb1RoaXMgPSAx
IDw8IDQ7IC8vIElmIHRoaXMgaXMgZmFsc2UgdGhlbiB0aGlzIHJldHVybnMgc29tZXRoaW5nIG90
aGVyIHRoYW4gJ3RoaXMnLiBOb24tb2JqZWN0IGNlbGxzIHRoYXQgYXJlIHZpc2libGUgdG8gSlMg
aGF2ZSB0aGlzIHNldCBhcyBkbyBzb21lIGV4b3RpYyBvYmplY3RzLgpAQCAtNDcsNyArNDYsNiBA
QCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2VsCiAKIC8vIE91dCBvZiBs
aW5lIGZsYWdzLgogCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0
YW5jZSA9IDEgPDwgODsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyA9IDEgPDwgOTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJp
ZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgPSAxIDw8IDEwOwogc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDExOwpAQCAtOTAsOCAr
ODgsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFnczIpIDw8IG51bWJlck9mSW5saW5lQml0cykgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFncyk7IH0KICAgICBib29sIG1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQ+KCk7IH0KLSAgICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0
dXJuIGlzU2V0T25GbGFnczI8SW1wbGVtZW50c0hhc0luc3RhbmNlPigpOyB9Ci0gICAgYm9vbCBp
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdz
MTxJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNH
ZXRDYWxsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVzR2V0Q2Fs
bERhdGE+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0
IHsgcmV0dXJuIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxhZ3MoKSk7
IH0KICAgICBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUoKSBjb25zdCB7IHJldHVybiBpc1Nl
dE9uRmxhZ3MxPEhhc1N0YXRpY1Byb3BlcnR5VGFibGU+KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
Mjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7
CiBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKICAgICBzdGF0aWMgTnVtYmVyQ29u
c3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOdW1iZXJQcm90
b3R5cGUqIG51bWJlclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1Zh
bHVlT2YpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5j
SGFzT3duUHJvcGVydHkpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0
UHJvdG9GdW5jSXNQcm90b3R5cGVPZik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcik7CkBAIC02Myw3ICs2
Miw3IEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc093blByb3BlcnR5
LCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEhhc093blByb3BlcnR5SW50cmluc2ljKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5wcm9wZXJ0eUlzRW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1l
cmFibGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7Cisg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvdHlwZUlzUHJvdG90eXBlT2ZDb2RlR2VuZXJh
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+X19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
X19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29r
dXBHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CkBAIC0xMjcsMzMgKzEyNiw2
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShn
bG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5TmFtZSkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmopOwotICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCi0gICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3Qo
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmICghdi5pc09iamVjdCgpKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgaWYgKHYg
PT0gdGhpc09iaikKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHRydWUpKTsKLSAgICAgICAgdiA9IGFzT2JqZWN0KHYpLT5nZXRQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIH0KLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3Rv
RnVuY0RlZmluZUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
Nzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDM1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc1R5cGVv
ZklzRnVuY3Rpb24oSlMKICAgICByZXR1cm4gcmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOwogfQog
CitBTFdBWVNfSU5MSU5FIGJvb2wganNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBKU09iamVjdCogdmFsdWUpCit7CisgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKSB7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIEluc3RhbmNlb2ZQcm90b3R5cGVO
b3RPYmplY3RFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KHByb3RvdHlwZSktPmlzUHJvdG90eXBlT2Yo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wganNJbnN0YW5j
ZW9mT3BlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZSBjb25zdHJ1Y3RvciwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQoreworICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSaWdodCBoYW5kIHNpZGUg
b2YgaW5zdGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaGFzSW5zdGFuY2VW
YWx1ZQorICAgICAgICA/IGFzT2JqZWN0KGNvbnN0cnVjdG9yKS0+aGFzSW5zdGFuY2UoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkKKyAgICAgICAgOiBhc09iamVjdChjb25z
dHJ1Y3RvciktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworfQorCiBBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIgKzQ4LDYgQEAg
UHJveHlPYmplY3Q6OlByb3h5T2JqZWN0KFZNJiB2bSwgU3RydWN0dQogewogfQogCi1TdHJ1Y3R1
cmUqIFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIHJldHVybiB0YXJnZXQuaXNDYWxsYWJsZSh2bSkgPyBnbG9iYWxPYmplY3QtPmNh
bGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+cHJveHlPYmplY3RT
dHJ1Y3R1cmUoKTsKLX0KLQogdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBo
YW5kbGVyKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTcxLDExICs2NSw2IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwK
ICAgICBKU09iamVjdCogdGFyZ2V0QXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQp
OwogCiAgICAgbV9pc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzQ2FsbGFibGUodm0pOwot
ICAgIGlmIChtX2lzQ2FsbGFibGUpIHsKLSAgICAgICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVy
ZSh2bSktPnR5cGVJbmZvKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8uaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkgJiYgaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwot
ICAgIH0KLQogICAgIG1faXNDb25zdHJ1Y3RpYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzQ29uc3Ry
dWN0b3Iodm0pOwogCiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXRBc09iamVjdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFByb3h5T2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gUHJveHlP
YmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldChnbG9iYWxPYmplY3QsIHRhcmdldCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVy
ZSgpOwogICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxQcm94eU9iamVjdD4odm0uaGVhcCkpIFByb3h5T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBo
YW5kbGVyKTsKICAgICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIGlzQ2FsbGFibGUpCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBmbGFncyA9IFN0
cnVjdHVyZUZsYWdzOwotICAgICAgICBpZiAoaXNDYWxsYWJsZSkKLSAgICAgICAgICAgIGZsYWdz
IHw9IChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KTsKLSAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgZmxhZ3MpLCBp
bmZvKCksIE5vbkFycmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICBTdHJ1
Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oUHJveHlPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
Tm9uQXJyYXkgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFyZXN1bHQtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSk7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51
bWVyYXRvcih2bSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzcsNyArNzQsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3h5T2JqZWN0KFZNJiwg
U3RydWN0dXJlKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlRm9yVGFyZ2V0
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0YXJnZXQpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzNCw3ICs1MzQsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVk
CiAgICAgICAgICAgICAgICAgbV9saXZlQ2VsbFBvaW50ZXJzLmFkZChjYWxsZWUpOwogICAgICAg
ICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGNhbGxlZUNlbGwtPnR5cGUoKSAhPSBKU0Z1bmN0
aW9uVHlwZSkgeworICAgICAgICAgICAgaWYgKCFjYWxsZWVDZWxsLT5pc0pTRnVuY3Rpb24oKSkg
ewogICAgICAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U09iamVjdCo+KGNhbGxlZUNlbGwtPnZtKCksIGNhbGxlZUNlbGwpKQogICAgICAgICAgICAgICAg
ICAgICBhZGRDYWxsZWUob2JqZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5OTU1
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjEtMDctMTUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgorCisgICAgICAgIEFuIGlzc3VlIGFib3V0IGV2YWx1YXRpbmcgaW5zdGFuY2VvZgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorCiAyMDIxLTA3LTE1ICBUaW0gTmd1eWVuICA8
bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgPGRpYWxvZz4gZWxlbWVudDogZG8gbm90IHBlcmZv
cm0gY2xvc2UoKSBtZXRob2Qgc3RlcHMgd2hlbiByZW1vdmluZyBvcGVuIGF0dHJpYnV0ZS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJh
c2UuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3RvckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBjbGFz
cyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPCiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTRE9NT2JqZWN0OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBKU0M6OkltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBKU0M6Ok92ZXJyaWRl
c0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGE7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzk5NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMjkxNCw3ICsyOTE0LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50
cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1cmVQcm9w
ZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAgJHN0cnVj
dHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSA9IDEgaWYgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH07Ci0gICAgJHN0
cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6SW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSJ9ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93
IjsKICAgICAgICAgCiAgICAgIyBQcm90b3R5cGUKICAgICB1bmxlc3MgKFNob3VsZFVzZUdsb2Jh
bE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSB8fCAkaW50ZXJmYWNlLT5pc05hbWVzcGFjZU9i
amVjdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TVdpbmRvdyY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAgfQogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIHByb3RlY3RlZDoKICAgICBKU0RPTVdpbmRvdyhKU0M6
OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8RE9NV2luZG93PiYmLCBKU1dpbmRvd1Byb3h5Kik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNXaW5kb3dQcm94eSopOwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUt
cHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTk1NSkKKysrIExheW91dFRlc3Rz
L2pzL2RvbS9vYmplY3QtcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC05LDcgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9Mb2NhbGVTdHJp
bmcuY2FsCiBQQVNTIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5lZCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ09iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1Mg
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVuZGVmaW5lZCwgJ2hhc093blBy
b3BlcnR5JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1
bmRlZmluZWQsICdoYXNPd25Qcm9wZXJ0eScpJykuCiBQQVNTIE9iamVjdC5wcm90b3R5cGUucHJv
cGVydHlJc0VudW1lcmFibGUuY2FsbCh1bmRlZmluZWQsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodW5k
ZWZpbmVkLCAncHJvcGVydHlJc0VudW1lcmFibGUnKScpLgotUEFTUyBPYmplY3QucHJvdG90eXBl
LmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJv
dG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpJykuCitQQVNTIE9iamVj
dC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKHVuZGVmaW5lZCwgdGhpcykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QuCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433694</attachid>
            <date>2021-07-16 12:47:37 -0700</date>
            <delta_ts>2021-07-17 19:25:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210716224735.patch</filename>
            <type>text/plain</type>
            <size>173713</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnQgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0IGFuZCBBcnJheS5wcm90b3R5cGUuZmluZExh
c3RJbmRleApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5h
bC1mdW5jdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0
YW5jZW9mLWludGVybmFsLWZ1bmN0aW9uLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZuKCkge30K
KyAgICB2YXIgYXJyID0gW107CisgICAgdmFyIHJlID0gLyg/OikvOworICAgIHZhciBkYXRlID0g
bmV3IERhdGU7CisgICAgdmFyIG1hcCA9IG5ldyBNYXA7CisgICAgdmFyIHNldCA9IG5ldyBTZXQ7
CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7
CisgICAgICAgIGFjYyArPSBmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uCisgICAgICAgICAgICAmJiBh
cnIgaW5zdGFuY2VvZiBBcnJheQorICAgICAgICAgICAgJiYgcmUgaW5zdGFuY2VvZiBSZWdFeHAK
KyAgICAgICAgICAgICYmIGRhdGUgaW5zdGFuY2VvZiBEYXRlCisgICAgICAgICAgICAmJiBtYXAg
aW5zdGFuY2VvZiBNYXAKKyAgICAgICAgICAgICYmIHNldCBpbnN0YW5jZW9mIFNldDsKKyAgICB9
CisgICAgaWYgKGFjYyAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2Yt
cHJpbWl0aXZlLWNlbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
aW5zdGFuY2VvZi1wcmltaXRpdmUtY2VsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQor
ICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgbnVtYmVyID0gNC41OworICAgIHZhciBz
dHJpbmcgPSAic3RyIjsKKyAgICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7CisgICAgdmFyIGJpZ2lu
dCA9IDEwbjsKKworICAgIHZhciBhY2MgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU3
OyArK2kpIHsKKyAgICAgICAgYWNjICs9IG51bWJlciBpbnN0YW5jZW9mIEZvbworICAgICAgICAg
ICAgfHwgc3RyaW5nIGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCBzeW1ib2wgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IGJpZ2ludCBpbnN0YW5jZW9mIEJhcjsKKyAgICB9Cisg
ICAgaWYgKGFjYykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOwor
fSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZl
LW5vbi1jZWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3Rh
bmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7
fQorICAgIGZ1bmN0aW9uIEJhcigpIHt9CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyArPSB1bmRlZmluZWQgaW5zdGFu
Y2VvZiBGb28KKyAgICAgICAgICAgIHx8IG51bGwgaW5zdGFuY2VvZiBCYXIKKyAgICAgICAgICAg
IHx8IHRydWUgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IGkgaW5zdGFuY2VvZiBCYXI7
CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LXByb3h5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNl
b2YtcHJveHkuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5z
dGFuY2VvZi1wcm94eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisoZnVuY3Rp
b24oKSB7CisgICAgZnVuY3Rpb24gVGFyZ2V0KCkge30KKyAgICB2YXIgdmFsdWUgPSBuZXcgVGFy
Z2V0KCk7CisgICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KFRhcmdldCwgUmVmbGVjdCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgaSsrKSB7CisgICAgICAgIGlmICghKHZhbHVlIGlu
c3RhbmNlb2YgcHJveHkpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uISIpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1j
ZWxsLXdpdGgtdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
cy1jZWxsLXdpdGgtdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
CisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGlzQXJyYXkgPSAkdm0uY3JlYXRlQnVpbHRpbigiKGZ1
bmN0aW9uIChjKSB7IHJldHVybiBAaXNBcnJheShjKTsgfSkiKTsKKyAgICBub0lubGluZShpc0Fy
cmF5KTsKKworICAgIHZhciBzeW0gPSBTeW1ib2woKTsKKyAgICB2YXIgYXJyID0gW107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBpZiAodHlwZW9mICJmb28i
ICE9PSAic3RyaW5nIiB8fCB0eXBlb2YgaSA9PT0gInN0cmluZyIgfHwKKyAgICAgICAgICAgIHR5
cGVvZiBzeW0gIT09ICJzeW1ib2wiIHx8IHR5cGVvZiBhcnIgPT09ICJzeW1ib2wiIHx8CisgICAg
ICAgICAgICAhaXNBcnJheShhcnIpIHx8IGlzQXJyYXkoc3ltKSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDogSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjc5OTU1KQorKysgSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk5LDkgKzE1OTksNiBAQCB0
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2NvCiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVy
YXRvcnMvc2NvcGUtcGFyYW0tcmVzdC1lbGVtLXZhci1vcGVuLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtvdXRzaWRlwrssIMKraW5zaWRlwrspIHRv
IGJlIHRydWUnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2luc3RhbmNlb2YvcHJvdG90eXBl
LWdldHRlci13aXRoLXByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogZ2V0
dGVyIGZvciAncHJvdG90eXBlJyBjYWxsZWQiCi0gIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9y
OiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtYW5kLWFzc2lnbm1lbnQtb3BlcmF0b3Itbm9uLXNp
bXBsZS1saHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBzaG91bGQg
bm90IGJlIGV2YWx1YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNz
aWdubWVudC9sZ2NsLW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5q
czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
OCBAQAorMjAyMS0wNy0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CisKKyAgICAgICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVm
LmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKGNvbnN0cnVjdG9ySGFzSW5zdGFuY2Up
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0aW9uUHJvdG90
eXBlLmpzOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc3lt
Ym9sSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL09iamVjdFByb3Rv
dHlwZS5qczogQWRkZWQuCisgICAgICAgIChpc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dmlzaXRXZWFr
KToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxs
VmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9F
eGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9TdHJpbmcpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1
cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
byk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFuY2UpOgor
ICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZSk6CisgICAgICAgIChKU0M6
OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVN0
cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNGdW5jdGlvblNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1
bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2luc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHSGVh
cExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpxdWVyaWVkVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6OmFzSlNUeXBlUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1R5cGVJbmZvT3BlcmFuZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dHlwZUluZm9PcGVyYW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZv
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhUeXBl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVj
dGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpjaGVja0ZvcmJpZGRlblByb3RvdHlwZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmTm90RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNl
T2YpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlv
blByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQm91
bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgIChKU0M6OkpTVHlwZVJhbmdlOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSk6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzc2Vy
dFR5cGVJbmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm94eU9iamVjdFN0cnVjdHVyZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtBdXhpbGlhcnlBbmRWaXNpdE91dE9mTGluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
Z2V0SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpnZXRDb25zdHJ1Y3REYXRh
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjptYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlzSlNGdW5jdGlvblR5cGUpOgor
ICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0hhc0luc3RhbmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlND
Ojpqc0luc3RhbmNlb2ZPcGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJp
ZmllZFN0YWNrVHJhY2VzKToKKwogMjAyMS0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzYW1wbGluZ1Byb2ZpbGVySWdub3JlRXh0
ZXJuYWxTb3VyY2VJRCBvcHRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMzNiw2ICsxMzM2LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
TW9kdWxlTG9hZGVyLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL051bWJl
ckNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dENvbnN0cnVjdG9yLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZU9wZXJhdGlvbnMuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlz
ZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL01hcFByb3Rv
dHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCiAkKFBST0pF
Q1RfRElSKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVp
bHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKKyQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL09iamVj
dFByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwogJChQUk9K
RUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQsNiArMTE0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL051bWJlckNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBcCisgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShy
ZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1l
cyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xv
dE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwotICAgIHN0YXRpY19hc3NlcnQoIShTdHJ1Y3R1cmVG
bGFncyAmIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCAidXNpbmcgY3VzdG9tSGFzSW5z
dGFuY2UiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwg
T3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3Bl
cnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAgICAgfkpTQ2FsbGJhY2tPYmplY3Qo
KTsKIApAQCAtMjAwLDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOwogCiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mLCBT
dWJzcGFjZUFjY2Vzcyk7CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBjdXN0b21IYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgY3Vz
dG9tVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTIxMSw4ICsyMTEsNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAK
LSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBnZXRPd25TcGVjaWFsUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBEb250
RW51bVByb3BlcnRpZXNNb2RlKTsKIAogICAgIHN0YXRpYyBDYWxsRGF0YSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsMTYgKzExNCwyNCBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6aW5pdChKU0dsCiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICAKKyAgICBib29sIGhhc0N1c3RvbUhhc0luc3RhbmNlID0g
ZmFsc2U7CiAgICAgYm9vbCBoYXNDb252ZXJ0VG9UeXBlID0gZmFsc2U7CiAgICAgVmVjdG9yPEpT
T2JqZWN0SW5pdGlhbGl6ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwogICAgIEpTQ2xhc3NS
ZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7CiAgICAgZG8geworICAgICAgICBpZiAoanNDbGFzcy0+
aGFzSW5zdGFuY2UpCisgICAgICAgICAgICBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IHRydWU7CiAg
ICAgICAgIGlmIChqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKQogICAgICAgICAgICAgaGFzQ29udmVy
dFRvVHlwZSA9IHRydWU7CiAgICAgICAgIGlmIChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBp
bml0aWFsaXplID0ganNDbGFzcy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5l
cy5hcHBlbmQoaW5pdGlhbGl6ZSk7CiAgICAgfSB3aGlsZSAoKGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykpOwogCisgICAgaWYgKGhhc0N1c3RvbUhhc0luc3RhbmNlKSB7CisgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2ws
CisgICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wuaGFzSW5zdGFuY2VdIl9zLCBjdXN0b21IYXNJbnN0YW5jZSksCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
fQogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAgIHRoaXMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsCiAgICAgICAgICAgICBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCkBAIC01MDEsMTQgKzUwOSwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5z
dGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOworICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9i
YWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmpl
Y3QqPih0aGlzT2JqZWN0KSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5j
bGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAg
ICAgICAgaWYgKEpTT2JqZWN0SGFzSW5zdGFuY2VDYWxsYmFjayBoYXNJbnN0YW5jZSA9IGpzQ2xh
c3MtPmhhc0luc3RhbmNlKSB7CkBAIC01MjAsMTEgKzUzMiwxMSBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5z
dGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9u
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdG9KUyhnbG9iYWxPYmplY3QsIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQ
YXJlbnQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw4ICsyODgsNiBAQCBib29sIEpTVmFsdWVJc0luc3Rh
bmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhnbG9iYWxP
YmplY3QsIHZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdG9KUyhjb25z
dHJ1Y3Rvcik7Ci0gICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5m
bygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGpz
VmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksMTcgKzEwOSw2IEBAIGRvbmU6CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRG
OFN0cmluZzpidWZmZXIuZGF0YSgpXTsKIH0KIAotc3RhdGljIGJvb2wgY29uc3RydWN0b3JIYXNJ
bnN0YW5jZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiwgSlNW
YWx1ZVJlZiBwb3NzaWJsZUluc3RhbmNlLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7Ci0gICAgSlNDOjpWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLQot
ICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3RvclJlZik7Ci0g
ICAgSlNDOjpKU1ZhbHVlIGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmplY3QsIHBvc3NpYmxlSW5z
dGFuY2UpOwotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOwotfQotCiBzdGF0aWMgSlNDOjpKU09iamVjdCogbWFr
ZVdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBpZCB3cmFwcGVk
T2JqZWN0KQogewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMo
Y3R4KTsKQEAgLTE0OSwxOCArMTM4LDYgQEAgc3RhdGljIEpTQzo6SlNPYmplY3QgKm9iamVjdFdp
dGhDdXN0b21CcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBKU0M6OkpTT2JqZWN0
ICpjb25zdHJ1Y3RvcldpdGhDdXN0b21CcmFuZChKU0NvbnRleHQgKmNvbnRleHQsIE5TU3RyaW5n
ICpicmFuZCwgQ2xhc3MgY2xzKQotewotICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb247
Ci0gICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIGRlZmluaXRp
b24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJpbmddOwotICAgIGRlZmluaXRpb24uaGFzSW5z
dGFuY2UgPSBjb25zdHJ1Y3Rvckhhc0luc3RhbmNlOwotICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYg
PSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICBKU0M6OkpTT2JqZWN0KiByZXN1bHQg
PSBtYWtlV3JhcHBlcihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwgY2xz
KTsKLSAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQogLy8gTG9vayBmb3IgQG9wdGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjb250
YWluaW5nIGEgc2VsZWN0b3IgdG8gcHJvcGVydHkKIC8vIG5hbWUgbWFwcGluZywgc2VwYXJhdGVk
IGJ5IGEgX19KU19FWFBPUlRfQVNfXyBkZWxpbWl0ZXIuCiBzdGF0aWMgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVJlbmFtZU1hcChQcm90b2NvbCAqcHJvdG9jb2wsIEJPT0wg
aXNJbnN0YW5jZU1ldGhvZCkKQEAgLTQzMiw3ICs0MDksNyBAQCAtICh2b2lkKWRlYWxsb2MKIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MoSlND
b250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyKiBjbGFzc05hbWUsIENsYXNzIGNscykKIHsKICAg
ICBpZiAoIXN1cHBvcnRzSW5pdE1ldGhvZENvbnN0cnVjdG9ycygpKQotICAgICAgICByZXR1cm4g
Y29uc3RydWN0b3JXaXRoQ3VzdG9tQnJhbmQoY29udGV4dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgY2xzKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdFdpdGhDdXN0b21CcmFuZChjb250ZXh0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVzQ29uc3RydWN0b3IiLCBjbGFzc05hbWVdLCBjbHMpOwogCiAgICAgLy8gRm9yIGVhY2gg
cHJvdG9jb2wgdGhhdCB0aGUgY2xhc3MgaW1wbGVtZW50cywgZ2F0aGVyIGFsbCBvZiB0aGUgaW5p
dCBmYW1pbHkgbWV0aG9kcyBpbnRvIGEgaGFzaCB0YWJsZS4KICAgICBfX2Jsb2NrIEhhc2hNYXA8
U3RyaW5nLCBDRlR5cGVSZWY+IGluaXRUYWJsZTsKQEAgLTQ3OCw3ICs0NTUsNyBAQCAgICAgICAg
ICAgICAgICAgaW5pdFRhYmxlLnNldChuYW1lLCAoX19iCiAgICAgICAgIEpTT2JqZWN0UmVmIG1l
dGhvZCA9IG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW5pdChjb250ZXh0LCBjbHMsIGluaXRQcm90
b2NvbCwgaW5pdE1ldGhvZCwgdHlwZXMpOwogICAgICAgICByZXR1cm4gdG9KUyhtZXRob2QpOwog
ICAgIH0KLSAgICByZXR1cm4gY29uc3RydWN0b3JXaXRoQ3VzdG9tQnJhbmQoY29udGV4dCwgW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgY2xz
KTsKKyAgICByZXR1cm4gb2JqZWN0V2l0aEN1c3RvbUJyYW5kKGNvbnRleHQsIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJXNDb25zdHJ1Y3RvciIsIGNsYXNzTmFtZV0sIGNscyk7CiB9CiAK
IHR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kj4gQ29uc3Ry
dWN0b3JQcm90b3R5cGVQYWlyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTkxLDYgKzQxOTEs
NyBAQAogCQk4NDkyNUE5QTIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NDkyNUE5QjIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5MjVBOUMyMkIz
MENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0RjE1M0ZFMjY5QTA4NzIw
MDBCOUNERSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBPYmpl
Y3RQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MURGMEYz
QTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
WDg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUxMEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODk4Niw2ICs4OTg3LDcgQEAKIAkJCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyog
TW9kdWxlTG9hZGVyLmpzICovLAogCQkJCUE1MjcwNDg2MUQwMjdDODgwMDM1NEMzNyAvKiBOdW1i
ZXJDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5REIxRUYgLyogT2Jq
ZWN0Q29uc3RydWN0b3IuanMgKi8sCisJCQkJODRGMTUzRkUyNjlBMDg3MjAwMEI5Q0RFIC8qIE9i
amVjdFByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1RTFCNjVEOUIxMDA5REIxRUYgLyogUHJv
bWlzZUNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBQ
cm9taXNlT3BlcmF0aW9ucy5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyog
UHJvbWlzZVByb3RvdHlwZS5qcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDkgKzEyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGlzU2hhcmVkVHlwZWRBcnJh
eVZpZXcpIFwKICAgICBtYWNybyhpc0RldGFjaGVkKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheURl
ZmF1bHRDb21wYXJhdG9yKSBcCi0gICAgbWFjcm8oaXNCb3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFj
cm8oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oaW5zdGFuY2VPZikgXAor
ICAgIG1hY3JvKGZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wpIFwKICAgICBtYWNy
byhpc0FycmF5U2xvdykgXAogICAgIG1hY3JvKHNhbWVWYWx1ZSkgXAogICAgIG1hY3JvKGNvbmNh
dE1lbWNweSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9u
UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9GdW5jdGlvblByb3RvdHlwZS5qcwkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwyMSArNDIsNiBAQCBmdW5jdGlvbiBhcHBseSh0aGlzVmFsdWUsIGFyZ3VtZW50VmFsdWVz
CiAgICAgcmV0dXJuIHRoaXMuQGFwcGx5KHRoaXNWYWx1ZSwgYXJndW1lbnRWYWx1ZXMpOwogfQog
Ci1Ab3ZlcnJpZGRlbk5hbWU9IltTeW1ib2wuaGFzSW5zdGFuY2VdIgotZnVuY3Rpb24gc3ltYm9s
SGFzSW5zdGFuY2UodmFsdWUpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXND
YWxsYWJsZSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKEBpc0JvdW5k
RnVuY3Rpb24odGhpcykpCi0gICAgICAgIHJldHVybiBAaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KHRoaXMsIHZhbHVlKTsKLQotICAgIHZhciB0YXJnZXQgPSB0aGlzLnByb3RvdHlwZTsKLSAgICBy
ZXR1cm4gQGluc3RhbmNlT2YodmFsdWUsIHRhcmdldCk7Ci19Ci0KIGZ1bmN0aW9uIGJpbmQodGhp
c1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQWxleGV5
IFNodmF5a2EgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGlz
UHJvdG90eXBlT2YodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKCFAaXNP
YmplY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQGluc3Rh
bmNlT2YodmFsdWUsIEB0b09iamVjdCh0aGlzKSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc01h
cEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNTZXRJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzVW5k
ZWZpbmVkT3JOdWxsKSBcCisgICAgbWFjcm8oaW5zdGFuY2VPZikgXAogICAgIG1hY3JvKHRhaWxD
YWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBcCiAgICAg
bWFjcm8odGhyb3dSYW5nZUVycm9yKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAg
LTQwMiwxMyArNDAyLDYgQEAgb3AgOmlkZW50aXR5X3dpdGhfcHJvZmlsZSwKICAgICAgICAgYm90
dG9tUHJvZmlsZTogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6b3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZSwKLSAgICBhcmdzOiB7Ci0gICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBj
b25zdHJ1Y3RvcjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBoYXNJbnN0YW5jZVZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCi0gICAgfQotCiBvcCA6aW5zdGFuY2VvZiwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApAQCAtNDM0LDcgKzQyNyw4IEBAIG9wIDppc19j
ZWxsX3dpdGhfdHlwZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHR5cGU6IEpTVHlw
ZSwKKyAgICAgICAgZmlyc3RUeXBlOiBKU1R5cGUsCisgICAgICAgIGxhc3RUeXBlOiBKU1R5cGUs
CiAgICAgfQogCiBvcCA6aW5fYnlfdmFsLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzQsNyArMjM0LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcgogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wSGFzUHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BIYXNQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKQotICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29u
c3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVl
LCBwcm90b3R5cGUpCiAgICAgVVNFUyhPcEFkZCwgbGhzLCByaHMpCiAgICAgVVNFUyhPcE11bCwg
bGhzLCByaHMpCkBAIC00OTAsNyArNDg5LDYgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKHVucwogICAgIERFRlMoT3BHZXRCeUlkV2l0aFRoaXMsIGRzdCkKICAgICBERUZT
KE9wR2V0QnlWYWxXaXRoVGhpcywgZHN0KQogICAgIERFRlMoT3BHZXRQcm90b3R5cGVPZiwgZHN0
KQotICAgIERFRlMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgZHN0KQogICAgIERFRlMoT3BJbnN0
YW5jZW9mLCBkc3QpCiAgICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZT
KE9wR2V0QnlWYWwsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QqIGNhbGxlZSA9IGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlT3JDb2RlQmxvY2suZ2V0KCkp
OwotICAgICAgICAgICAgICAgIGlmIChjYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkg
eworICAgICAgICAgICAgICAgIGlmIChjYWxsZWUtPmlzSlNGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDbGVhcmluZyBjYWxsIHRvICIsCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBDYWxsTGlua0lu
Zm86OnZpc2l0V2VhayhWTSYgdm0pCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFpc0RpcmVj
dCgpICYmIGhhdmVMYXN0U2VlbkNhbGxlZSgpICYmICF2bS5oZWFwLmlzTWFya2VkKGxhc3RTZWVu
Q2FsbGVlKCkpKSB7Ci0gICAgICAgIGlmIChsYXN0U2VlbkNhbGxlZSgpLT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpCisgICAgICAgIGlmIChsYXN0U2VlbkNhbGxlZSgpLT5pc0pTRnVuY3Rpb24o
KSkKICAgICAgICAgICAgIGhhbmRsZVNwZWNpZmljQ2FsbGVlKGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
bGFzdFNlZW5DYWxsZWUoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2NsZWFyZWRC
eUdDID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
VmFyaWFudC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gSWYgdGhpcyB2YXJpYW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2Ug
aXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1dGFibGUuCiAgICAgQUxXQVlTX0lOTElORSBDYWxsVmFy
aWFudCBkZXNwZWNpZmllZENsb3N1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fY2Fs
bGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgICAgIGlmIChtX2NhbGxlZS0+aXNK
U0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmlhbnQoanNDYXN0PEpTRnVu
Y3Rpb24qPihtX2NhbGxlZSktPmV4ZWN1dGFibGUoKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5j
cHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgY29uc3QgY2hhciog
ZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIkJhZENvbnN0YW50
Q2FjaGUiOwogICAgIGNhc2UgQmFkSW5kZXhpbmdUeXBlOgogICAgICAgICByZXR1cm4gIkJhZElu
ZGV4aW5nVHlwZSI7Ci0gICAgY2FzZSBCYWRUeXBlSW5mb0ZsYWdzOgotICAgICAgICByZXR1cm4g
IkJhZFR5cGVJbmZvRmxhZ3MiOwogICAgIGNhc2UgT3ZlcmZsb3c6CiAgICAgICAgIHJldHVybiAi
T3ZlcmZsb3ciOwogICAgIGNhc2UgTmVnYXRpdmVaZXJvOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIGVudW0gRXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBCYWRDYWNoZSwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYW4gaW5saW5lIGNhY2hlIHdhcyB3cm9uZy4KICAgICBCYWRDb25zdGFu
dENhY2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhIGNhY2hlIG9uIGEgd2VhayBjb25zdGFudCAo
dXN1YWxseSBhIHByb3RvdHlwZSkgd2FzIHdyb25nLgogICAgIEJhZEluZGV4aW5nVHlwZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCi0gICAgQmFkVHlw
ZUluZm9GbGFncywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3QgYXNz
dW1wdGlvbiBhYm91dCB3aGF0IFR5cGVJbmZvIGZsYWdzIHdlIHdvdWxkIHNlZS4KICAgICBPdmVy
ZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJv
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgogICAg
IE5lZ2F0aXZlSW5kZXgsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGEgbmVn
YXRpdmUgaW5kZXggaW4gYSBwbGFjZSB3ZSBkaWRuJ3Qgd2FudCB0byBzZWUgaXQuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzczLDYgQEAgSW5z
dGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdQogI2lmIEVOQUJMRShERkdfSklU
KQogSW5zdGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8o
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8pCiB7Ci0gICAgLy8gRklYTUU6IFdlIHdvdWxkbid0IGhhdmUgdG8gYmFpbCBmb3Igbm9u
Q2VsbCBpZiB3ZSB0YXVnaHQgTWF0Y2hTdHJ1Y3R1cmUgaG93IHRvIGhhbmRsZSBub24KLSAgICAv
LyBjZWxscy4gSWYgd2UgZml4ZWQgdGhhdCB0aGVuIHdlIHdvdWxkbid0IGJlIGFibGUgdG8gdXNl
IHN1bW1hcnkoKTsKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1Nzg0CiAgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5m
bzo6c3VtbWFyeSh2bSwgc3R1YkluZm8pOwogICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkp
KQogICAgICAgICByZXR1cm4gSW5zdGFuY2VPZlN0YXR1cyhzdW1tYXJ5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICB2KGlzRGV0YWNoZWQsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlE
ZWZhdWx0Q29tcGFyYXRvciwgbnVsbHB0cikgXAogICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3Jl
YXRlLCBudWxscHRyKSBcCi0gICAgdihpc0JvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKLSAgICB2
KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoZnVuY3Rpb25Qcm90
b3R5cGVIYXNJbnN0YW5jZVN5bWJvbCwgbnVsbHB0cikgXAogICAgIHYoaW5zdGFuY2VPZiwgbnVs
bHB0cikgXAogICAgIHYoQnVpbHRpbkxvZywgbnVsbHB0cikgXAogICAgIHYoQnVpbHRpbkRlc2Ny
aWJlLCBudWxscHRyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMCw2ICsyMzAsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0
cgogICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0YVZpZXciKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAo
dmFsdWUgJiBTcGVjSW50ZXJuYWxGdW5jdGlvbikKKyAgICAgICAgICAgICAgICBzdHJPdXQucHJp
bnQoIkludGVybmFsRnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNT
dHJpbmcpID09IFNwZWNTdHJpbmcpCkBAIC01MTgsMTAgKzUyMywxMyBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9JCiAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNs
YXNzT2YoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpT
Qm91bmRGdW5jdGlvbjo6aW5mbygpKQotICAgICAgICAgICAgcmV0dXJuIFNwZWNGdW5jdGlvbldp
dGhOb25EZWZhdWx0SGFzSW5zdGFuY2U7Ci0gICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRo
RGVmYXVsdEhhc0luc3RhbmNlOworICAgICAgICAgICAgcmV0dXJuIFNwZWNCb3VuZEZ1bmN0aW9u
OworICAgICAgICByZXR1cm4gU3BlY05vbkJvdW5kRnVuY3Rpb247CiAgICAgfQogCisgICAgaWYg
KGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCisgICAg
ICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbiB8IFNwZWNPYmplY3RPdGhlcjsKKwogICAg
IGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU1Byb21pc2U6OmluZm8oKSkpCiAgICAgICAg
IHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICAKQEAgLTY4Niw2ICs2OTQsMTYgQEAgVHlw
ZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGVGcm9tU3BlY3VsYQogICAgIHJldHVybiBOb3RUeXBl
ZEFycmF5OwogfQogCitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZy
b21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSByYW5nZSkKK3sKKyAgICBTcGVjdWxhdGVkVHlwZSBz
cGVjdWxhdGlvbiA9IFNwZWNOb25lOworICAgIGZvciAodWludDhfdCB0eXBlID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4ocmFuZ2UuZmlyc3QpOyB0eXBlIDw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJh
bmdlLmxhc3QpOyB0eXBlKyspCisgICAgICAgIHNwZWN1bGF0aW9uIHw9IHNwZWN1bGF0aW9uRnJv
bUpTVHlwZShzdGF0aWNfY2FzdDxKU1R5cGU+KHR5cGUpKS52YWx1ZV9vcihTcGVjTm9uZSk7Cisg
ICAgaWYgKHNwZWN1bGF0aW9uID09IFNwZWNOb25lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBzcGVjdWxhdGlvbjsKK30KKwogc3RkOjpvcHRpb25hbDxTcGVjdWxh
dGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtNjk1LDYgKzcxMywxMCBAQCBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRU
eXBlPiBzcGVjdWxhdGlvCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwogICAgIGNhc2UgSGVh
cEJpZ0ludFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKKyAgICBjYXNlIElu
dGVybmFsRnVuY3Rpb25UeXBlOgorICAgICAgICByZXR1cm4gU3BlY0ludGVybmFsRnVuY3Rpb247
CisgICAgY2FzZSBKU0Z1bmN0aW9uVHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNOb25Cb3VuZEZ1
bmN0aW9uOwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0FycmF5Owog
ICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTk2MCw2ICs5ODIsOCBAQCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29uCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZl
ZEFycmF5OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09iamVj
dCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQogICAgICAgICByZXR1cm4gU3BlY0Rh
dGFWaWV3T2JqZWN0OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNJbnRlcm5h
bEZ1bmN0aW9uIiwgc3RybGVuKCJTcGVjSW50ZXJuYWxGdW5jdGlvbiIpKSkKKyAgICAgICAgcmV0
dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwg
IlNwZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICBy
ZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNw
ZWNPYmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjc5OTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDE0ICszNiwxNSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0
cnVjdHVyZTsKK3N0cnVjdCBKU1R5cGVSYW5nZTsKIAogdHlwZWRlZiB1aW50NjRfdCBTcGVjdWxh
dGVkVHlwZTsKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY05vbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDA7IC8vIFdlIGRvbid0IGtub3cgYW55dGhpbmcgeWV0
Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3QgICAgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U0FycmF5Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb25XaXRo
RGVmYXVsdEhhc0luc3RhbmNlICAgID0gMXVsbCA8PCAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U0Z1bmN0aW9uIHRoYXQgaGFzIGl0cyBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHR5cGUg
aW5mbyBmbGFncyBiaXQgc2V0Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
RnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhhc0luc3RhbmNlID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0Z1bmN0aW9uIHRoYXQgZG9lcyBub3QgaGF2ZSBpdHMgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3MgYml0IHNldC4KLXN0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9
IFNwZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5zdGFuY2UgfCBTcGVjRnVuY3Rpb25XaXRoTm9u
RGVmYXVsdEhhc0luc3RhbmNlOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uLgorc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQm91bmRGdW5jdGlvbiAgICAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0JvdW5kRnVuY3Rp
b24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25Cb3VuZEZ1bmN0aW9u
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVu
Y3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLCBidXQgbm90IGEgSlNCb3VuZEZ1bmN0aW9u
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0JvdW5kRnVuY3Rpb24gfCBTcGVjTm9uQm91bmRGdW5jdGlv
bjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDU7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNjsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgpAQCAtMTA5LDggKzExMCw5IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0kKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwQmlnSW50OwogI2VuZGlmCiBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8IDQ1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgor
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZXJuYWxGdW5jdGlvbiAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA0NjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSW50ZXJuYWxG
dW5jdGlvbi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5
dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2Jq
ZWN0IEpTVmFsdWUuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkg
fCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRz
IHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2Jq
ZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3Qg
fCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8
IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBT
cGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtp
bmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3Qg
fCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGly
ZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBT
cGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNw
ZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vh
a1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2Jq
ZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3QgfCBTcGVjSW50ZXJuYWxGdW5jdGlvbjsgLy8g
Qml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlv
bi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8
IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlND
ZWxsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQmlnSW50MzIgfCBTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2Vw
dCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBDb3Jy
ZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEgYnl0ZWNvZGUgbG9jYWwuCkBAIC0y
MzEsNyArMjMzLDcgQEAgaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZQog
CiBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNGdW5jdGlvbjsKKyAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiBTcGVjRnVuY3Rpb24pID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBp
c1Byb3h5T2JqZWN0U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC01MTgsNiAr
NTIwLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYQogLy8gSWYg
aXQncyBhbiBhbnlJbnQoKSwgaXQnbGwgcmV0dXJuIHNwZWN1bGF0ZWQgdHlwZXMgZnJvbSB0aGUg
SW50NTIgbGF0dGljZS4KIC8vIE90aGVyd2lzZSwgaXQnbGwgcmV0dXJuIHR5cGVzIGZyb20gdGhl
IEpTVmFsdWUgbGF0dGljZS4KIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIGludDUy
QXdhcmVTcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8U3BlY3Vs
YXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKEpTVHlwZVJhbmdlKTsKIHN0ZDo6
b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUpOwog
CiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShUeXBlZEFycmF5
VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9yIHR5cGVkIHZpZXdzLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcs
MTEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bgogICAgIE9wSm5l
cVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChSZWdp
c3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50IGNvbnN0YW50LCBMYWJlbCYgdGFyZ2V0KQor
eworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChu
dWxscHRyLCBjb25zdGFudCksIHRhcmdldC5iaW5kKHRoaXMpKTsKK30KKwogdW5zaWduZWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShS
ZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogewogICAgIE9wSm5lcVB0cjo6ZW1pdDxP
cGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxw
dHIsIExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rpb24pLCB0YXJnZXQuYmlu
ZCh0aGlzKSk7CkBAIC0xNzM1LDEyICsxNzQwLDEyIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFcXVhbGl0eU9wSW0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9
PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAg
IE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTdHJpbmdUeXBl
KTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3Au
bV92YWx1ZSwgU3RyaW5nVHlwZSwgU3RyaW5nVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN5bWJvbCIp
IHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3ltYm9sVHlwZSk7CisgICAgICAg
ICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5
bWJvbFR5cGUsIFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJiaWdpbnQiKSB7CkBAIC0xNzQ4
LDcgKzE3NTMsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltCiAj
aWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywg
ZHN0LCBvcC5tX3ZhbHVlKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlw
ZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlKTsKKyAgICAgICAg
ICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgSGVh
cEJpZ0ludFR5cGUsIEhlYXBCaWdJbnRUeXBlKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjQyNCwxMiArMjQyOSw2IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVl
KQotewotICAgIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U6OmVtaXQodGhpcywgZHN0LCBjb25zdHJ1
Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogLy8gSW5kaWNh
dGVzIHRoZSBsZWFzdCB1cHBlciBib3VuZCBvZiByZXNvbHZlIHR5cGUgYmFzZWQgb24gbG9jYWwg
c2NvcGUuIFRoZSBieXRlY29kZSBsaW5rZXIKIC8vIHdpbGwgc3RhcnQgd2l0aCB0aGlzIFJlc29s
dmVUeXBlIGFuZCBjb21wdXRlIHRoZSBsZWFzdCB1cHBlciBib3VuZCBpbmNsdWRpbmcgaW50ZXJj
ZXB0aW5nIHNjb3Blcy4KIFJlc29sdmVUeXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlw
ZSgpCkBAIC00NjA2LDkgKzQ2MDUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRUb0luZAogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMsIEpTVHlwZVJhbmdlIHJhbmdlKQoreworICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhp
cywgZHN0LCBzcmMsIHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0KTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUgdHlwZSkKIHsKLSAgICBPcElz
Q2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKKyAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlLCB0eXBlKTsKICAgICByZXR1cm4gZHN0
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5OCw3ICs3OTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE92ZXJy
aWRlc0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3Is
IFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklE
KiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2ZDdXN0
b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogY29uc3Ry
dWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKQEAgLTkxNiw2
ICs5MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcElmRmFsc2Uo
UmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAg
ICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJl
bCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChS
ZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50LCBMYWJlbCYgdGFyZ2V0KTsKICAgICAg
ICAgdW5zaWduZWQgZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5KFJlZ2lz
dGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIHJlY29yZEhhc093blN0
cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoU3RydWN0dXJlRm9ySW5Db250ZXh0JiwgdW5zaWdu
ZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpOwogCkBAIC05NDAsNiArOTQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbnVtZXJhdG9yR2Vu
ZXJpY1Byb3BlcnR5TmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3Is
IFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJp
bmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpbmRleCk7CiAKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
LCBKU1R5cGVSYW5nZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NlbGxXaXRoVHlwZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTR2VuZXJhdG9yVHlwZSk7IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywg
SlNBc3luY0dlbmVyYXRvclR5cGUpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNDUsNiArMTM0NSwxNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJvdG90eXBl
T2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2luc3RhbmNl
T2YoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUg
PSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKK30KKwogc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOwpAQCAtMzE2MCwyOSArMzE3MCwyMyBAQCBS
ZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCCiAKIFJlZ2lzdGVySUQqIElu
c3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBoYXNJbnN0YW5jZVZh
bHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
c09iamVjdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaXNDdXN0b20gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdlbmVyYXRvci5tb3ZlRW1wdHlWYWx1
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90
b3R5cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmln
aHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCB2YWx1ZS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZyA9IGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgcHJvdG90eXBlLmdldCgpKTsKICAgICBSZWY8
TGFiZWw+IGN1c3RvbSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZjxMYWJlbD4gZG9u
ZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgIFJlZjxMYWJlbD4gdHlwZUVycm9yID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRJc09i
amVjdChpc09iamVjdC5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmRmFsc2UoaXNPYmplY3QuZ2V0KCksIHR5cGVFcnJvci5nZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX2V4cHIxKTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmRmFsc2UoZ2VuZXJhdG9yLmVtaXRJc0NlbGxXaXRoVHlwZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBKU1R5cGVSYW5nZSB7IEludGVybmFsRnVuY3Rpb25U
eXBlLCBKU0Z1bmN0aW9uVHlwZSB9KSwgY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSwgY29uc3RydWN0
b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9s
KTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNl
KGlzQ3VzdG9tLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgaGFzSW5zdGFuY2VWYWx1ZS5nZXQo
KSk7Ci0KLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGlzQ3VzdG9t
LmdldCgpLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90TGlua1Rp
bWVDb25zdGFudChoYXNJbnN0YW5jZVZhbHVlLmdldCgpLCBMaW5rVGltZUNvbnN0YW50OjpmdW5j
dGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJhdG9yLmVtaXRJc09iamVjdChkc3RSZWcuZ2V0KCks
IHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRv
ci52bSgpLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CkBAIC0zMTkxLDEwICszMTk1LDYgQEAg
UmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZQogICAgIGdlbmVyYXRvci5l
bWl0SW5zdGFuY2VPZihkc3RSZWcuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGRvbmUuZ2V0KCkpOwotCi0gICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0eXBlRXJyb3IuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBl
RXJyb3IoIlJpZ2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiKTsK
LQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoY3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IHRydWU7CiAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgSXNDZWxsV2l0
aFR5cGU6Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxk
LnZhbHVlKCkuaXNDZWxsKCkgJiYgY2hpbGQudmFsdWUoKS5hc0NlbGwoKS0+dHlwZSgpID09IG5v
ZGUtPnF1ZXJpZWRUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0NlbGwoKSAmJiBub2RlLT5xdWVyaWVkVHlwZSgpLmNv
bnRhaW5zKGNoaWxkLnZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSkpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKApAQCAtMTU1Miw3ICsxNTUyLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGQubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1hdGNoZWQgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1
ZXJpZWRUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0g
bm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlucyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKQEAgLTQzMzQsMTAgKzQzMzQsNiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAg
ICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgT3ZlcnJpZGVz
SGFzSW5zdGFuY2U6Ci0gICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9v
bGVhbik7Ci0gICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJbnN0YW5jZU9m
OgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTQ0NjQsNDMgKzQ0NjAsNiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDbGVhckNhdGNoTG9j
YWxzOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0g
ICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgdW5zaWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFu
ZCgpOwotICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAgICAgIGlmIChiaXRzID09IEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1f
dHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
SlNWYWx1ZSB2YWx1ZSA9IGFic3RyYWN0VmFsdWUudmFsdWUoKSkgewotICAgICAgICAgICAgaWYg
KHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNl
IGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0g
ICAgICAgICAgICAgICAgLy8gYW5kIHdlIGNhbiByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZs
YWdzLiBUaGVzZSBmbGFncyBkb24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAv
LyBvYmplY3QncyBsaWZldGltZS4KLSAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgp
LT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
IHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgYWJzdHJhY3RWYWx1
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKLSAgICAgICAgICAgICAgICBvayAmPSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5
cGVGbGFncygpICYgYml0cykgPT0gYml0czsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
aWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZv
bGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAg
ICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTY2LDE3ICs1OTY2LDYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2hlY2tfdGR6KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdp
bigpKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKTsKLQotICAgICAg
ICAgICAgTm9kZSogY29uc3RydWN0b3IgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
Y29uc3RydWN0b3IpKTsKLSAgICAgICAgICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZSkpOwotCi0gICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChPdmVy
cmlkZXNIYXNJbnN0YW5jZSwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGRlZmF1bHRIYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKSksIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTsKLSAgICAgICAg
fQotCiAgICAgICAgIGNhc2Ugb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElkZW50aXR5V2l0aFBy
b2ZpbGU+KCk7CiAgICAgICAgICAgICBOb2RlKiBzcmNEc3QgPSBnZXQoYnl0ZWNvZGUubV9zcmNE
c3QpOwpAQCAtNjAyNyw3ICs2MDE2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluc3RhbmNlT2Ys
IHZhbHVlLCBwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChJbnN0YW5jZU9mLCBFZGdlKHZhbHVlLCBDZWxsVXNlKSwgRWRnZShwcm90b3R5cGUp
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgfQog
CkBAIC02MDk4LDcgKzYwODcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+
KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwot
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBl
LCBPcEluZm8oYnl0ZWNvZGUubV90eXBlKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdl
IHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZhbHVlKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CiAgICAgICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHJvZmlsZV90
eXBlOgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9tb3Y6
Ci0gICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3BfaWRlbnRp
dHlfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKICAgICBjYXNlIG9wX2lu
c3RhbmNlb2ZfY3VzdG9tOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAKICAg
ICBjYXNlIElzQ2VsbFdpdGhUeXBlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUt
PnF1ZXJpZWRUeXBlKCkpKTsKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnQxNl90Pihub2RlLT5xdWVyaWVkVHlwZSgpKSkp
KTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKQEAgLTExNzYsMTEg
KzExNzYsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBDaGVja0RldGFjaGVkOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBy
ZXR1cm47IAotICAgICAgICAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKLSAgICAgICAg
cmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oQ2hl
Y2tUeXBlSW5mb0ZsYWdzTG9jLCBKU0NlbGxfdHlwZUluZm9GbGFncywgbm9kZS0+Y2hpbGQxKCkp
LCBMYXp5Tm9kZShub2RlKSk7Ci0gICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgUGFyc2VJbnQ6
CiAgICAgICAgIC8vIE5vdGU6IFdlIHdvdWxkIGhhdmUgZWxpbWluYXRlZCBhIFBhcnNlSW50IHRo
YXQgaGFzIGp1c3QgYSBzaW5nbGUgY2hpbGQgYXMgYW4gSW50MzJVc2UgaW5zaWRlIGZpeHVwLgpA
QCAtMTE5MiwxMSArMTE4Nyw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgY2xvYmJlclRvcCgpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgotICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb0ZsYWdz
KTsKLSAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihPdmVycmlkZXNIYXNJbnN0YW5jZUxvYywgSlND
ZWxsX3R5cGVJbmZvRmxhZ3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwotICAg
ICAgICByZXR1cm47Ci0KICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgcmVhZChKU09i
amVjdF9idXR0ZXJmbHkpOwogICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI2LDQ2
ICsxMDI2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0Zs
YWdzOiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICAgICAgICAgIEFT
U0VSVChiaXRzKTsKLSAgICAgICAgICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1f
dHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBhYnN0cmFjdFZhbHVlLnZhbHVlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgaWYgd2Ugc2VlIGEgY2VsbCBoZXJlLCB3ZSBrbm93IGl0
J3MgZnVsbHkgY29uc3RydWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBj
YW4gcmVhZCBpdHMgaW5saW5lIHR5cGUgaW5mbyBmbGFncy4gVGhlc2UgZmxhZ3MgZG9uJ3QgY2hh
bmdlIG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGlt
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUuYXNDZWxsKCktPmlubGluZVR5
cGVGbGFncygpICYgYml0cykgPT0gYml0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJl
bW92ZShtX2dyYXBoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGFic3RyYWN0VmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvayAm
PSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykgPT0gYml0
czsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvaykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNiBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlQmVsb3dFcToKICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKLSAgICBjYXNl
IE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIFR5cGVP
ZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6CkBAIC0xODgsNyArMTg3LDYg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29uc3Rh
bnRTdG9yYWdlUG9pbnRlcjoKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ2hlY2tWYXJhcmdz
OgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNl
dDoKICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBWYWx1ZVJlcDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNp
b24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTk5MCw3ICsxOTkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5j
ZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CkBAIC0yMDc0LDI1ICsyMDczLDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRj
aFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgotICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAogICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjogewotICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkKLSAgICAg
ICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAg
ICAgICAgICAgICAgJiYgaXM2NEJpdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNo
b3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mQ3Vz
dG9tOgotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEluQnlJZDogewpAQCAtMjgyOCw3ICsyODE5
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAg
ICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKLSAgICAg
ICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVk
Q2FsbGVyOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAg
ICAgY2FzZSBDb25zdHJ1Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNSAr
MTA5LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIExvYwogICAgIGNh
c2UgQnV0dGVyZmx5TG9jOgogICAgICAgICBvdXQucHJpbnQoIkJ1dHRlcmZseUxvYyIpOwogICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzTG9jOgot
ICAgICAgICBvdXQucHJpbnQoIkNoZWNrVHlwZUluZm9GbGFnc0xvYyIpOwotICAgICAgICByZXR1
cm47CiAKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlTG9jOgotICAgICAgICBvdXQucHJp
bnQoIk92ZXJyaWRlc0hhc0luc3RhbmNlTG9jIik7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAg
CiAgICAgY2FzZSBDbG9zdXJlVmFyaWFibGVMb2M6CiAgICAgICAgIG91dC5wcmludCgiQ2xvc3Vy
ZVZhcmlhYmxlTG9jIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsNiBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgQXJyYXlNYXNrTG9jLAogICAg
IFZlY3Rvckxlbmd0aExvYywKICAgICBCdXR0ZXJmbHlMb2MsCi0gICAgQ2hlY2tUeXBlSW5mb0Zs
YWdzTG9jLAotICAgIE92ZXJyaWRlc0hhc0luc3RhbmNlTG9jLAogICAgIENsb3N1cmVWYXJpYWJs
ZUxvYywKICAgICBEaXJlY3RBcmd1bWVudHNMb2MsCiAgICAgR2V0dGVyTG9jLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDEwICsx
NDM2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gSXNDZWxsV2l0aFR5cGU7
CiAgICAgfQogCi0gICAgSlNUeXBlIHF1ZXJpZWRUeXBlKCkKKyAgICBKU1R5cGVSYW5nZSBxdWVy
aWVkVHlwZSgpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx1aW50
OF90LCBzdGQ6OnVuZGVybHlpbmdfdHlwZTxKU1R5cGU+Ojp0eXBlPjo6dmFsdWUsICJFbnN1cmUg
dGhhdCB1aW50OF90IGlzIHRoZSB1bmRlcmx5aW5nIHR5cGUgZm9yIEpTVHlwZS4iKTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV9vcEluZm8uYXM8dWludDMyX3Q+KCkpOwor
ICAgICAgICBBU1NFUlQob3AoKSA9PSBJc0NlbGxXaXRoVHlwZSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hc0pTVHlwZVJhbmdlKCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNTcGVjdWxhdGVk
VHlwZUZvclF1ZXJ5KCkKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKHF1ZXJpZWRUeXBlKCkpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc1Jlc3VsdCgpCkBAIC0xODc3LDcgKzE4NzcsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENoZWNrSXNDb25z
dGFudDoKICAgICAgICAgICAgIHJldHVybiBpc0NlbGwoY2hpbGQxKCkudXNlS2luZCgpKTsKLSAg
ICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdB
c3luY0Z1bmN0aW9uOgpAQCAtMTk1MiwxNyArMTk1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPFVuaXF1ZWRTdHJpbmdJbXBsKj4oKTsKICAgICB9CiAKLSAgICBib29s
IGhhc1R5cGVJbmZvT3BlcmFuZCgpCi0gICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVj
a1R5cGVJbmZvRmxhZ3M7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdHlwZUluZm9PcGVyYW5kKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNUeXBlSW5mb09wZXJhbmQoKSAmJiBtX29wSW5mby5h
czx1aW50MzJfdD4oKSA8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVUNIQVJfTUFYKSk7Ci0gICAg
ICAgIHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKLSAgICB9Ci0KICAgICBib29sIGhh
c1RyYW5zaXRpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC0zMzEzLDYg
KzMzMDEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxOZXdBcnJheUJ1ZmZlckRhdGE+KHUuaW50NjQpOwogICAgICAgICB9CisgICAgICAg
IEFMV0FZU19JTkxJTkUgSlNUeXBlUmFuZ2UgYXNKU1R5cGVSYW5nZSgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNUeXBlUmFuZ2U+KHN0YXRpY19j
YXN0PHVpbnQxNl90Pih1LmludDY0KSk7CisgICAgICAgIH0KIAogICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBc3NlcnRJbkJvdW5kcywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRl
KSAvKiBUYWtlcyBhbiBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUg
c2V0ICovXAogICAgIG1hY3JvKENoZWNrSlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUaGlz
IGlzIHRoZSBzYW1lIGFzIGpzQ2FzdCBidXQgYXMgYSBzcGVjdWxhdGlvbiByYXRoZXIgdGhhbiBh
c3NlcnRpb24gKi9cCiAgICAgbWFjcm8oQ2hlY2tOb3RKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhQYXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykg
XApAQCAtMzk1LDcgKzM5NCw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhQaGFudG9tTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAotICAgIG1h
Y3JvKE92ZXJyaWRlc0hhc0luc3RhbmNlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQ3VzdG9tLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhNYXRjaFN0cnVjdHVyZSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
c3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBt
X3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRl
RmllbGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQorICAg
IGV4cGxpY2l0IE9wSW5mbyhKU1R5cGVSYW5nZSByYW5nZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+KHJhbmdlKSkpIHsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc5
OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25DcmVhdGUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkg
eworICAgIGlmIChjb25zdHJ1Y3Rvci0+aXNKU0Z1bmN0aW9uKCkgJiYganNDYXN0PEpTRnVuY3Rp
b24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAg
RGVmZXJUZXJtaW5hdGlvbiBkZWZlclNjb3BlKHZtKTsKICAgICAgICAgYXV0byByYXJlRGF0YSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9j
YXRpb25Qcm9maWxlKGdsb2JhbE9iamVjdCwgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBzY29w
ZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNyw3ICsxMDM3
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUVxUHRyOgogICAgICAgICBjYXNlIFNhbWVWYWx1ZToKLSAgICAgICAgY2FzZSBP
dmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBj
YXNlIEluc3RhbmNlT2ZDdXN0b206CiAgICAgICAgIGNhc2UgSXNFbXB0eToKQEAgLTEzMTQsNyAr
MTMxMyw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAg
ICBjYXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgog
ICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1NCw5ICsyNTQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CiAg
ICAgY2FzZSBTYW1lVmFsdWU6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2Fz
ZSBQYXJzZUludDoKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgIGNhc2UgSXNF
bXB0eToKICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmpl
Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
NDMsMTYgKzM2NDMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7
Ci0gICAgICAgIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mobm9kZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6IHsKLSAgICAgICAgY29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
ICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAgICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDMyLDIxICs0NDMyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxh
Z3M6IHsKLSAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhub2RlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAgICAgICBjb21waWxlUGFy
c2VJbnQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgT3ZlcnJpZGVz
SGFzSW5zdGFuY2U6IHsKLSAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKG5vZGUp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAg
ICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDIwICs0MDgxLDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCi17
Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0K
LSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IHdvcmtzIGZvciBjaGVja2luZyBpZiBhIHNpbmdsZSBiaXQgaXMgc2V0LiBJZiB3ZSB3YW50
IHRvIGNoZWNrIG1vcmUKLSAgICAvLyB0aGFuIG9uZSBiaXQgYXQgb25jZSwgd2UnbGwgbmVlZCB0
byBmaXggdGhpczoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1NzA1Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlSW5mb0ZsYWdzLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5vZGUtPnR5cGVJbmZvT3BlcmFu
ZCgpKSkpOwotCi0gICAgbm9SZXN1bHQobm9kZSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBTdHJpbmdVc2UpOwpAQCAtNDE1MiwxMzYgKzQxMzgsNjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJ
bnN0YW5jZShOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YoTm9kZSogbm9kZSkKIHsKLSAgICBOb2RlKiBoYXNJbnN0YW5jZVZhbHVlTm9kZSA9IG5vZGUt
PmNoaWxkMigpLm5vZGUoKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7
CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdERlZmF1bHQ7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1
ZU9wZXJhbmQgaGFzSW5zdGFuY2VWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQorCisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisK
KyAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAKLSAgICAvLyBJdCB3b3VsZCBiZSBncmVhdCBpZiBjb25zdGFudCBmb2xk
aW5nIGhhbmRsZWQgYXV0b21hdGljYWxseSB0aGUgY2FzZSB3aGVyZSB3ZSBrbmV3IHRoZSBoYXNJ
bnN0YW5jZSBmdW5jdGlvbgotICAgIC8vIHdhcyBhIGNvbnN0YW50LiBVbmZvcnR1bmF0ZWx5LCB0
aGUgZm9sZGluZyBydWxlIGZvciBPdmVycmlkZXNIYXNJbnN0YW5jZSBpcyBpbiB0aGUgc3RyZW5n
dGggcmVkdWN0aW9uIHBoYXNlCi0gICAgLy8gc2luY2UgaXQgcmVsaWVzIG9uIE9TUiBpbmZvcm1h
dGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzMgotICAg
IGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhh
c0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7Ci0g
ICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1
ZS5qc1ZhbHVlUmVncygpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG5vdERlZmF1bHQu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3Rh
bmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7
Ci0jZWxzZQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
aGFzSW5zdGFuY2VWYWx1ZVJlZ3MpKTsKLSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
IHByb3RvdHlwZVJlZ3MgPSBKU1ZhbHVlUmVncyhwcm90b3R5cGUuZ3ByKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogI2VuZGlmCisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHByb3RvdHlwZVJl
Z3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncykpOworI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgfQorI2VuZGlmCiAKLSAgICAvLyBDaGVjayB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UnLgotICAgIG1faml0LnRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSksIHJlc3VsdEdQUik7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKLQotICAgIGlmICghbm90RGVmYXVsdC5lbXB0eSgpKSB7Ci0gICAgICAgIG5v
dERlZmF1bHQubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigx
KSwgcmVzdWx0R1BSKTsKLSAgICB9Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQotewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaDJHUFIsCisgICAgICAgIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzLnBheWxvYWRH
UFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxs
KSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd0Nhc2UpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKLSAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywg
cHJvdG90eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5j
ZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJ
bmZvR1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
R1BSLCBwcm90b3R5cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VP
ZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7Ci19CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqIG5vZGUpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UKLSAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIAotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwotICAgICAgICAKLSAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7Ci0gICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwotICAg
ICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBwcm90b3R5
cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAgICAgIAotICAg
ICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaDJHUFIpOwotICAgICAgICAKLSAgICAgICAgYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
ICAgIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIAotICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90
eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgIAotICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7Ci0gICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Ci0g
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwotICAgIH0KLSAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKLSAgICAKLSAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFu
Y2hJZkNlbGwodmFsdWVSZWdzKTsKLSAgICBtb3ZlRmFsc2VUbyhyZXN1bHRHUFIpOwotICAgIAot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgCi0gICAgaXND
ZWxsLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVSZWdzKTsKLSAgICAKLSAgICBjb21waWxl
SW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0
R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwot
ICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgcmV0dXJuOwogfQpAQCAtNTExNiwxOCArNTAzMywxOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkN1CiAgICAgLy8gU3ltYm9sLmhh
c0luc3RhbmNlIGJlY29tZXMgcG9wdWxhciB3aWxsIGxpa2VseSByZW1haW4gdGhhdCB3YXkuCiAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
IEpTVmFsdWVPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBK
U1ZhbHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25z
dHJ1Y3Rvci5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyBjb25zdHJ1Y3RvclJlZ3MgPSBjb25zdHJ1
Y3Rvci5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlUmVncyA9IGhh
c0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5q
dW1wKCk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Us
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVn
cykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhp
cywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvclJlZ3MsIGhhc0luc3RhbmNlUmVncykp
OwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAt
NTE0NCwxMCArNTA2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRo
VHkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwodmFsdWVSZWdzKTsKIAotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxl
cjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgIFRy
dXN0ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIG5v
ZGUtPnF1ZXJpZWRUeXBlKCksIHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1
bHRHUFIpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwog
CkBAIC01MTY2LDEwICs1MDgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2Vs
bFdpdGhUeQogICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2Vs
bEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVk
SW1tMzIobm9kZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5pc0NlbGxXaXRoVHlwZShjZWxsR1BSLCBub2RlLT5xdWVyaWVkVHlwZSgpLCBy
ZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0R1BSKTsKICAgICAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTEzMjcsNyArMTEyMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3Qo
RWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSwg
R1BSUmVnIGNlbGwpCiB7Ci0gICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3BlY0Z1
bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNGdW5jdGlvbiwgbV9qaXQuYnJhbmNoSWZO
b3RGdW5jdGlvbihjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1
bmN0aW9uKEVkZ2UgZWRnZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDEwICs3
NTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVT
dHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7Ci0g
ICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwogCiAgICAgdm9pZCBj
b21waWxlSXNDZWxsV2l0aFR5cGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUlzVHlwZWRBcnJh
eVZpZXcoTm9kZSopOwpAQCAtMTM2Myw3ICsxMzYxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwogCi0gICAgdm9pZCBjb21waWxlQ2hlY2tUeXBl
SW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0lkZW50KE5vZGUqKTsKIAog
ICAgIHZvaWQgY29tcGlsZVBhcnNlSW50KE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDI2ICszMTEsNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRoaXMgaW4gY29uc3RhbnQgZm9sZGluZyBidXQgdGhpcyBj
dXJyZW50bHkgcmVsaWVzIG9uIE9TUiBleGl0IGhpc3Rvcnk6Ci0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICAgICAgY2FzZSBPdmVy
cmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICAgICAgaWYgKCFtX25vZGUtPmNoaWxkMigpLm5v
ZGUoKS0+aXNDZWxsQ29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpLT5hc0NlbGwoKSAhPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZl
cnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2dyYXBoLmhhc0V4
aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRUeXBlSW5mb0ZsYWdzKSkgewotICAg
ICAgICAgICAgICAgIC8vIFdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZSB0aGF0IHdlIHdpbGwgbm90
IHNlZSBhIGZ1bmN0aW9uIHRoYXQgaGFzIGEgY3VzdG9tIGluc3RhbmNlb2Ygb3BlcmF0aW9uIGFz
IHRoZXkgc2hvdWxkIGJlIHJhcmUuCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZShtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrVHlwZUluZm9GbGFncywgbV9ub2Rl
LT5vcmlnaW4sIE9wSW5mbyhJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgRWRnZShtX25v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgQ2VsbFVzZSkpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgbG90IG9mIHN0cmlu
ZyBjb25zdGFudC1mb2xkaW5nIHJ1bGVzIGhlcmUuIEl0IHdvdWxkIGJlIGdyZWF0IHRvCiAgICAg
ICAgIC8vIG1vdmUgdGhlc2UgdG8gdGhlIGFic3RyYWN0IGludGVycHJldGVyIG9uY2UgQWJzdHJh
Y3RWYWx1ZSBjYW4gc3VwcG9ydCBMYXp5SlNWYWx1ZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTIwNApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsOCArMjc1LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CiAg
ICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgot
ICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAg
IGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICBjYXNlIERvdWJsZVJlcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ5NywxMiArMTQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgVHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZVR5cGVPZigpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgotICAgICAgICAgICAgY29tcGls
ZUNoZWNrVHlwZUluZm9GbGFncygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
T3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAgICAgICAgICBjb21waWxlT3ZlcnJpZGVzSGFzSW5z
dGFuY2UoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6CiAg
ICAgICAgICAgICBjb21waWxlSW5zdGFuY2VPZigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MjcxMyw2NSArMTI3MDcsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCkKLSAgICB7
Ci0gICAgICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IG1fbm9k
ZS0+Y2VsbE9wZXJhbmQoKTsKLSAgICAgICAgQVNTRVJUKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0
aW9uLT5jZWxsKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKCkpKTsKLQotICAgICAgICBMVmFs
dWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFs
dWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotCi0gICAgICAg
IExCYXNpY0Jsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0KLSAgICAg
ICAgLy8gVW5saWtlIGluIHRoZSBERkcsIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNsZWFuaW5nIHRo
aXMgY29kZSB1cCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBwcm92ZW4gdGhlIGhhc0luc3Rh
bmNlVmFsdWUgaXMgYSBjb25zdGFudCBhcyBCMyBzaG91bGQgZml4IGl0IGZvciB1cy4KLQotICAg
ICAgICBWYWx1ZUZyb21CbG9jayBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQuYm9vbGVhblRydWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90
RXF1YWwoaGFzSW5zdGFuY2UsIGZyb3plblBvaW50ZXIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rp
b24pKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsK
LQotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRI
YXNJbnN0YW5jZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC50ZXN0SXNa
ZXJvMzIoCi0gICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICBtX291dC5jb25zdEludDMy
KEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7Ci0gICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIGltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2VSZXN1bHQsIG5vdERlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCkpOwotICAg
IH0KLQotICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncygpCi0gICAgewotICAgICAg
ICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRUeXBlSW5mb0ZsYWdzLCBub1ZhbHVlKCksIG51
bGxwdHIsCi0gICAgICAgICAgICBtX291dC50ZXN0SXNaZXJvMzIoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZDhaZXJvRXh0MzIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMiht
X25vZGUtPnR5cGVJbmZvT3BlcmFuZCgpKSkpOwotICAgIH0KLSAgICAKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKCkKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAg
ICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworCisgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKICAg
ICAgICAgCi0gICAgICAgIExWYWx1ZSB2YWx1ZTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHByb3RvdHlwZTsKLSAgICAg
ICAgYm9vbCB2YWx1ZUlzQ2VsbDsKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0NlbGw7Ci0gICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCi0gICAgICAgICAg
ICAmJiBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmIChtX25vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAgICAgICBwcm90b3R5cGUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2
YWx1ZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgICAgICBwcm90b3R5cGVJc0NlbGwgPSB0cnVlOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YWx1ZUlzQ2Vs
bCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKICAg
ICAgICAgICAgIHByb3RvdHlwZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDIo
KSkuaXNUeXBlKFNwZWNDZWxsKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyODAxLDE0ICsx
Mjc1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
cGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MikgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSXND
ZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBpc0NlbGwgPSBq
aXQuYnJhbmNoSWZDZWxsKHZhbHVlR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmJveEJv
b2xlYW5QYXlsb2FkKGZhbHNlLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgICAgICAgICBkb25l
SnVtcCA9IGppdC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlzQ2VsbC5saW5rKCZqaXQp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgICAgICBpZiAoIXBy
b3RvdHlwZUlzQ2VsbCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQu
YnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZUdQUikpOwpAQCAtMTI4MzMsMTQgKzEyNzc3LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fR1NzaUpKIG9wdGltaXphdGlvbkZ1bmN0aW9uID0g
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCkBAIC0xMjg1MCw3ICsxMjc5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0
R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKQEAgLTEyODY0
LDkgKzEyODA2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGRvbmVKdW1wLmlzU2V0KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRvbmVKdW1wLmxpbmsoJmppdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
CiAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBhIGJveGVkIGJvb2xlYW4uCkBAIC0xMjg3Nyw3ICsx
MjgxNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwog
CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uSW5zdGFuY2VPZkN1c3RvbSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIGNv
bnN0cnVjdG9yLCBoYXNJbnN0YW5jZSkpKTsKQEAgLTE4OTg3LDE1ICsxODkyNiwxMSBAQCBwcml2
YXRlOgogICAgIAogICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjRnVuY3Rpb24pKQotICAgICAg
ICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIGlzVHlwZShjZWxsLCBKU0Z1bmN0
aW9uVHlwZSk7CisgICAgICAgIHJldHVybiBpc0NlbGxXaXRoVHlwZShjZWxsLCBKU1R5cGVSYW5n
ZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0JvdW5kRnVuY3Rpb25UeXBlIH0sIFNwZWNGdW5jdGlvbiwg
dHlwZSk7CiAgICAgfQogICAgIExWYWx1ZSBpc05vdEZ1bmN0aW9uKExWYWx1ZSBjZWxsLCBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVl
IHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0Z1bmN0aW9uKSkK
LSAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBpc05vdFR5cGUoY2Vs
bCwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICByZXR1cm4gbV9vdXQubG9naWNhbE5vdChpc0Z1
bmN0aW9uKGNlbGwsIHR5cGUpKTsKICAgICB9CiAgICAgICAgICAgICAKICAgICBMVmFsdWUgaXNF
eG90aWNGb3JUeXBlb2YoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIxLDEzICs2MjEsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6aXRlcmF0b3JFbgogICAgIHJldHVybiBhcnJheTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tG
b3JiaWRkZW5Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWx1ZSBwcm90bykKK3N0YXRpYyBib29sIGNoZWNrRm9yYmlkZGVuUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB2YWx1ZSwgSlNPYmplY3Qq
IHByb3RvKQogewogICAgIGlmICh2YWx1ZSA9PSBwcm90bykKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgcHJvdG8gaGFzbid0
IGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSB2YWx1ZS4KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHByb3RvLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlLT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgcHJvdG8pOwogfQogCiBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTY5NCw3ICs2OTQsNyBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhCiAgICAgICAgICAgICBpZiAodmFs
dWUuaW5oZXJpdHM8UHJveHlPYmplY3Q+KHZtKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKEpTT2JqZWN0OjpkZWZh
dWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG90eXBlKSkKKyAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc09iamVjdCgpICYmIG9iamVjdC0+aXNQcm90b3R5cGVPZihnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpCiAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgYXJyYXktPmxlbmd0aCgpLCB2YWx1ZSk7CiAKICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MzIsOCArOTMyLDIyIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9s
KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9s
VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAg
YnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkZ1bmN0
aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5j
dGlvblR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9Cisg
ICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJ
ZlR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9uVHlwZSwgSlNCb3VuZEZ1bmN0
aW9uVHlwZSB9KTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTVHlwZVJhbmdlIHsgSlNGdW5j
dGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSk7IH0KKworICAgIHZvaWQgaXNDZWxsV2l0
aFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZVJhbmdlIHJhbmdlLCBHUFJSZWcgZHN0KQorICAg
IHsKKyAgICAgICAgaWYgKHJhbmdlLmxhc3QgPT0gcmFuZ2UuZmlyc3QpIHsKKyAgICAgICAgICAg
IGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBkc3QpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHJhbmdlLmxhc3QgPiByYW5nZS5maXJz
dCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgICAg
IGxvYWQ4KEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNj
cmF0Y2gpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBzY3JhdGNo
KTsKKyAgICAgICAgY29tcGFyZTMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMy
KHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCksIGRzdCk7CisgICAgfQogICAgIAogICAgIHZvaWQg
aXNFbXB0eShHUFJSZWcgZ3ByLCBHUFJSZWcgZHN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw2IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3NldF9wcml2
YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCi0gICAgICAgIERFRklORV9PUChv
cF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2Vv
ZikKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfZW1wdHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3NCw3ICs1NzQsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDM0ICsxMTcsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxSZWdp
c3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3RydWN0b3I7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7Ci0K
LSAgICBlbWl0TG9hZFBheWxvYWQoaGFzSW5zdGFuY2VWYWx1ZSwgcmVnVDApOwotICAgIC8vIFdl
IGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5oYXNJbnN0YW5jZSB3b3VsZCBkby4K
LSAgICBKdW1wIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbCho
YXNJbnN0YW5jZVZhbHVlKTsKLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkpOwotCi0g
ICAgLy8gV2Uga25vdyB0aGF0IGNvbnN0cnVjdG9yIGlzIGFuIG9iamVjdCBmcm9tIHRoZSB3YXkg
Ynl0ZWNvZGUgaXMgZW1pdHRlZCBmb3IgaW5zdGFuY2VvZiBleHByZXNzaW9ucy4KLSAgICBlbWl0
TG9hZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8vIENoZWNrIHRoYXQgY29u
c3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGkuZS4gdGhlIG9iamVjdCBp
cyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgotICAgIHRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7Ci0gICAgSnVtcCBkb25l
ID0ganVtcCgpOwotCi0gICAgaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwubGluayh0aGlzKTsKLSAg
ICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7Ci0gICAgbW92ZShUcnVzdGVkSW1t
MzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBlbWl0U3RvcmVCb29s
KGRzdCwgcmVnVDApOwotCi19Ci0KIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CkBAIC0xNTcsOCArMTI5LDYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cgogICAgIGVtaXRMb2Fk
UGF5bG9hZCh2YWx1ZSwgcmVnVDIpOwogICAgIGVtaXRMb2FkUGF5bG9hZChwcm90bywgcmVnVDEp
OwogCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuIGJhc2VWYWwgbXVzdCBiZSBh
IGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9ieV9pZCBmb3IgU3ltYm9sLmhhc0lu
c3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCh2YWx1ZSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKQEAgLTE5NCw5ICsxNjQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5zdGFuY2VvZihjb25zdCBJCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9p
bnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLSAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwogICAgIGVt
aXRMb2FkVGFnKHByb3RvLCByZWdUMyk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDAsIHJlZ1QyKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QxKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMSkpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTIxMSw5
ICsxODAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNl
VmFsdWU7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0TG9h
ZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QyKTsKLSAgICBlbWl0TG9hZChoYXNJbnN0YW5jZVZh
bHVlLCByZWdUNCwgcmVnVDMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
ZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCByZWdUMiwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgZW1pdExvYWQo
Y29uc3RydWN0b3IsIHJlZ1QzLCByZWdUMik7CisgICAgZW1pdExvYWQoaGFzSW5zdGFuY2VWYWx1
ZSwgcmVnVDUsIHJlZ1Q0KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZD
dXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0
KSk7CiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KICAgICAKQEAg
LTMwNCwxMiArMjczLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNv
bnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdp
dGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7Ci0gICAgaW50IHR5
cGUgPSBieXRlY29kZS5tX3R5cGU7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKLSAgICBj
b21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOworICAgIGlzQ2VsbFdpdGhUeXBlKHJlZ1Qw
LCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5tX2xhc3RUeXBl
IH0sIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGlu
ayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
cmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDMyICsxMjEsNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U+KCk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxSZWdp
c3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3RydWN0b3I7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7Ci0K
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsKLQot
ICAgIC8vIFdlIGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5oYXNJbnN0YW5jZSB3
b3VsZCBkby4KLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUgPSBicmFuY2hQdHIoTm90
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkpOwotCi0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihjb25zdHJ1Y3RvciwgcmVnVDApOwotCi0gICAgLy8gQ2hlY2sgdGhh
dCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScgaS5lLiB0aGUgb2Jq
ZWN0IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQgZnVuY3Rpb24uCi0gICAgdGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIHJlZ1QwKTsKLSAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwotICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKLQotICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3Zl
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxp
bmsodGhpcyk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwotfQotCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0
YW5jZW9mPigpOwpAQCAtMTU5LDggKzEzMyw2IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNl
b2YoY29uc3QgSW5zdHIKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcmVnVDEpOwogICAgIAotICAgIC8v
IENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFsIG11c3QgYmUgYSBjZWxsIC0gdGhp
cyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5bWJvbC5oYXNJbnN0YW5jZS4KLSAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDIsIHZhbHVlKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IgZ2VuKApAQCAtMzI2LDEyICsyOTgsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
Y2VsbF93aXRoX3R5cGUoY29ucwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3Bl
cmFuZDsKLSAgICBpbnQgdHlwZSA9IGJ5dGVjb2RlLm1fdHlwZTsKIAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElm
Tm90Q2VsbChyZWdUMCk7CiAKLSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOwor
ICAgIGlzQ2VsbFdpdGhUeXBlKHJlZ1QwLCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RU
eXBlLCBieXRlY29kZS5tX2xhc3RUeXBlIH0sIHJlZ1QwKTsKICAgICBib3hCb29sZWFuKHJlZ1Qw
LCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzI0LDE4ICsyMzI0LDE3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRHZXQKIH0KICNlbmRpZgogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCogY29u
c3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6ZV90LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQ29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJ
bnN0YW5jZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1
ZSBjb25zdHJ1Y3RvciA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQ29uc3RydWN0b3IpOwogICAg
IEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkSGFzSW5z
dGFuY2UpOwogCi0gICAgaWYgKGNvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIGpzSW5zdGFuY2VvZk9wZXJhdG9yKGdsb2JhbE9iamVjdCwgdmFsdWUs
IGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIEpTVmFsdWUgYmFzZVZh
bHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKQEAgLTI4NjcsMzQgKzI4NjYsMzIgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hXaQogICAgIHJldHVybiBKU1dpdGhTY29wZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgb2JqZWN0KTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvdG8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3RvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAgIAogICAg
IHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIGJvb2wgcmVzdWx0ID0g
SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90byk7
CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywg
YXNPYmplY3QodmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwq
IHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAg
IAotICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBwcm90byk7CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2Yo
Z2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpOwogICAgIAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgdmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKHZtKSkpCisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5l
cmljKHZtLCBjb2RlQmxvY2ssIHZhbHVlLT5zdHJ1Y3R1cmUodm0pKSkKICAgICAgICAgcmVwYXRj
aEluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlLCBwcm90bywgKnN0dWJJ
bmZvLCByZXN1bHQpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlc3VsdCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsOCArMjcxLDkgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25EZWxldAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQsIEVDTUFNb2RlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3Qp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIHZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJv
dG8pKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBKU0NlbGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3QsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50
cywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBp
bnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIGlu
dDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJf
dCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZSwg
Q2FsbEZyYW1lKiwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSk7CkBAIC0zMDMsNyArMzA0LDYgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FeGNlcAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25FeGNlcHRpb25GdXp6V2l0aENhbGxGcmFtZSwgdm9pZCwgKFZNKikpOwogCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRp
b25JZkNhdGNoYWJsZSwgSlNDZWxsKiwgKFZNKikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25WYWx1ZUFkZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
OSwyMSArMTIxOSwxOCBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNGb3VuZCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7
CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQodmFsdWVWYWx1ZS5pc0NlbGwoKSk7IC8vIHNob3Vs
ZENvbnNpZGVyQ2FjaGluZyByZWplY3RzIG5vbi1jZWxscy4KLSAgICAKICAgICBpZiAoZm9yY2VJ
Q0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAg
ICAgCiAgICAgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgCi0gICAgICAgIEpTQ2VsbCogdmFsdWUg
PSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZh
bHVlLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
ICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgcHJvdG90eXBlVmFsdWUpOwpAQCAtMTI3OSwxMSArMTI3NiwxMSBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiB9CiAKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2Yo
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91bmQpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIGlmICh0cnlDYWNoZUlu
c3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3RvdHlwZVZh
bHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCisgICAgaWYgKHRyeUNh
Y2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWUsIHByb3RvdHlwZSwg
c3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQogICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmlj
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmwKIHZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwg
U3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKK3ZvaWQgcmVwYXRjaEluc3RhbmNl
T2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua01v
bm9tb3JwaGljQ2FsbChWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayos
IEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7
CiB2b2lkIGxpbmtEaXJlY3RDYWxsKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9j
ayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtTbG93
Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDksMjMgKzYwOSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aW5zdGFuY2VvCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVl
KTsKICAgICBKU1ZhbHVlIHByb3RvID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1f
cHJvdG90eXBlKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG8pKSk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmpl
Y3QodmFsdWUpKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFu
Y2VvZl9jdXN0b20pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbnN0YW5jZW9mQ3VzdG9tPigpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBjb25zdHJ1
Y3RvciA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2NvbnN0cnVjdG9yKTsKICAg
ICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9oYXNJbnN0YW5jZVZhbHVlKTsKLQotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci5pc09iamVj
dCgpKTsKLSAgICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9i
amVjdCgpLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UoKSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5n
ZXRPYmplY3QoKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VW
YWx1ZSkpOwotICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJbnN0YW5jZW9mT3BlcmF0b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF90cnlfZ2V0X2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDM1ICsxMjg2LDYgQEAgbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX2JpdG5vdCwgT3BCaXRub3QsIAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxp
bnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV9kc3QsIHQzKQotICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KLQotICAgICMgRmlyc3QgY2hlY2sg
aWYgaGFzSW5zdGFuY2VWYWx1ZSBpcyB0aGUgb25lIG9uIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1i
b2wuaGFzSW5zdGFuY2VdCi0gICAgZ2V0KG1faGFzSW5zdGFuY2VWYWx1ZSwgdDApCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQyLCAub3BPdmVy
cmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQwLCB0MSwgdDIpCi0gICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE92ZXJyaWRlc2hh
c0luc3RhbmNlVmFsdWVOb3RDZWxsCi0KLSAgICAjIFdlIGRvbid0IG5lZWQgaGFzSW5zdGFuY2VW
YWx1ZSdzIHRhZyByZWdpc3RlciBhbnltb3JlLgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQotICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
W3QxXSwgdDEKLSAgICBiaW5lcSB0MSwgdDIsIC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVO
b3REZWZhdWx0Ci0KLSAgICAjIFdlIGtub3cgdGhlIGNvbnN0cnVjdG9yIGlzIGEgY2VsbC4KLSAg
ICBnZXQobV9jb25zdHJ1Y3RvciwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRVbmNoZWNrZWQoc2l6ZSwgdDAsIHQxKQotICAgIHRieiBKU0NlbGw6Om1fZmxhZ3NbdDFdLCBJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MAotICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQotLm9wT3ZlcnJpZGVzaGFzSW5zdGFu
Y2VWYWx1ZU5vdENlbGw6Ci0ub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90RGVmYXVsdDoK
LSAgICBzdG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkK
LWVuZCkKLQogCiBsbGludE9wV2l0aFJldHVybihvcF9pc19lbXB0eSwgT3BJc0VtcHR5LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQpA
QCAtMTM2OSw4ICsxMzQwLDExIEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90
eXBlLCAKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCwgdDMpCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5ub3RDZWxsQ2FzZQot
ICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKLSAgICBjYmVxIEpT
Q2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBl
LCBtX2ZpcnN0VHlwZSwgdDEpCisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2xh
c3RUeXBlLCB0MikKKyAgICBjYmFlcSBKU0NlbGw6Om1fdHlwZVt0M10sIHQxLCB0MQorICAgIGNi
YmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIsIHQyCisgICAgYW5kaSB0MiwgdDEKICAgICByZXR1
cm4oQm9vbGVhblRhZywgdDEpCiAubm90Q2VsbENhc2U6CiAgICAgcmV0dXJuKEJvb2xlYW5UYWcs
IDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTEzNDYsMjkgKzEzNDYsNiBAQCBsbGludE9wV2l0aFByb2ZpbGUob3BfYml0bm90LCBPcEJpdG5v
dCwgCiBlbmQpCiAKIAotbGxpbnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBPcE92ZXJy
aWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV9k
c3QsIHQzKQotCi0gICAgZ2V0KG1faGFzSW5zdGFuY2VWYWx1ZSwgdDEpCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQy
Ci0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCi0gICAgbG9hZHAg
SlNHbG9iYWxPYmplY3Q6Om1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb25b
dDJdLCB0MgotICAgIGJxbmVxIHQwLCB0MiwgLm9wT3ZlcnJpZGVzSGFzSW5zdGFuY2VOb3REZWZh
dWx0U3ltYm9sCi0KLSAgICBnZXQobV9jb25zdHJ1Y3RvciwgdDEpCi0gICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgdGJ6IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIHQxCi0gICAgb3JxIFZhbHVlRmFsc2UsIHQxCi0g
ICAgc3RvcmVxIHQxLCBbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi0KLS5vcE92ZXJyaWRl
c0hhc0luc3RhbmNlTm90RGVmYXVsdFN5bWJvbDoKLSAgICBzdG9yZXEgVmFsdWVUcnVlLCBbY2Zy
LCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KLQogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
ICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MCkKQEAgLTE0MzksMTMgKzE0MTYsMTQgQEAgZWxzZQogZW5kCiAKIGxsaW50T3BXaXRo
UmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlw
ZSwgbV90eXBlLCB0MCkKKyAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fZmlyc3RU
eXBlLCB0MCkKKyAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fbGFzdFR5cGUsIHQy
KQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDEsIHQzKQogICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLm5vdENlbGxDYXNlCi0gICAg
Y2JlcSBKU0NlbGw6Om1fdHlwZVt0M10sIHQwLCB0MQotICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQot
ICAgIHJldHVybih0MSkKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgLm5vdENlbGxD
YXNlCisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIsIC5ub3RDZWxsQ2FzZQorICAgIHJl
dHVybihWYWx1ZVRydWUpCiAubm90Q2VsbENhc2U6CiAgICAgcmV0dXJuKFZhbHVlRmFsc2UpCiBl
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3
ICs1NjIsNiBAQCBjb25zdCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAKICMg
VHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29u
c3RleHByIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UgPSBjb25zdGV4cHIgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29uc3Qg
T3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dldFBy
b3RvdHlwZU91dE9mTGluZQogCiAjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw5ICs3NSw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0T3du
UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0
eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxF
X0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3RvbUhh
c0luc3RhbmNlRnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7Ci0gICAgQ3VzdG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFC
TEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2UpOwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJvcGVy
dHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgIERlZmluZU93
blByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5
KTsKIApAQCAtMTU1LDcgKzE1Miw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZD
bGFzc05hbWU6OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBc
Ci0gICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmRlZmluZU93blByb3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRF
eHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIGNvbnN0IENsYXNzSW5mbyBG
dW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9
OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1Rv
U3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9G
dW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
Y2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3Nl
Yy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlvbi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MCw3ICs2
MSw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAqY2Fs
bEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1Ymxp
Y05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZt
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
Ci0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3MsIGZ1
bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KICAgICAKQEAgLTk5LDQgKzEwMCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Qcm90b0Z1CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY0hh
c0luc3RhbmNlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgYm9vbCByZXN1bHQgPSBh
c09iamVjdCh0aGlzVmFsdWUpLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzk5
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6
IHB1YmxpYyBKU05vbkZpbgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8
IE92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxEYXRh
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0cnVj
dEludGxJbnN0YW5jZVdpdGhXb3JrYXJvCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwot
ICAgICAgICBBU1NFUlQoIWNhbGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9u
Pih2bSkpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFs
d2F5cyBoYXZlIGBwcm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAgICBB
U1NFUlQocHJvdG90eXBlKTsKLSAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0Ojpk
ZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOwor
ICAgICAgICBib29sIGhhc0luc3RhbmNlID0gY2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xv
YmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAgICBQ
cm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUpOwpAQCAtMTA2LDEwICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3Jh
cEZvckxlZ2FjeUludGxDb25zdHJ1CiAgICAgaWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKIAotICAgIEFTU0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGlu
aGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNv
bnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8v
IFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90
IGJlIGRlbGV0ZWQuCi0gICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5j
ZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0
LCBwcm90b3R5cGUpOworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVs
dEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NCwxOSArMTQ0LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25D
bwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdU
YXJnZXQpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpz
RHluYW1pY0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
T2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmpl
Y3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7
Ci19Ci0KIGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24p
CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEwLDEx
ICsxOTcsNiBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAgICAg
cmV0dXJuIGZ1bmN0aW9uOwogfQogCi1ib29sIEpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5z
dGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVj
dCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOwot
fQotCiBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZU1heUJlTnVs
bCwgZG91YmxlIGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0RnVu
Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwxMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZFRo
aXNOb0FyZ3NGdW5jdGlvbkNhbGwpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZEZ1
bmN0aW9uQ2FsbCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlv
bkNvbnN0cnVjdCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5jdGlvbik7
Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0K
IGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZTsKLSAgICBzdGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYg
SW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC00OSw4ICs0MSw2IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGRvdWJsZSBsZW5ndGgsIEpTU3RyaW5nKiBuYW1l
TWF5QmVOdWxsKTsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0
RnVuY3Rpb24oKSB7IHJldHVybiBtX3RhcmdldEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNWYWx1
ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQpAQCAtNzEsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlv
blR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQm91bmRG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rpb24sIG1fdGFyZ2V0RnVuY3Rpb24pOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI3OTk1NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdAogCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24gMjc5
OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDYgKzYwLDcgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAv
LyBUaGUgZmlyc3QgYW5kIGxhc3QgSlNUeXBlIGFyZSBpbmNsdXNpdmUKIHN0cnVjdCBKU1R5cGVS
YW5nZSB7CiAgICAgYm9vbCBjb250YWlucyhKU1R5cGUgdHlwZSkgY29uc3QgeyByZXR1cm4gZmly
c3QgPD0gdHlwZSAmJiB0eXBlIDw9IGxhc3Q7IH0KKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QgeyBvdXQucHJpbnQoIkpTVHlwZVJhbmdlIHsgIiwgZmlyc3QsICIsICIsIGxh
c3QsICIgfSIpOyB9CiAKICAgICBKU1R5cGUgZmlyc3Q7CiAgICAgSlNUeXBlIGxhc3Q7CkBAIC03
MSw3ICs3Miw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAgICAgbWFjcm8oSlNTdHJpbmdJdGVy
YXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJh
dG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJzdE9iamVjdFR5cGUsIExhc3RPYmpl
Y3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwgSlNUeXBlOjpGaW5hbE9iamVjdFR5
cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCi0gICAgbWFjcm8oSlNGdW5jdGlvbiwgSlNU
eXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgXAorICAgIG1hY3Jv
KEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNCb3VuZEZ1bmN0
aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rpb24sIEpTVHlwZTo6SW50ZXJuYWxG
dW5jdGlvblR5cGUsIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3Jv
KE51bGxTZXR0ZXJGdW5jdGlvbiwgSlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLCBKU1R5
cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhKU0FycmF5LCBKU1R5cGU6
OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBlKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
NSwxMiArMjE1LDYgQEAgY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoVk0mIHZtKSBjbwog
ICAgIHJldHVybiBjbGFzc0luZm8odm0pLT5jbGFzc05hbWU7CiB9CiAKLWJvb2wgSlNDZWxsOjpj
dXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkKLXsK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc0N1
c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0OworICAg
IGJvb2wgaXNKU0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJik7CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJik7CiAgICAgdGVtcGxhdGU8Q29uY3VycmVuY3k+IFRy
aVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0mKTsKQEAgLTI1Myw3ICsyNTQsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQ
cm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpOwogICAg
IHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0NywxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
UHJveHkoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94eVR5
cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0VHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlNDZWxs
Ojppc0pTRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gSlNGdW5jdGlv
blR5cGUgfHwgbV90eXBlID09IEpTQm91bmRGdW5jdGlvblR5cGU7Cit9CisKIC8vIEZJWE1FOiBD
b25zaWRlciBtYWtpbmcgZ2V0Q2FsbERhdGEgY29uY3VycmVuY3ktc2FmZSBvbmNlIE5QQVBJIHN1
cHBvcnQgaXMgcmVtb3ZlZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4MDEKIHRlbXBsYXRlPENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5PgpAQCAtMjU0LDcg
KzI1OSw3IEBAIEFMV0FZU19JTkxJTkUgVHJpU3RhdGUgSlNDZWxsOjppc0NhbGxhYmwKIHsKICAg
ICBpZiAoIWlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7Ci0gICAg
aWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkg
JiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgewogICAgICAgICBpZiBjb25zdGV4cHIgKGNvbmN1cnJl
bmN5ID09IENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKQpAQCAtMjc3LDcgKzI4Miw3IEBAIGlubGlu
ZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXQKICAgICAgICAgcmV0dXJuIChtZXRo
b2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICAvLyBXZSBr
bm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3REYXRhIG9mIGJvdGggdHlwZXMgYXJlIGNvbmN1cnJl
bmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNsYXNzZXMgb2YgSlNGdW5jdGlvbiBhbmQgSW50ZXJu
YWxGdW5jdGlvbgogICAgIC8vIG5ldmVyIG92ZXJyaWRlIGdldENvbnN0cnVjdERhdGEgKHRoaXMg
aXMgZW5zdXJlZCBieSBBU1NFUlQgaW4gSlNGdW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlvbiku
Ci0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSB8fCB0eXBlKCkgPT0gSW50ZXJuYWxG
dW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNGdW5jdGlvbigpIHx8IHR5cGUoKSA9PSBJbnRlcm5h
bEZ1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0
cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6
VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNiBAQCBKU0Z1bmN0
aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlCiAgICAgOiBCYXNlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52
YXJpYW50cygpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2Jh
bE9iamVjdCk7CiB9CiAKQEAgLTExMiw3ICsxMTEsNiBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
QVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0aGlzKSk7Ci0gICAgQVNTRVJU
KHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CiAgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERhdGEs
Z2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4KICAg
ICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9u
OjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxs
RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAtMTIyLDcgKzEyMCw2IEBAIHZv
aWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCAKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICBB
U1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKICAgICAvLyBKU0NlbGw6OntnZXRDYWxs
RGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
LgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEgPT0gJkpTRnVu
Y3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdl
dENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk7CkBAIC05MDYsMTYgKzkwMyw0
IEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnIKICAgICByZXR1cm4g
UHJvcGVydHlTdGF0dXM6OlJlaWZpZWQ7CiB9CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotdm9pZCBK
U0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCkKLXsKLSAgICAvLyBJZiB5
b3UgY2hhbmdlIHRoaXMsIHlvdSdsbCBuZWVkIHRvIHVwZGF0ZSBzcGVjdWxhdGlvbkZyb21DbGFz
c0luZm9Jbmhlcml0YW5jZS4KLSAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8o
dm0oKSk7Ci0gICAgaWYgKCEoaW5saW5lVHlwZUZsYWdzKCkgJiBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mbyA9PSBKU0JvdW5kRnVuY3Rp
b246OmluZm8oKSk7Ci0gICAgZWxzZQotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvICE9IEpT
Qm91bmRGdW5jdGlvbjo6aW5mbygpKTsKLX0KLSNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDEyICsyMTIsNiBAQCBw
cml2YXRlOgogICAgIFByb3BlcnR5U3RhdHVzIHJlaWZ5TGF6eU5hbWVJZk5lZWRlZChWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxh
enlCb3VuZE5hbWVJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
IAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgdm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlh
bnRzKCk7Ci0jZWxzZQotICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpIHsg
fQotI2VuZGlmCi0KICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgdWludHB0cl90IG1fZXhlY3V0YWJsZU9yUmFyZURhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oVk0mIHZtLCBGdQogICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKICAg
ICAsIG1fZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0
YWJsZSkpCiB7Ci0gICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwogfQogCiBpbmxp
bmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODEsNiArNzgxLDggQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0pOwogCiAgICAgbV9mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VT
eW1ib2wpXS5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOworCiAgICAg
bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0Z1bmN0
aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpOwpAQCAt
OTMxLDEzICs5MzMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAg
ICAgfSk7CiAgICAgbV9wcm94eU9iamVjdFN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBib29s
IGlzQ2FsbGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGluaXQuc2V0KFByb3h5T2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNOdWxsKCksIGlzQ2FsbGFibGUp
KTsKLSAgICAgICAgfSk7Ci0gICAgbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLmluaXRM
YXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
LSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBpbml0LnNl
dChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVs
bCgpLCBpc0NhbGxhYmxlKSk7CisgICAgICAgICAgICBpbml0LnNldChQcm94eU9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpKSk7CiAgICAgICAgIH0p
OwogICAgIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewpAQCAtMTM1NSwxNSArMTM1MSw2IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFy
cmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5
cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSkpOwogICAgICAgICB9KTsKLSAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGlzQm91bmRGdW5jdGlvbikpOwotICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKLSAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbikpOwotICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbnN0YW5jZU9mKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Ci0gICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yp
KTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxvZyldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpKTsKICAgICAgICAgfSk7CkBAIC0y
MTg1LDcgKzIxNzIsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChK
CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
NSw3ICs0MjUsNiBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eU9iamVj
dFN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5UmV2b2tlU3RydWN0dXJlOwogICAgIExhenlDbGFz
c1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlOwogCkBAIC04NDcsNyArODQ2
LDYgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIHByb3h5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eU9iamVjdFN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBTdHJ1Y3R1cmUqIGNhbGxhYmxlUHJveHlPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0
dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9
CiAgICAgU3RydWN0dXJlKiBvcmlnaW5hbFJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENv
bnRpZ3VvdXMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEFuYWx5emVyLmgiCiAjaW5jbHVkZSAi
SW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgpAQCAtNjQsNiArNjgsNyBAQCBjb25zdCBBU0NJSUxp
dGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1
cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0eUVycm9yIHsgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
Il9zIH07CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVu
dW1lcmFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJp
YnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MgfTsKIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3JpdGFiaWxpdHlFcnJvciB7ICJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVy
dHkuIl9zIH07Citjb25zdCBBU0NJSUxpdGVyYWwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVj
dEVycm9yIHsgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQg
cHJvdG90eXBlIHByb3BlcnR5LiJfcyB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNPYmplY3Q6OnNf
aW5mbyA9IHsgIk9iamVjdCIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNPYmplY3QpIH07CiAKQEAgLTIzNDYsMTIgKzIzNTEsNDMgQEAgc3RkOjpvcHRp
b25hbDxTdHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudAogICAgIHJldHVybiBzdHJ1Y3R1cmUodm0p
LT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKIH0KIAorLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWEyNjIvI3NlYy1pbnN0YW5jZW9mb3BlcmF0b3IKK2Jvb2wgSlNPYmplY3Q6Omhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkgeworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEpTVmFsdWUg
aGFzSW5zdGFuY2VWYWx1ZSA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmhh
c0luc3RhbmNlU3ltYm9sKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgaWYgKGhhc0luc3RhbmNlVmFsdWUgPT0gZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOworCisg
ICAgcmV0dXJuIGhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFs
dWUpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNOb25DYWxsYWJsZUFQSU9iamVjdFRoYXRQ
ZXJmb3Jtc0RlZmF1bHRIYXNJbnN0YW5jZShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7Cisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+KHZtKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisjZW5kaWYKKyAgICByZXR1cm4gb2JqZWN0LT5pbmhlcml0czxKU0NhbGxiYWNrQ29uc3RydWN0
b3I+KHZtKTsKK30KKwogYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQog
eworICAgIEFTU0VSVChoYXNJbnN0YW5jZVZhbHVlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgaGFzSW5zdGFu
Y2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uKCkpIHsKKyAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgewogICAgICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgaGFzSW5z
dGFuY2VWYWx1ZSk7CiAgICAgICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lKSB7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5v
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwpAQCAtMjM2Niw2OCArMjQwMiw1NiBAQCBi
b29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjCiAgICAgICAgIHJldHVybiBy
ZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CiAgICAgfQogCi0gICAgVHlwZUluZm8gaW5m
byA9IHN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCk7Ci0gICAgaWYgKGluZm8uaW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gZ2V0KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90b3R5cGUp
KTsKLSAgICB9Ci0gICAgaWYgKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpIHsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIG1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSkpOwotICAgIH0KKyAgICBpZiAoaXNDYWxsYWJsZSh2bSkgfHwgaXNOb25DYWxs
YWJsZUFQSU9iamVjdFRoYXRQZXJmb3Jtc0RlZmF1bHRIYXNJbnN0YW5jZSh2bSwgdGhpcykpCisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKIAogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmplY3Q6
Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CisvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5aGFzaW5zdGFuY2UKK2Jv
b2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBo
YXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aGFz
SW5zdGFuY2VTeW1ib2wpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotfQorICAgIGlmICghaXNDYWxsYWJsZSh2bSkg
JiYgIWlzTm9uQ2FsbGFibGVBUElPYmplY3RUaGF0UGVyZm9ybXNEZWZhdWx0SGFzSW5zdGFuY2Uo
dm0sIHRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKGluaGVyaXRz
PEpTQm91bmRGdW5jdGlvbj4odm0pKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBKU1ZhbHVlIHByb3RvID0gZ2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CisKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImluc3RhbmNlb2YgY2Fs
bGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIEluc3RhbmNlb2ZQ
cm90b3R5cGVOb3RPYmplY3RFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgYXNPYmplY3QocHJvdG8pLT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVj
dCwgYXNPYmplY3QodmFsdWUpKSk7Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmlzUHJvdG90eXBlT2Yo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgSlNWYWx1ZSBvYmpl
Y3RWYWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghb2JqZWN0
VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgb2Jq
ZWN0ID0gYXNPYmplY3Qob2JqZWN0VmFsdWUpOwotICAgICAgICBpZiAocHJvdG8gPT0gb2JqZWN0
KQorICAgICAgICBpZiAob2JqZWN0ID09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dmFsdWUsIHByb3RvKSkpOwotfQotCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBEb250RW51bVByb3BlcnRpZXNNb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFNpZ25hdHVy
ZTsKIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewotICAg
IGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkpCisgICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmIHZhbHVlLmFzQ2VsbCgpLT5pc0pT
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQpAQCAtODIsNiArODIsNyBAQCBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29u
c3QgQVNDSUlMaXRlCiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcjsKIGV4dGVy
biBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9w
ZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJvcjsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5
RXJyb3I7CitleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIEluc3Rh
bmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJvcjsKIAogY2xhc3MgSlNGaW5hbE9iamVjdDsKIApA
QCAtNjc1LDcgKzY3Niw4IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0SGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNQcm90b3R5cGVP
ZihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heGltdW1Qcm90b3R5cGVDaGFpbkRlcHRoID0gNDAwMDA7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKQEAgLTEyNDAsOCArMTI0Miw2IEBA
IHByaXZhdGU6CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOwotCiBpbmxpbmUgSlNGaW5h
bE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlV2l0aEJ1dHRlcmZseShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKICAgICBKU0ZpbmFsT2Jq
ZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0MCw3ICs1NDAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3Bl
cnR5CiAKIEFMV0FZU19JTkxJTkUgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU0NlbGwq
IGNlbGwpCiB7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBp
ZiAoY2VsbC0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRD
YWxsRGF0YShjZWxsKTsKICAgICBDYWxsRGF0YSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2
bSktPmdldENhbGxEYXRhKGNlbGwpOwogICAgIEFTU0VSVChyZXN1bHQudHlwZSA9PSBDYWxsRGF0
YTo6VHlwZTo6Tm9uZSB8fCBjZWxsLT5pc1ZhbGlkQ2FsbGVlKCkpOwpAQCAtNTU5LDcgKzU1OSw3
IEBAIGlubGluZSBDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKFZNJiB2bSwKICAgICBpZiAoIXZh
bHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2VsbCogY2VsbCA9IHZh
bHVlLmFzQ2VsbCgpOwotICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisg
ICAgaWYgKGNlbGwtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6
Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKICAgICBDYWxsRGF0YSByZXN1bHQgPSBjZWxsLT5tZXRo
b2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2VsbCk7CiAgICAgQVNTRVJUKHJlc3VsdC50
eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lIHx8IGNlbGwtPmlzVmFsaWRDYWxsZWUoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHJldmlzaW9uIDI3
OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQwogICAgIENBU0UoRmluYWxPYmplY3RUeXBlKQogICAgIENBU0UoSlNDYWxsZWVU
eXBlKQogICAgIENBU0UoSlNGdW5jdGlvblR5cGUpCisgICAgQ0FTRShKU0JvdW5kRnVuY3Rpb25U
eXBlKQogICAgIENBU0UoSW50ZXJuYWxGdW5jdGlvblR5cGUpCiAgICAgQ0FTRShOdWxsU2V0dGVy
RnVuY3Rpb25UeXBlKQogICAgIENBU0UoQm9vbGVhbk9iamVjdFR5cGUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjc5OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkg
KzU5LDEwIEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgT2JqZWN0VHlwZSwKICAgICBG
aW5hbE9iamVjdFR5cGUsCiAgICAgSlNDYWxsZWVUeXBlLAotICAgIEpTRnVuY3Rpb25UeXBlLAog
ICAgIEludGVybmFsRnVuY3Rpb25UeXBlLAogICAgIE51bGxTZXR0ZXJGdW5jdGlvblR5cGUsCisg
ICAgSlNGdW5jdGlvblR5cGUsCisgICAgSlNCb3VuZEZ1bmN0aW9uVHlwZSwKICAgICBCb29sZWFu
T2JqZWN0VHlwZSwKICAgICBOdW1iZXJPYmplY3RUeXBlLAogICAgIEVycm9ySW5zdGFuY2VUeXBl
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2
aXNpb24gMjc5OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIC8vIElubGluZSBmbGFncy4KIAogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgotc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAxOwogc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRDYWxsRGF0YSA9IDEgPDwgMjsgLy8g
TmVlZCB0aGlzIGZsYWcgaWYgeW91IGltcGxlbWVudCBbW0NhbGxhYmxlXV0gaW50ZXJmYWNlLCB3
aGljaCBtZWFucyBvdmVycmlkaW5nIGdldENhbGxEYXRhLiBUaGUgb2JqZWN0IG1heSBub3QgYmUg
Y2FsbGFibGUgc2luY2UgZ2V0Q2FsbERhdGEgY2FuIHNheSBpdCBpcyBub3QgY2FsbGFibGUuCiBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEg
PDwgMzsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzVG9UaGlzID0gMSA8PCA0
OyAvLyBJZiB0aGlzIGlzIGZhbHNlIHRoZW4gdGhpcyByZXR1cm5zIHNvbWV0aGluZyBvdGhlciB0
aGFuICd0aGlzJy4gTm9uLW9iamVjdCBjZWxscyB0aGF0IGFyZSB2aXNpYmxlIHRvIEpTIGhhdmUg
dGhpcyBzZXQgYXMgZG8gc29tZSBleG90aWMgb2JqZWN0cy4KQEAgLTQ3LDcgKzQ2LDYgQEAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBUeXBlSW5mb1BlckNlbAogCiAvLyBPdXQgb2YgbGluZSBm
bGFncy4KIAotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
PSAxIDw8IDg7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3Bl
cnR5TmFtZXMgPSAxIDw8IDk7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dl
dE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzID0gMSA8PCAxMDsKIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCAxMTsKQEAgLTkwLDggKzg4LDYg
QEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZmxhZ3MoKSBjb25zdCB7IHJldHVybiAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZmxhZ3MyKSA8PCBudW1iZXJPZklubGluZUJpdHMpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZmxhZ3MpOyB9CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
PigpOyB9Ci0gICAgYm9vbCBpbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBp
c1NldE9uRmxhZ3MyPEltcGxlbWVudHNIYXNJbnN0YW5jZT4oKTsgfQotICAgIGJvb2wgaW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8SW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZT4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0Q2Fs
bERhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE92ZXJyaWRlc0dldENhbGxEYXRh
PigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSBjb25zdCB7IHJl
dHVybiBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoaW5saW5lVHlwZUZsYWdzKCkpOyB9CiAg
ICAgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZs
YWdzMTxIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlPigpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI3OTk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xh
c3MgTnVtYmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCiAgICAgc3RhdGljIE51bWJlckNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBl
KiBudW1iZXJQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNWYWx1ZU9m
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0hhc093
blByb3BlcnR5KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3Rv
RnVuY0lzUHJvdG90eXBlT2YpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOwpAQCAtNjMsNyArNjIsNyBA
QCB2b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZiwg
b2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDApOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eSwgb2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYyk7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
cHJvcGVydHlJc0VudW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5p
c1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b3R5cGVJc1Byb3RvdHlwZU9mQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pl9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fZGVm
aW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fbG9va3VwR2V0
dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwpAQCAtMTI3LDMzICsxMjYsNiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0K
LSAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLQotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09ICF0aGlzT2JqKTsKLSAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQotICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLQotICAgIEpTVmFsdWUgdiA9IGFzT2JqZWN0KGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBpZiAoIXYuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIGlmICh2ID09IHRo
aXNPYmopCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVl
KSk7Ci0gICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICB9Ci19Ci0KIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNE
ZWZpbmVHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjc5OTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw2ICs3NywzNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wganNUeXBlb2ZJc0Z1
bmN0aW9uKEpTCiAgICAgcmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAorQUxX
QVlTX0lOTElORSBib29sIGpzSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgSlNPYmplY3QqIHZhbHVlKQoreworICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBJbnN0YW5jZW9mUHJvdG90eXBlTm90T2Jq
ZWN0RXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBhc09iamVjdChwcm90b3R5cGUpLT5pc1Byb3RvdHlwZU9mKGdsb2Jh
bE9iamVjdCwgdmFsdWUpKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGpzSW5zdGFuY2VvZk9w
ZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgY29uc3RydWN0b3IsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGlmICghY29uc3RydWN0b3IuaXNPYmplY3QoKSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmlnaHQgaGFuZCBzaWRlIG9mIGlu
c3RhbmNlb2YgaXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhhc0luc3RhbmNlVmFsdWUK
KyAgICAgICAgPyBhc09iamVjdChjb25zdHJ1Y3RvciktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVj
dCwgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpCisgICAgICAgIDogYXNPYmplY3QoY29uc3RydWN0
b3IpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKK30KKwogQUxXQVlTX0lOTElO
RSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U3RyaW5nJiB1MSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCw2IEBAIFByb3h5
T2JqZWN0OjpQcm94eU9iamVjdChWTSYgdm0sIFN0cnVjdHUKIHsKIH0KIAotU3RydWN0dXJlKiBQ
cm94eU9iamVjdDo6c3RydWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGFyZ2V0KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
LSAgICByZXR1cm4gdGFyZ2V0LmlzQ2FsbGFibGUodm0pID8gZ2xvYmFsT2JqZWN0LT5jYWxsYWJs
ZVByb3h5T2JqZWN0U3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3RydWN0
dXJlKCk7Ci19Ci0KIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxl
cikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MSwx
MSArNjUsNiBAQCB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sCiAgICAg
SlNPYmplY3QqIHRhcmdldEFzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KTsKIAog
ICAgIG1faXNDYWxsYWJsZSA9IHRhcmdldEFzT2JqZWN0LT5pc0NhbGxhYmxlKHZtKTsKLSAgICBp
ZiAobV9pc0NhbGxhYmxlKSB7Ci0gICAgICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0p
LT50eXBlSW5mbygpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLmltcGxlbWVudHNIYXNJ
bnN0YW5jZSgpICYmIGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLSAgICB9
Ci0KICAgICBtX2lzQ29uc3RydWN0aWJsZSA9IHRhcmdldEFzT2JqZWN0LT5pc0NvbnN0cnVjdG9y
KHZtKTsKIAogICAgIG1fdGFyZ2V0LnNldCh2bSwgdGhpcywgdGFyZ2V0QXNPYmplY3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShyZXZpc2lv
biAyNzk5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxOCArNDUsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
cm94eU9iamVjdCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShn
bG9iYWxPYmplY3QpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFByb3h5T2JqZWN0
OjpzdHJ1Y3R1cmVGb3JUYXJnZXQoZ2xvYmFsT2JqZWN0LCB0YXJnZXQpOworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKTsK
ICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UHJveHlPYmplY3Q+KHZtLmhlYXApKSBQcm94eU9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICAgcHJveHktPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgaGFuZGxl
cik7CiAgICAgICAgIHJldHVybiBwcm94eTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBpc0NhbGxhYmxlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSBTdHJ1Y3R1
cmVGbGFnczsKLSAgICAgICAgaWYgKGlzQ2FsbGFibGUpCi0gICAgICAgICAgICBmbGFncyB8PSAo
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSk7Ci0g
ICAgICAgIFN0cnVjdHVyZSogcmVzdWx0ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhQcm94eU9iamVjdFR5cGUsIGZsYWdzKSwgaW5mbygp
LCBOb25BcnJheSB8IE1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgU3RydWN0dXJl
KiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFy
cmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
cmVzdWx0LT5jYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkpOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0LT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0
b3Iodm0pKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc3LDcgKzc0LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBQcm94eU9iamVjdChWTSYsIFN0cnVj
dHVyZSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHN0cnVjdHVyZUZvclRhcmdldChKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgdGFyZ2V0KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQs
NyArNTM0LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZAogICAg
ICAgICAgICAgICAgIG1fbGl2ZUNlbGxQb2ludGVycy5hZGQoY2FsbGVlKTsKICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIGlmIChjYWxsZWVDZWxsLT50eXBlKCkgIT0gSlNGdW5jdGlvblR5
cGUpIHsKKyAgICAgICAgICAgIGlmICghY2FsbGVlQ2VsbC0+aXNKU0Z1bmN0aW9uKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPihjYWxsZWVDZWxsLT52bSgpLCBjYWxsZWVDZWxsKSkKICAgICAgICAgICAgICAgICAgICAg
YWRkQ2FsbGVlKG9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTk1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDIxLTA3LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNlb2YKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgxNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJh
c2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKwogMjAyMS0wNy0xNSAgVGltIE5ndXllbiAgPG50aW1A
YXBwbGUuY29tPgogCiAgICAgICAgIDxkaWFsb2c+IGVsZW1lbnQ6IGRvIG5vdCBwZXJmb3JtIGNs
b3NlKCkgbWV0aG9kIHN0ZXBzIHdoZW4gcmVtb3Zpbmcgb3BlbiBhdHRyaWJ1dGUuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmgJ
KHJldmlzaW9uIDI3OTk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgSlNE
T01Db25zdHJ1Y3RvckJhc2UgOiBwdWJsaWMgSlNETwogcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBKU0RPTU9iamVjdDsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwgSlNDOjpPdmVycmlkZXNHZXRD
YWxsRGF0YTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc5OTU1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTI5MTQsNyArMjkxNCw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICRz
dHJ1Y3R1cmVGbGFnc3siSlNDOjpOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMifSA9
IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmV3SW1wdXJlUHJvcGVydHlG
aXJlc1dhdGNocG9pbnRzfTsKICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6SXNJbW11dGFibGVQ
cm90b3R5cGVFeG90aWNPYmplY3QifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3R9OwogICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0gPSAxIGlmICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e01hc3F1ZXJhZGVzQXNVbmRlZmluZWR9OwotICAgICRzdHJ1Y3R1
cmVGbGFnc3siSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6OkltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UifSA9IDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyI7CiAg
ICAgICAgIAogICAgICMgUHJvdG90eXBlCiAgICAgdW5sZXNzIChTaG91bGRVc2VHbG9iYWxPYmpl
Y3RQcm90b3R5cGUoJGludGVyZmFjZSkgfHwgJGludGVyZmFjZS0+aXNOYW1lc3BhY2VPYmplY3Qp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyNzk5NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01XaW5k
b3cmPihCYXNlOjp3cmFwcGVkKCkpOwogICAgIH0KIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpT
Qzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CiBwcm90ZWN0ZWQ6CiAgICAgSlNET01XaW5kb3coSlNDOjpWTSYs
IEpTQzo6U3RydWN0dXJlKiwgUmVmPERPTVdpbmRvdz4mJiwgSlNXaW5kb3dQcm94eSopOwogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTsKSW5kZXg6IExh
eW91dFRlc3RzL2pzL2RvbS9vYmplY3QtcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9vYmplY3QtcHJvdG90eXBlLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzk5NTUpCisrKyBMYXlvdXRUZXN0cy9qcy9k
b20vb2JqZWN0LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOSw3ICs5LDcgQEAgUEFTUyBPYmplY3QucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNh
bAogUEFTUyBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdPYmplY3QucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1bmRlZmluZWQsICdoYXNPd25Qcm9wZXJ0
eScpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodW5kZWZp
bmVkLCAnaGFzT3duUHJvcGVydHknKScpLgogUEFTUyBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5
SXNFbnVtZXJhYmxlLmNhbGwodW5kZWZpbmVkLCAncHJvcGVydHlJc0VudW1lcmFibGUnKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHVuZGVmaW5l
ZCwgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyknKS4KLVBBU1MgT2JqZWN0LnByb3RvdHlwZS5pc1By
b3RvdHlwZU9mLmNhbGwodW5kZWZpbmVkLCB0aGlzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mLmNhbGwodW5kZWZpbmVkLCB0aGlzKScpLgorUEFTUyBPYmplY3QucHJv
dG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0LgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433737</attachid>
            <date>2021-07-17 19:26:00 -0700</date>
            <delta_ts>2021-07-22 18:30:32 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210718052558.patch</filename>
            <type>text/plain</type>
            <size>176016</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAwMTgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTE3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gU2ltcGxpZnkgc2FtcGxpbmctcHJvZmlsZXItcmVnZXhwLmpzIHRlc3QKSW5kZXg6IEpTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5hbC1mdW5j
dGlvbi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5j
ZW9mLWludGVybmFsLWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmbigpIHt9CisgICAgdmFyIGFyciA9IFtdOwor
ICAgIHZhciByZSA9IC8oPzopLzsKKyAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlOworICAgIHZhciBt
YXAgPSBuZXcgTWFwOworICAgIHZhciBzZXQgPSBuZXcgU2V0OworCisgICAgdmFyIGFjYyA9IDA7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhY2MgKz0gZm4g
aW5zdGFuY2VvZiBGdW5jdGlvbgorICAgICAgICAgICAgJiYgYXJyIGluc3RhbmNlb2YgQXJyYXkK
KyAgICAgICAgICAgICYmIHJlIGluc3RhbmNlb2YgUmVnRXhwCisgICAgICAgICAgICAmJiBkYXRl
IGluc3RhbmNlb2YgRGF0ZQorICAgICAgICAgICAgJiYgbWFwIGluc3RhbmNlb2YgTWFwCisgICAg
ICAgICAgICAmJiBzZXQgaW5zdGFuY2VvZiBTZXQ7CisgICAgfQorICAgIGlmIChhY2MgIT09IGkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZl
LWNlbGwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFu
Y2VvZi1wcmltaXRpdmUtY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7
fQorCisgICAgdmFyIG51bWJlciA9IDQuNTsKKyAgICB2YXIgc3RyaW5nID0gInN0ciI7CisgICAg
dmFyIHN5bWJvbCA9IFN5bWJvbCgpOworICAgIHZhciBiaWdpbnQgPSAxMG47CisKKyAgICB2YXIg
YWNjID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFj
YyArPSBudW1iZXIgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IHN0cmluZyBpbnN0YW5j
ZW9mIEJhcgorICAgICAgICAgICAgfHwgc3ltYm9sIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAg
ICB8fCBiaWdpbnQgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24t
Y2VsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5j
ZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBA
CisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIo
KSB7fQorCisgICAgdmFyIGFjYyA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsr
aSkgeworICAgICAgICBhY2MgKz0gdW5kZWZpbmVkIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAg
ICB8fCBudWxsIGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCB0cnVlIGluc3RhbmNlb2Yg
Rm9vCisgICAgICAgICAgICB8fCBpIGluc3RhbmNlb2YgQmFyOworICAgIH0KKyAgICBpZiAoYWNj
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRl
eDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcm94eS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5LmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJveHkuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9u
IFRhcmdldCgpIHt9CisgICAgdmFyIHZhbHVlID0gbmV3IFRhcmdldCgpOworICAgIHZhciBwcm94
eSA9IG5ldyBQcm94eShUYXJnZXQsIFJlZmxlY3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTU7IGkrKykgeworICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIHByb3h5KSkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgp
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5
cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorKGZ1bmN0aW9uKCkgeworICAg
IHZhciBpc0FycmF5ID0gJHZtLmNyZWF0ZUJ1aWx0aW4oIihmdW5jdGlvbiAoYykgeyByZXR1cm4g
QGlzQXJyYXkoYyk7IH0pIik7CisgICAgbm9JbmxpbmUoaXNBcnJheSk7CisKKyAgICB2YXIgc3lt
ID0gU3ltYm9sKCk7CisgICAgdmFyIGFyciA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyBpKyspIHsKKyAgICAgICAgaWYgKHR5cGVvZiAiZm9vIiAhPT0gInN0cmluZyIgfHwgdHlw
ZW9mIGkgPT09ICJzdHJpbmciIHx8CisgICAgICAgICAgICB0eXBlb2Ygc3ltICE9PSAic3ltYm9s
IiB8fCB0eXBlb2YgYXJyID09PSAic3ltYm9sIiB8fAorICAgICAgICAgICAgIWlzQXJyYXkoYXJy
KSB8fCBpc0FycmF5KHN5bSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3Nl
cnRpb24hIik7CisgICAgfQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJ
KHJldmlzaW9uIDI4MDAxOCkKKysrIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAko
d29ya2luZyBjb3B5KQpAQCAtMTU5OSw5ICsxNTk5LDYgQEAgdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9nZW5lcmF0b3JzL3NjbwogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFN5bnRheEVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQg
YWxsJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9nZW5lcmF0b3JzL3Njb3BlLXBhcmFtLXJl
c3QtZWxlbS12YXItb3Blbi5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrb3V0c2lkZcK7LCDCq2luc2lkZcK7KSB0byBiZSB0cnVlJwotdGVzdC9sYW5n
dWFnZS9leHByZXNzaW9ucy9pbnN0YW5jZW9mL3Byb3RvdHlwZS1nZXR0ZXItd2l0aC1wcmltaXRp
dmUuanM6Ci0gIGRlZmF1bHQ6ICJUZXN0MjYyRXJyb3I6IGdldHRlciBmb3IgJ3Byb3RvdHlwZScg
Y2FsbGVkIgotICBzdHJpY3QgbW9kZTogIlRlc3QyNjJFcnJvcjogZ2V0dGVyIGZvciAncHJvdG90
eXBlJyBjYWxsZWQiCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNzaWdubWVu
dC9sZ2NsLWFuZC1hc3NpZ25tZW50LW9wZXJhdG9yLW5vbi1zaW1wbGUtbGhzLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MjogVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBiZSBldmFsdWF0ZWQuJwog
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9sb2dpY2FsLWFzc2lnbm1lbnQvbGdjbC1udWxsaXNo
LWFzc2lnbm1lbnQtb3BlcmF0b3Itbm9uLXNpbXBsZS1saHMuanM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMDggQEAKKzIwMjEtMDctMTcgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEFuIGlzc3Vl
IGFib3V0IGV2YWx1YXRpbmcgaW5zdGFuY2VvZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmluaXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhh
c0luc3RhbmNlKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAgIChKU1Zh
bHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAu
bW06CisgICAgICAgIChjb25zdHJ1Y3Rvckhhc0luc3RhbmNlKToKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKG92
ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBlYXJlZF9oZXJlLnN5bWJvbEhhc0luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBidWlsdGlucy9PYmplY3RQcm90b3R5cGUuanM6IEFkZGVkLgorICAg
ICAgICAoaXNQcm90b3R5cGVPZik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnZpc2l0V2Vhayk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaDoKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmRlc3BlY2lmaWVk
Q2xvc3VyZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuY3BwOgorICAgICAg
ICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9FeGl0S2luZC5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OnNw
ZWN1bGF0aW9uRnJvbUNsYXNzSW5mb0luaGVyaXRhbmNlKToKKyAgICAgICAgKEpTQzo6c3BlY3Vs
YXRpb25Gcm9tSlNUeXBlUmFuZ2UpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5
cGUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJpbmcpOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25TcGVjdWxh
dGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RMaW5rVGltZUNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1w
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE92ZXJyaWRlc0hhc0luc3Rh
bmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRm
Zy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAg
ICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RG
R0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6
cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cXVlcmllZFR5cGUp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpPcEluZm9XcmFwcGVyOjphc0pTVHlwZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNUeXBlSW5mb09wZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnR5cGVJbmZvT3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkN1c3RvbSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0
YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mRm9yQ2VsbHMpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9k
ZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6Y2hlY2tGb3JiaWRkZW5Qcm90b3R5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjppc0NlbGxXaXRoVHlwZSk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5zdGFu
Y2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0
aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsSW5zdGFu
Y2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OnVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmN1c3RvbUhh
c0luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2Fz
dC5oOgorICAgICAgICAoSlNDOjpKU1R5cGVSYW5nZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmN1c3RvbUhhc0luc3Rh
bmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ2FsbGFibGVX
aXRoQ29uY3VycmVuY3kpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXRo
Q29uY3VycmVuY3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzc2VydFR5cGVJ
bmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlh
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6cHJveHlPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpt
YXJrQXV4aWxpYXJ5QW5kVmlzaXRPdXRPZkxpbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRI
YXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1Byb3RvdHlwZU9mKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBjb25zdCk6CisgICAgICAg
IChKU0M6OlR5cGVJbmZvOjppc0pTRnVuY3Rpb25UeXBlKToKKyAgICAgICAgKEpTQzo6VHlwZUlu
Zm86OmltcGxlbWVudHNIYXNJbnN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlR5cGVJbmZvOjppbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KEpTQzo6anNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6anNJbnN0YW5jZW9mT3BlcmF0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
c3RydWN0dXJlRm9yVGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyk6CisK
IDIwMjEtMDctMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBFeHRlbmRUeXBlIHRvIEFpcjo6QXJnIEluZGV4IHRvIGZ1bGx5IHV0aWxpemUgYWRk
cmVzcyBjb21wdXRhdGlvbiBpbiBtZW1vcnkgaW5zdHJ1Y3Rpb24gZm9yIEFSTTY0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzMzcs
NiArMTMzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcworICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCAkKFBS
T0pFQ1RfRElSKS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0
aW5zL01vZHVsZUxvYWRlci5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTnVtYmVyQ29uc3Ry
dWN0b3IuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCisk
KFBST0pFQ1RfRElSKS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIp
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMv
UHJvbWlzZU9wZXJhdGlvbnMuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIEphdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9OdW1iZXJDb25z
dHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvT2JqZWN0Q29uc3Ry
dWN0b3IuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL09iamVjdFByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5q
cyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcyBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
MCw4ICsxMzAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogY2xhc3MgSlNDYWxsYmFja09i
amVjdCBmaW5hbCA6IHB1YmxpYyBQYXJlbnQgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBQ
YXJlbnQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YSB8IE92
ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBQcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcgfCBHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51bTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KCEoU3RydWN0dXJlRmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSwgInVzaW5nIGN1c3RvbUhhc0luc3RhbmNlIik7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFt
ZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YSB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBQcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmcgfCBHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51
bTsKIAogICAgIH5KU0NhbGxiYWNrT2JqZWN0KCk7CiAKQEAgLTIwMCw2ICsxOTksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJiwgU3Vic3BhY2VBY2Nlc3MpOworICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgY3VzdG9tSGFzSW5zdGFuY2Uo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIGN1c3RvbVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBA
IC0yMTEsOCArMjExLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotCiAgICAgc3RhdGlj
IHZvaWQgZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAKICAgICBz
dGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDE2ICsxMTQsMjQgQEAg
dm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbAogICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgCisgICAg
Ym9vbCBoYXNDdXN0b21IYXNJbnN0YW5jZSA9IGZhbHNlOwogICAgIGJvb2wgaGFzQ29udmVydFRv
VHlwZSA9IGZhbHNlOwogICAgIFZlY3RvcjxKU09iamVjdEluaXRpYWxpemVDYWxsYmFjaywgMTY+
IGluaXRSb3V0aW5lczsKICAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOwogICAg
IGRvIHsKKyAgICAgICAgaWYgKGpzQ2xhc3MtPmhhc0luc3RhbmNlKQorICAgICAgICAgICAgaGFz
Q3VzdG9tSGFzSW5zdGFuY2UgPSB0cnVlOwogICAgICAgICBpZiAoanNDbGFzcy0+Y29udmVydFRv
VHlwZSkKICAgICAgICAgICAgIGhhc0NvbnZlcnRUb1R5cGUgPSB0cnVlOwogICAgICAgICBpZiAo
SlNPYmplY3RJbml0aWFsaXplQ2FsbGJhY2sgaW5pdGlhbGl6ZSA9IGpzQ2xhc3MtPmluaXRpYWxp
emUpCiAgICAgICAgICAgICBpbml0Um91dGluZXMuYXBwZW5kKGluaXRpYWxpemUpOwogICAgIH0g
d2hpbGUgKChqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpKTsKIAorICAgIGlmIChoYXND
dXN0b21IYXNJbnN0YW5jZSkgeworICAgICAgICB0aGlzLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sLAorICAgICAgICAgICAgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLmhhc0luc3RhbmNlXSJfcywgY3VzdG9t
SGFzSW5zdGFuY2UpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIH0KICAgICBpZiAoaGFzQ29udmVydFRvVHlwZSkg
ewogICAgICAgICB0aGlzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvUHJpbWl0
aXZlU3ltYm9sLAogICAgICAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgY3VzdG9tVG9QcmltaXRpdmUpLApAQCAt
NTAxLDE0ICs1MDksMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmN1c3RvbUhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4ob2JqZWN0KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghdGhpc09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkpTQ2FsbGJhY2tPYmplY3RbU3ltYm9sLmhhc0luc3RhbmNlXSBtZXRo
b2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSB8dGhpc3wgdmFsdWUuIl9zKTsKKwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiB0
aGlzUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4odGhpc09iamVjdCkpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIAogICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdEhhc0luc3RhbmNl
Q2FsbGJhY2sgaGFzSW5zdGFuY2UgPSBqc0NsYXNzLT5oYXNJbnN0YW5jZSkgewpAQCAtNTIwLDEx
ICs1MzIsMTEgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhhcwogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGhhc0luc3RhbmNlKGV4ZWNSZWYsIHRoaXNSZWYsIHZhbHVl
UmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
dG9KUyhnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfQotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxz
ZSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsOCAr
Mjg4LDYgQEAgYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoSlNDbwogICAgIEpT
VmFsdWUganNWYWx1ZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAKICAgICBKU09iamVj
dCoganNDb25zdHJ1Y3RvciA9IHRvSlMoY29uc3RydWN0b3IpOwotICAgIGlmICghanNDb25zdHJ1
Y3Rvci0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgcmVzdWx0ID0ganNDb25zdHJ1Y3Rvci0+
aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBqc1ZhbHVlKTsgLy8gZmFsc2UgaWYgYW4gZXhjZXB0
aW9uIGlzIHRocm93bgogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4
LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDE3ICsxMDksNiBAQCBkb25lOgogICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YnVmZmVyLmRhdGEoKV07CiB9CiAK
LXN0YXRpYyBib29sIGNvbnN0cnVjdG9ySGFzSW5zdGFuY2UoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgY29uc3RydWN0b3JSZWYsIEpTVmFsdWVSZWYgcG9zc2libGVJbnN0YW5jZSwgSlNW
YWx1ZVJlZiopCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9K
UyhjdHgpOwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0KLSAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ciA9IHRvSlMoY29uc3RydWN0b3JSZWYpOwotICAgIEpTQzo6SlNWYWx1ZSBpbnN0YW5jZSA9IHRv
SlMoZ2xvYmFsT2JqZWN0LCBwb3NzaWJsZUluc3RhbmNlKTsKLSAgICByZXR1cm4gSlNDOjpKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UsIGNvbnN0cnVj
dG9yLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKLX0K
LQogc3RhdGljIEpTQzo6SlNPYmplY3QqIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGFzcywgaWQgd3JhcHBlZE9iamVjdCkKIHsKICAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CkBAIC0xNDksMTggKzEzOCw2IEBAIHN0
YXRpYyBKU0M6OkpTT2JqZWN0ICpvYmplY3RXaXRoQ3VzdG9tQnIKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgSlNDOjpKU09iamVjdCAqY29uc3RydWN0b3JXaXRoQ3VzdG9tQnJhbmQo
SlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqYnJhbmQsIENsYXNzIGNscykKLXsKLSAgICBK
U0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uOwotICAgIGRlZmluaXRpb24gPSBrSlNDbGFzc0Rl
ZmluaXRpb25FbXB0eTsKLSAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9IFticmFuZCBVVEY4U3Ry
aW5nXTsKLSAgICBkZWZpbml0aW9uLmhhc0luc3RhbmNlID0gY29uc3RydWN0b3JIYXNJbnN0YW5j
ZTsKLSAgICBKU0NsYXNzUmVmIGNsYXNzUmVmID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7
Ci0gICAgSlNDOjpKU09iamVjdCogcmVzdWx0ID0gbWFrZVdyYXBwZXIoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIGNscyk7Ci0gICAgSlNDbGFzc1JlbGVhc2UoY2xhc3NS
ZWYpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIC8vIExvb2sgZm9yIEBvcHRpb25hbCBwcm9w
ZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY29udGFpbmluZyBhIHNlbGVjdG9yIHRvIHByb3BlcnR5
CiAvLyBuYW1lIG1hcHBpbmcsIHNlcGFyYXRlZCBieSBhIF9fSlNfRVhQT1JUX0FTX18gZGVsaW1p
dGVyLgogc3RhdGljIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVSZW5hbWVN
YXAoUHJvdG9jb2wgKnByb3RvY29sLCBCT09MIGlzSW5zdGFuY2VNZXRob2QpCkBAIC00MzIsNyAr
NDA5LDcgQEAgLSAodm9pZClkZWFsbG9jCiBzdGF0aWMgSlNDOjpKU09iamVjdCogYWxsb2NhdGVD
b25zdHJ1Y3RvckZvckN1c3RvbUNsYXNzKEpTQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciog
Y2xhc3NOYW1lLCBDbGFzcyBjbHMpCiB7CiAgICAgaWYgKCFzdXBwb3J0c0luaXRNZXRob2RDb25z
dHJ1Y3RvcnMoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yV2l0aEN1c3RvbUJyYW5kKGNv
bnRleHQsIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXNDb25zdHJ1Y3RvciIsIGNsYXNz
TmFtZV0sIGNscyk7CisgICAgICAgIHJldHVybiBvYmplY3RXaXRoQ3VzdG9tQnJhbmQoY29udGV4
dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1l
XSwgY2xzKTsKIAogICAgIC8vIEZvciBlYWNoIHByb3RvY29sIHRoYXQgdGhlIGNsYXNzIGltcGxl
bWVudHMsIGdhdGhlciBhbGwgb2YgdGhlIGluaXQgZmFtaWx5IG1ldGhvZHMgaW50byBhIGhhc2gg
dGFibGUuCiAgICAgX19ibG9jayBIYXNoTWFwPFN0cmluZywgQ0ZUeXBlUmVmPiBpbml0VGFibGU7
CkBAIC00NzgsNyArNDU1LDcgQEAgICAgICAgICAgICAgICAgIGluaXRUYWJsZS5zZXQobmFtZSwg
KF9fYgogICAgICAgICBKU09iamVjdFJlZiBtZXRob2QgPSBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZv
ckluaXQoY29udGV4dCwgY2xzLCBpbml0UHJvdG9jb2wsIGluaXRNZXRob2QsIHR5cGVzKTsKICAg
ICAgICAgcmV0dXJuIHRvSlMobWV0aG9kKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnN0cnVjdG9y
V2l0aEN1c3RvbUJyYW5kKGNvbnRleHQsIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXND
b25zdHJ1Y3RvciIsIGNsYXNzTmFtZV0sIGNscyk7CisgICAgcmV0dXJuIG9iamVjdFdpdGhDdXN0
b21CcmFuZChjb250ZXh0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzQ29uc3RydWN0
b3IiLCBjbGFzc05hbWVdLCBjbHMpOwogfQogCiB0eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU09iamVjdCo+IENvbnN0cnVjdG9yUHJvdG90eXBlUGFpcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDE5Miw2ICs0MTkyLDcgQEAKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFE
RkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8q
IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NEYxNTNGRTI2OUEwODcyMDAwQjlDREUgLyogT2JqZWN0UHJvdG90eXBlLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gT2JqZWN0UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUwMEYz
QTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5ODksNiArODk5MCw3IEBACiAJCQkJ
RTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlci5qcyAqLywKIAkJCQlBNTI3
MDQ4NjFEMDI3Qzg4MDAzNTRDMzcgLyogTnVtYmVyQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NG
OUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAorCQkJCTg0
RjE1M0ZFMjY5QTA4NzIwMDBCOUNERSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NG
OUJDNUUxQjY1RDlCMTAwOURCMUVGIC8qIFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3
Q0Y5QkM1RDFCNjVEOUIxMDA5REIxRUYgLyogUHJvbWlzZU9wZXJhdGlvbnMuanMgKi8sCiAJCQkJ
N0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2VQcm90b3R5cGUuanMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZp
c2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBtYWNybyhpc1NoYXJlZFR5cGVkQXJyYXlWaWV3KSBcCiAgICAgbWFjcm8oaXNEZXRhY2hl
ZCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvcikgXAotICAgIG1hY3Jv
KGlzQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikg
XAotICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKKyAgICBtYWNybyhmdW5jdGlvblByb3RvdHlwZUhh
c0luc3RhbmNlU3ltYm9sKSBcCiAgICAgbWFjcm8oaXNBcnJheVNsb3cpIFwKICAgICBtYWNybyhz
YW1lVmFsdWUpIFwKICAgICBtYWNybyhjb25jYXRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMJKHJldmlz
aW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIsMjEgKzQyLDYgQEAgZnVuY3Rpb24gYXBw
bHkodGhpc1ZhbHVlLCBhcmd1bWVudFZhbHVlcwogICAgIHJldHVybiB0aGlzLkBhcHBseSh0aGlz
VmFsdWUsIGFyZ3VtZW50VmFsdWVzKTsKIH0KIAotQG92ZXJyaWRkZW5OYW1lPSJbU3ltYm9sLmhh
c0luc3RhbmNlXSIKLWZ1bmN0aW9uIHN5bWJvbEhhc0luc3RhbmNlKHZhbHVlKQotewotICAgICJ1
c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChAaXNCb3VuZEZ1bmN0aW9uKHRoaXMpKQotICAgICAgICByZXR1
cm4gQGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbih0aGlzLCB2YWx1ZSk7Ci0KLSAgICB2YXIgdGFy
Z2V0ID0gdGhpcy5wcm90b3R5cGU7Ci0gICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJn
ZXQpOwotfQotCiBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKIHsKICAgICAidXNlIHN0cmljdCI7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RQcm90
b3R5cGUuanMJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L09iamVjdFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFsZXhleSBTaHZheWthIDxzaHZhaWthbGVzaEBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBpc1Byb3RvdHlwZU9mKHZhbHVlKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmICghQGlzT2JqZWN0KHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCBAdG9PYmplY3QodGhpcykp
OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFu
dCA6IGludDMyX3Q7CiAgICAgbWFjcm8oaXNNYXBJdGVyYXRvcikgXAogICAgIG1hY3JvKGlzU2V0
SXRlcmF0b3IpIFwKICAgICBtYWNybyhpc1VuZGVmaW5lZE9yTnVsbCkgXAorICAgIG1hY3JvKGlu
c3RhbmNlT2YpIFwKICAgICBtYWNybyh0YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBt
YWNybyh0aHJvd1R5cGVFcnJvcikgXAogICAgIG1hY3JvKHRocm93UmFuZ2VFcnJvcikgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShy
ZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiw2IEBAIG9wIDppZGVudGl0
eV93aXRoX3Byb2ZpbGUsCiAgICAgICAgIGJvdHRvbVByb2ZpbGU6IHVuc2lnbmVkLAogICAgIH0K
IAotb3AgOm92ZXJyaWRlc19oYXNfaW5zdGFuY2UsCi0gICAgYXJnczogewotICAgICAgICBkc3Q6
IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY29uc3RydWN0b3I6IFZpcnR1YWxSZWdpc3RlciwK
LSAgICAgICAgaGFzSW5zdGFuY2VWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgIH0KLQogb3Ag
Omluc3RhbmNlb2YsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
QEAgLTQzNCw3ICs0MjcsOCBAQCBvcCA6aXNfY2VsbF93aXRoX3R5cGUsCiAgICAgYXJnczogewog
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICB0eXBlOiBKU1R5cGUsCisgICAgICAgIGZpcnN0VHlwZTogSlNUeXBl
LAorICAgICAgICBsYXN0VHlwZTogSlNUeXBlLAogICAgIH0KIAogb3AgOmluX2J5X3ZhbCwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAgICBVU0VTKE9wSW5CeVZh
bCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9w
ZXJ0eSkKICAgICBVU0VTKE9wSGFzUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKLSAgICBVU0VT
KE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQog
ICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQogICAgIFVTRVMoT3BBZGQs
IGxocywgcmhzKQogICAgIFVTRVMoT3BNdWwsIGxocywgcmhzKQpAQCAtNDkwLDcgKzQ4OSw2IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnMKICAgICBERUZTKE9wR2V0
QnlJZFdpdGhUaGlzLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFsV2l0aFRoaXMsIGRzdCkKICAg
ICBERUZTKE9wR2V0UHJvdG90eXBlT2YsIGRzdCkKLSAgICBERUZTKE9wT3ZlcnJpZGVzSGFzSW5z
dGFuY2UsIGRzdCkKICAgICBERUZTKE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0
YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNp
b24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIENhbGxMaW5rSW5m
bzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihtX2NhbGxlZU9yQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGVl
LT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGVl
LT5pc0pTRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2FsbCB0byAiLApAQCAtMjg0
LDcgKzI4NCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAg
ICB9CiAgICAgfQogICAgIGlmICghaXNEaXJlY3QoKSAmJiBoYXZlTGFzdFNlZW5DYWxsZWUoKSAm
JiAhdm0uaGVhcC5pc01hcmtlZChsYXN0U2VlbkNhbGxlZSgpKSkgewotICAgICAgICBpZiAobGFz
dFNlZW5DYWxsZWUoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobGFz
dFNlZW5DYWxsZWUoKS0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZp
Y0NhbGxlZShqc0Nhc3Q8SlNGdW5jdGlvbio+KGxhc3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjgwMDE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgdmFyaWFudCBy
ZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxl
LgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBl
KQorICAgICAgICBpZiAobV9jYWxsZWUtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxl
KCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw4ICs1MCw2IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kK
ICAgICAgICAgcmV0dXJuICJCYWRDb25zdGFudENhY2hlIjsKICAgICBjYXNlIEJhZEluZGV4aW5n
VHlwZToKICAgICAgICAgcmV0dXJuICJCYWRJbmRleGluZ1R5cGUiOwotICAgIGNhc2UgQmFkVHlw
ZUluZm9GbGFnczoKLSAgICAgICAgcmV0dXJuICJCYWRUeXBlSW5mb0ZsYWdzIjsKICAgICBjYXNl
IE92ZXJmbG93OgogICAgICAgICByZXR1cm4gIk92ZXJmbG93IjsKICAgICBjYXNlIE5lZ2F0aXZl
WmVybzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShy
ZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBlbnVtIEV4aXRLaW5kIDogdWlu
dDhfdCB7CiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNo
ZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9u
Zy4KICAgICBCYWRJbmRleGluZ1R5cGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGluZGV4aW5n
IHR5cGUgd2FzIHdyb25nLgotICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNh
dXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBm
bGFncyB3ZSB3b3VsZCBzZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9m
IG92ZXJmbG93LgogICAgIE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5j
b3VudGVyZWQgbmVnYXRpdmUgemVyby4KICAgICBOZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlk
bid0IHdhbnQgdG8gc2VlIGl0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw5ICs3Myw2IEBAIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1
czo6Y29tcHUKICNpZiBFTkFCTEUoREZHX0pJVCkKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VP
ZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZN
JiB2bSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewotICAgIC8vIEZJWE1FOiBXZSB3
b3VsZG4ndCBoYXZlIHRvIGJhaWwgZm9yIG5vbkNlbGwgaWYgd2UgdGF1Z2h0IE1hdGNoU3RydWN0
dXJlIGhvdyB0byBoYW5kbGUgbm9uCi0gICAgLy8gY2VsbHMuIElmIHdlIGZpeGVkIHRoYXQgdGhl
biB3ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHVzZSBzdW1tYXJ5KCk7Ci0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAogICAgIFN0dWJJbmZvU3VtbWFy
eSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAg
ICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKICAgICAgICAgcmV0dXJuIEluc3RhbmNlT2ZT
dGF0dXMoc3VtbWFyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
a1RpbWVDb25zdGFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDggKzU4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihpc0RldGFjaGVkLCBu
dWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5RGVmYXVsdENvbXBhcmF0b3IsIG51bGxwdHIpIFwK
ICAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgbnVsbHB0cikgXAotICAgIHYoaXNCb3Vu
ZEZ1bmN0aW9uLCBudWxscHRyKSBcCi0gICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51
bGxwdHIpIFwKKyAgICB2KGZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFuY2VTeW1ib2wsIG51bGxw
dHIpIFwKICAgICB2KGluc3RhbmNlT2YsIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5Mb2csIG51
bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5EZXNjcmliZSwgbnVsbHB0cikgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDExIEBAIHZvaWQgZHVtcFNw
ZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAgICAgICAgICAgICBzdHJPdXQucHJp
bnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0ludGVybmFsRnVuY3Rpb24p
CisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJJbnRlcm5hbEZ1bmN0aW9uIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSBTcGVjU3RyaW5nKQpAQCAtNTE4
LDEwICs1MjMsMTMgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSQog
CiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsK
ICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKLSAgICAg
ICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhhc0luc3RhbmNlOwotICAg
ICAgICByZXR1cm4gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICAgICAg
ICAgIHJldHVybiBTcGVjQm91bmRGdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25Cb3Vu
ZEZ1bmN0aW9uOwogICAgIH0KIAorICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihJbnRl
cm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgICAgICByZXR1cm4gU3BlY0ludGVybmFsRnVuY3Rp
b24gfCBTcGVjT2JqZWN0T3RoZXI7CisKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2Yo
SlNQcm9taXNlOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAg
ICAgCkBAIC02ODYsNiArNjk0LDE2IEBAIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJv
bVNwZWN1bGEKICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKIH0KIAorc3RkOjpvcHRpb25hbDxT
cGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlUmFuZ2UoSlNUeXBlUmFuZ2UgcmFu
Z2UpCit7CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBTcGVjTm9uZTsKKyAgICBm
b3IgKHVpbnQ4X3QgdHlwZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJhbmdlLmZpcnN0KTsgdHlw
ZSA8PSBzdGF0aWNfY2FzdDx1aW50OF90PihyYW5nZS5sYXN0KTsgdHlwZSsrKQorICAgICAgICBz
cGVjdWxhdGlvbiB8PSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoc3RhdGljX2Nhc3Q8SlNUeXBlPih0
eXBlKSkudmFsdWVfb3IoU3BlY05vbmUpOworICAgIGlmIChzcGVjdWxhdGlvbiA9PSBTcGVjTm9u
ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3BlY3VsYXRpb247
Cit9CisKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlw
ZShKU1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTY5NSw2ICs3MTMsMTAg
QEAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpbwogICAgICAgICByZXR1
cm4gU3BlY1N5bWJvbDsKICAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICByZXR1cm4g
U3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBJbnRlcm5hbEZ1bmN0aW9uVHlwZToKKyAgICAgICAg
cmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNhc2UgSlNGdW5jdGlvblR5cGU6Cisg
ICAgICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsKICAgICBjYXNlIEFycmF5VHlwZToK
ICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBA
IC05NjAsNiArOTgyLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNv
bgogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICBpZiAoIXN0cm5jbXAoc3Bl
Y3VsYXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3QiLCBzdHJsZW4oIlNwZWNEYXRhVmlld09iamVj
dCIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKKyAgICBpZiAoIXN0cm5j
bXAoc3BlY3VsYXRpb24sICJTcGVjSW50ZXJuYWxGdW5jdGlvbiIsIHN0cmxlbigiU3BlY0ludGVy
bmFsRnVuY3Rpb24iKSkpCisgICAgICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbjsKICAg
ICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0T3RoZXIiLCBzdHJsZW4oIlNw
ZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNPYmplY3RPdGhlcjsKICAgICBp
ZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0Iiwgc3RybGVuKCJTcGVjT2JqZWN0
IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMTUgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1Y3R1cmU7CitzdHJ1Y3QgSlNUeXBlUmFuZ2U7
CiAKIHR5cGVkZWYgdWludDY0X3QgU3BlY3VsYXRlZFR5cGU7CiBzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOyAv
LyBXZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KIHN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0FycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KLXN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSAgICA9IDF1bGwg
PDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0IGhhcyBpdHMgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3MgYml0IHNldC4KLXN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0
YW5jZSA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0IGRv
ZXMgbm90IGhhdmUgaXRzIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgdHlwZSBpbmZvIGZs
YWdzIGJpdCBzZXQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlv
biAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0lu
c3RhbmNlIHwgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5jZTsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0JvdW5kRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgSlNCb3VuZEZ1bmN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjTm9uQm91bmRGdW5jdGlvbiAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAz
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nl
cywgYnV0IG5vdCBhIEpTQm91bmRGdW5jdGlvbi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb3VuZEZ1
bmN0aW9uIHwgU3BlY05vbkJvdW5kRnVuY3Rpb247IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVu
Y3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjSW50MTZBcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCA1OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KQEAgLTEwOSw4ICsxMTAsOSBAQCBz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJCiBzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjSGVhcEJpZ0ludDsKICNlbmRpZgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0NTsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludGVybmFsRnVuY3Rpb24gICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDY7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEludGVybmFsRnVuY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3Bl
Y0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgotc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
U3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJy
YXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVj
U3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1By
b21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFw
T2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZl
ZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNr
IHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgorc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwg
U3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1
bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2Jq
ZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8
IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3Qg
fCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0
IHwgU3BlY0ludGVybmFsRnVuY3Rpb247IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3Ig
YW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0
IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJ
bnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxs
IHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNh
biBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNE
b3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBh
bmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3Vu
ZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpAQCAtMjMxLDcgKzIzMyw3IEBAIGlubGluZSBib29sIGlz
QXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAogaW5saW5lIGJvb2wgaXNGdW5jdGlvblNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVj
RnVuY3Rpb247CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0Z1bmN0aW9uKSA9
PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNQcm94eU9iamVjdFNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQpAQCAtNTE4LDYgKzUyMCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIFNw
ZWN1bGF0ZWRUeXBlIHNwZWN1bGEKIC8vIElmIGl0J3MgYW4gYW55SW50KCksIGl0J2xsIHJldHVy
biBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIEludDUyIGxhdHRpY2UuCiAvLyBPdGhlcndpc2Us
IGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBKU1ZhbHVlIGxhdHRpY2UuCiBKU19FWFBPUlRf
UFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3YXJlU3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNW
YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5
cGVSYW5nZShKU1R5cGVSYW5nZSk7CiBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVj
dWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25G
cm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBl
ZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZOb3RGdW4KICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxp
bmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbiks
IHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1
bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogY29uZCwgTGlua1RpbWVDb25zdGFu
dCBjb25zdGFudCwgTGFiZWwmIHRhcmdldCkKK3sKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywg
Y29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgY29uc3RhbnQpLCB0YXJnZXQuYmlu
ZCh0aGlzKSk7Cit9CisKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0V2lkZUp1bXBJ
Zk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdl
dCkKIHsKICAgICBPcEpuZXFQdHI6OmVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZTMyPih0aGlzLCBjb25k
LCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpoYXNPd25Q
cm9wZXJ0eUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwpAQCAtMTczNSwxMiArMTc0MCwx
MiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAg
ICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMs
IGRzdCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSk7CisgICAgICAgICAgICAgICAgT3BJc0NlbGxX
aXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN0cmluZ1R5cGUsIFN0cmluZ1R5
cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHZhbHVlID09ICJzeW1ib2wiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7
Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1f
dmFsdWUsIFN5bWJvbFR5cGUpOworICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVt
aXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1ib2xUeXBlLCBTeW1ib2xUeXBlKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSAiYmlnaW50IikgewpAQCAtMTc0OCw3ICsxNzUzLDcgQEAgYm9vbCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbQogI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAg
ICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSk7CiAjZWxzZQotICAg
ICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVl
LCBIZWFwQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlLCBIZWFwQmlnSW50VHlwZSk7
CiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAg
LTI0MjQsMTIgKzI0MjksNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJs
ZSgKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0T3ZlcnJp
ZGVzSGFzSW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3Rvciwg
UmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSkKLXsKLSAgICBPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlOjplbWl0KHRoaXMsIGRzdCwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpOwotICAg
IHJldHVybiBkc3Q7Ci19Ci0KIC8vIEluZGljYXRlcyB0aGUgbGVhc3QgdXBwZXIgYm91bmQgb2Yg
cmVzb2x2ZSB0eXBlIGJhc2VkIG9uIGxvY2FsIHNjb3BlLiBUaGUgYnl0ZWNvZGUgbGlua2VyCiAv
LyB3aWxsIHN0YXJ0IHdpdGggdGhpcyBSZXNvbHZlVHlwZSBhbmQgY29tcHV0ZSB0aGUgbGVhc3Qg
dXBwZXIgYm91bmQgaW5jbHVkaW5nIGludGVyY2VwdGluZyBzY29wZXMuCiBSZXNvbHZlVHlwZSBC
eXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZVR5cGUoKQpAQCAtNDYwNiw5ICs0NjA1LDE1IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9JbmQKICAgICByZXR1cm4gZHN0Owog
fQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGVSYW5nZSByYW5nZSkKK3sKKyAg
ICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCByYW5nZS5maXJzdCwgcmFu
Z2UubGFzdCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YywgSlNUeXBlIHR5cGUpCiB7Ci0gICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3Qs
IHNyYywgdHlwZSk7CisgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIHNyYywg
dHlwZSwgdHlwZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2
aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNyArNzk4LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbmMoUmVnaXN0ZXJJRCogc3JjRHN0
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlYyhSZWdpc3RlcklEKiBzcmNEc3QpOwogCi0g
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3RvdHlwZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5j
ZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVPZihSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNyYyk7CkBAIC05MTYsNiArOTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJn
ZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJRCog
Y29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CisgICAgICAgIHZvaWQgZW1p
dEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogY29uZCwgTGlua1RpbWVDb25z
dGFudCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHVuc2lnbmVkIGVtaXRXaWRlSnVtcElmTm90
RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsK
ICAgICAgICAgdm9pZCByZWNvcmRIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eUluRm9ySW5Mb29wKFN0
cnVjdHVyZUZvckluQ29udGV4dCYsIHVuc2lnbmVkIGJyYW5jaE9mZnNldCwgTGFiZWwmIGdlbmVy
aWNQYXRoKTsKIApAQCAtOTQwLDYgKzk0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RW51bWVyYXRvckdlbmVyaWNQcm9wZXJ0eU5hbWUoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBSZWdpc3RlcklEKiBpbmRleCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRUb0luZGV4U3RyaW5nKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogaW5kZXgpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NlbGxXaXRoVHlwZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlUmFuZ2UpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dlbmVyYXRvcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRz
dCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0Fz
eW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBl
bWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXN5bmNHZW5lcmF0b3JUeXBlKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ1LDYgKzEzNDUs
MTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0XwogICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEdldFByb3RvdHlwZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9mKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNT
RVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2Yo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIHByb3RvdHlwZS5n
ZXQoKSk7Cit9CisKIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxkIHByb21pc2VJbnRlcm5hbEZpZWxk
SW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5l
bnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVy
KTsKQEAgLTMxNjAsMjkgKzMxNzAsMjMgQEAgUmVnaXN0ZXJJRCogVGhyb3dhYmxlQmluYXJ5T3BO
b2RlOjplbWl0QgogCiBSZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXNPYmplY3QgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGlzQ3VzdG9tID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3IgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhhc0luc3RhbmNlVmFs
dWUgPSBnZW5lcmF0b3IubW92ZUVtcHR5VmFsdWUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZv
ckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlz
UHVyZShnZW5lcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3IgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMik7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJl
ZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBkc3RSZWcgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IHByb3RvdHlwZS5nZXQoKSk7CiAgICAgUmVmPExhYmVsPiBjdXN0b20gPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKICAgICBSZWY8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAg
ICBSZWY8TGFiZWw+IHR5cGVFcnJvciA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCi0gICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SXNPYmplY3QoaXNPYmplY3QuZ2V0KCksIGNvbnN0cnVj
dG9yLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGlzT2JqZWN0LmdldCgp
LCB0eXBlRXJyb3IuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwg
bV9leHByMSk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2V4
cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRvci5lbWl0SXNDZWxs
V2l0aFR5cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgSlNU
eXBlUmFuZ2UgeyBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgSlNGdW5jdGlvblR5cGUgfSksIGN1c3Rv
bS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGhhc0lu
c3RhbmNlVmFsdWUuZ2V0KCksIGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3Iudm0oKS5wcm9w
ZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShpc0N1c3RvbS5nZXQoKSwgY29uc3RydWN0b3Iu
Z2V0KCksIGhhc0luc3RhbmNlVmFsdWUuZ2V0KCkpOwotCi0gICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmVHJ1ZShpc0N1c3RvbS5nZXQoKSwgY3VzdG9tLmdldCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoaGFzSW5zdGFuY2VWYWx1ZS5n
ZXQoKSwgTGlua1RpbWVDb25zdGFudDo6ZnVuY3Rpb25Qcm90b3R5cGVIYXNJbnN0YW5jZVN5bWJv
bCwgY3VzdG9tLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGdlbmVyYXRv
ci5lbWl0SXNPYmplY3QoZHN0UmVnLmdldCgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwog
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChwcm90b3R5cGUuZ2V0KCks
IGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3Iudm0oKS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwpAQCAtMzE5MSwxMCArMzE5NSw2IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjpl
bWl0Qnl0ZWNvZGUKICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2YoZHN0UmVnLmdldCgpLCB2
YWx1ZS5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0SnVtcChk
b25lLmdldCgpKTsKLQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHlwZUVycm9yLmdldCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJSaWdodCBoYW5kIHNpZGUgb2YgaW5z
dGFuY2VvZiBpcyBub3QgYW4gb2JqZWN0Iik7Ci0KICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGN1
c3RvbS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJvb2wg
Y29uc3RhbnRXYXNTZXQgPSB0cnVlOwogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
CiAgICAgICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgotICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2VsbCgpICYmIGNoaWxkLnZh
bHVlKCkuYXNDZWxsKCktPnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNDZWxs
KCkgJiYgbm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlucyhjaGlsZC52YWx1ZSgpLmFzQ2VsbCgp
LT50eXBlKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFR5
cGVPZklzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9v
bGVhbigKQEAgLTE1NTIsNyArMTU1Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm1fc3RydWN0dXJlLmZvckVhY2goCiAgICAg
ICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBub2RlLT5xdWVyaWVkVHlwZSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IG5vZGUtPnF1ZXJpZWRUeXBlKCkuY29udGFpbnMo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC00MzM0LDEw
ICs0MzM0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
IGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgotICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwotICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBA
IC00NDY0LDQzICs0NDYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBjb25zdCBBYnN0cmFjdFZhbHVlJiBh
YnN0cmFjdFZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHVuc2lnbmVk
IGJpdHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAgQVNTRVJUKGJpdHMpOwot
ICAgICAgICBpZiAoYml0cyA9PSBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAg
ICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0gU3BlY0Z1bmN0aW9uV2l0aERlZmF1
bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29u
c3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBhYnN0cmFjdFZhbHVl
LnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBpZiB3ZSBzZWUgYSBjZWxsIGhlcmUsIHdlIGtu
b3cgaXQncyBmdWxseSBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBjYW4g
cmVhZCBpdHMgaW5saW5lIHR5cGUgaW5mbyBmbGFncy4gVGhlc2UgZmxhZ3MgZG9uJ3QgY2hhbmdl
IG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgICAg
ICAgICAgICAgaWYgKCh2YWx1ZS5hc0NlbGwoKS0+aW5saW5lVHlwZUZsYWdzKCkgJiBiaXRzKSA9
PSBiaXRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3Rh
bnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYWJzdHJhY3RW
YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAgICAgICAgICBib29sIG9rID0gdHJ1
ZTsKLSAgICAgICAgICAgIGFic3RyYWN0VmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgb2sgJj0gKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHM7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChvaykgewotICAgICAgICAgICAgICAgIG1f
c3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3R5cGUgJiYgISh2
YWx1ZS5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyODAwMTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTk2NiwxNyArNTk2Niw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NoZWNrX3Rkeik7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6IHsKLSAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3RGb3IoY3VycmVudENvZGVPcmlnaW4oKSktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgICAgIE5vZGUqIGNvbnN0cnVjdG9yID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbnN0cnVjdG9yKSk7Ci0gICAgICAgICAgICBO
b2RlKiBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2hh
c0luc3RhbmNlVmFsdWUpKTsKLQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCksIGFkZFRvR3JhcGgoT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShkZWZhdWx0SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbikpLCBjb25zdHJ1Y3Rv
ciwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBjYXNlIG9wX2lkZW50aXR5
X3dpdGhfcHJvZmlsZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJZGVudGl0eVdpdGhQcm9maWxlPigpOwogICAgICAgICAgICAgTm9kZSog
c3JjRHN0ID0gZ2V0KGJ5dGVjb2RlLm1fc3JjRHN0KTsKQEAgLTYwMjcsNyArNjAxNiw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2RzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9mLCB2YWx1ZSwgcHJvdG90eXBlKSk7CisgICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgRWRnZSh2YWx1
ZSwgQ2VsbFVzZSksIEVkZ2UocHJvdG90eXBlKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0KIApAQCAtNjA5OCw3ICs2MDg3LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2lzX2Nl
bGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKGJ5dGVjb2RlLm1fdHlwZSksIHZh
bHVlKSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSXNDZWxs
V2l0aFR5cGUsIE9wSW5mbyhKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRl
Y29kZS5tX2xhc3RUeXBlIH0pLCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
aXNfY2VsbF93aXRoX3R5cGUpOwogICAgICAgICB9CiAKQEAgLTcyNTcsNyArNzI0Niw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJpY0Jsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwogCiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGlzS25vd25JdGVyRnVuY3Rpb24gPSBhZGRUb0dyYXBoKENvbXBh
cmVFcVB0ciwgT3BJbmZvKGZyb3plblN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pLCBzeW1ib2xJdGVy
YXRvcik7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElz
Q2VsbFdpdGhUeXBlLCBPcEluZm8oQXJyYXlUeXBlKSwgZ2V0KGJ5dGVjb2RlLm1faXRlcmFibGUp
KTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgoSXNDZWxs
V2l0aFR5cGUsIE9wSW5mbyhKU1R5cGVSYW5nZSB7IEFycmF5VHlwZSwgQXJyYXlUeXBlIH0pLCBn
ZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOwogCiAgICAgICAgICAgICAgICAgICAgIEJyYW5jaERh
dGEqIGJyYW5jaERhdGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoRGF0YS0+dGFrZW4gPSBCcmFuY2hUYXJnZXQoZmFzdEFycmF5QmxvY2sp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBl
OgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9tb3Y6Ci0g
ICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3BfaWRlbnRpdHlf
d2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKICAgICBjYXNlIG9wX2luc3Rh
bmNlb2ZfY3VzdG9tOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAKICAgICBj
YXNlIElzQ2VsbFdpdGhUeXBlOgotICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPnF1
ZXJpZWRUeXBlKCkpKTsKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5xdWVyaWVk
VHlwZSgpLnJhd0JpdHMoKSkpOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFZhbHVlQml0
Tm90OgpAQCAtMTE3NiwxMSArMTE3Niw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgICAgIHJlYWQoTWlzY0Zp
ZWxkcyk7CiAgICAgICAgIHJldHVybjsgCi0gICAgICAgIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5m
b0ZsYWdzOgotICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKLSAgICAgICAgZGVm
KEhlYXBMb2NhdGlvbihDaGVja1R5cGVJbmZvRmxhZ3NMb2MsIEpTQ2VsbF90eXBlSW5mb0ZsYWdz
LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwogCiAg
ICAgY2FzZSBQYXJzZUludDoKICAgICAgICAgLy8gTm90ZTogV2Ugd291bGQgaGF2ZSBlbGltaW5h
dGVkIGEgUGFyc2VJbnQgdGhhdCBoYXMganVzdCBhIHNpbmdsZSBjaGlsZCBhcyBhbiBJbnQzMlVz
ZSBpbnNpZGUgZml4dXAuCkBAIC0xMTkyLDExICsxMTg3LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBjbG9iYmVyVG9wKCk7CiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAgICAgIHJlYWQoSlND
ZWxsX3R5cGVJbmZvRmxhZ3MpOwotICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE92ZXJyaWRlc0hh
c0luc3RhbmNlTG9jLCBKU0NlbGxfdHlwZUluZm9GbGFncywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5
Tm9kZShub2RlKSk7Ci0gICAgICAgIHJldHVybjsKLQogICAgIGNhc2UgUHV0U3RydWN0dXJlOgog
ICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAgICAgIHdyaXRlKEpTQ2VsbF9z
dHJ1Y3R1cmVJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMjYsNDYgKzEwMjYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2Fz
ZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKLSAgICAgICAgICAgICAgICBjb25zdCBBYnN0cmFjdFZh
bHVlJiBhYnN0cmFjdFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBiaXRzID0gbm9kZS0+dHlwZUluZm9PcGVyYW5kKCk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGJpdHMpOwotICAgICAgICAgICAgICAgIGlmIChiaXRzID09
IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGFic3RyYWN0VmFsdWUubV90eXBlID09IFNwZWNGdW5jdGlvbldpdGhEZWZhdWx0SGFzSW5zdGFu
Y2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGFic3RyYWN0VmFsdWUudmFs
dWUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSBpZiB3ZSBzZWUgYSBjZWxs
IGhlcmUsIHdlIGtub3cgaXQncyBmdWxseSBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYW5kIHdlIGNhbiByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZsYWdzLiBUaGVz
ZSBmbGFncyBkb24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG9iamVjdCdzIGxpZmV0aW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5h
c0NlbGwoKS0+aW5saW5lVHlwZUZsYWdzKCkgJiBiaXRzKSA9PSBiaXRzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGFic3RyYWN0VmFs
dWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICAgICAgICAgICAgICBib29sIG9r
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5m
b3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9rICY9IChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCkgJiBiaXRzKSA9PSBiaXRzOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw2
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBh
cmVCZWxvd0VxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgIGNhc2UgUHJvZmlsZUNvbnRy
b2xGbG93OgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJc0VtcHR5
OgogICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBUeXBlT2ZJc09iamVjdDoK
QEAgLTE4OCw3ICsxODcsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgIGNhc2UgQ2hlY2s6CiAgICAg
Y2FzZSBDaGVja1ZhcmFyZ3M6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBj
YXNlIFZhbHVlUmVwOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDcgKzE5OTAsNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIE92
ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAg
ICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKQEAgLTIwNzQs
MjUgKzIwNzMsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2Ug
YSB2YXJpYW50IG9mIE1hdGNoU3RydWN0dXJlIHRoYXQgZG9lc24ndCBkbyBhIGNlbGwgY2hlY2su
Ci0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1Nzg0CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBJ
bnN0YW5jZU9mOiB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUNlbGwoKQotICAgICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVDZWxsKCkKLSAgICAgICAgICAgICAgICAmJiBpczY0Qml0KCkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIEluc3RhbmNlT2ZDdXN0b206Ci0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSW5CeUlkOiB7
CkBAIC0yODI4LDcgKzI4MTksNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEdsb2JhbExl
eGljYWxWYXJpYWJsZToKICAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgY2FzZSBE
aXJlY3RDYWxsOgotICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAgY2Fz
ZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGxJbmxp
bmVkQ2FsbGVyOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDE1ICsxMDksNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgTG9jCiAgICAgY2FzZSBCdXR0ZXJmbHlMb2M6CiAgICAgICAgIG91dC5wcmludCgiQnV0
dGVyZmx5TG9jIik7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja1R5
cGVJbmZvRmxhZ3NMb2M6Ci0gICAgICAgIG91dC5wcmludCgiQ2hlY2tUeXBlSW5mb0ZsYWdzTG9j
Iik7Ci0gICAgICAgIHJldHVybjsKIAotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2M6
Ci0gICAgICAgIG91dC5wcmludCgiT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKICAgICBjYXNlIENsb3N1cmVWYXJpYWJsZUxvYzoKICAgICAgICAg
b3V0LnByaW50KCJDbG9zdXJlVmFyaWFibGVMb2MiKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAy
ODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw2IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBB
cnJheU1hc2tMb2MsCiAgICAgVmVjdG9yTGVuZ3RoTG9jLAogICAgIEJ1dHRlcmZseUxvYywKLSAg
ICBDaGVja1R5cGVJbmZvRmxhZ3NMb2MsCi0gICAgT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MsCiAg
ICAgQ2xvc3VyZVZhcmlhYmxlTG9jLAogICAgIERpcmVjdEFyZ3VtZW50c0xvYywKICAgICBHZXR0
ZXJMb2MsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjgw
MDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MzYsMTAgKzE0MzYsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9
PSBJc0NlbGxXaXRoVHlwZTsKICAgICB9CiAKLSAgICBKU1R5cGUgcXVlcmllZFR5cGUoKQorICAg
IEpTVHlwZVJhbmdlIHF1ZXJpZWRUeXBlKCkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPHVpbnQ4X3QsIHN0ZDo6dW5kZXJseWluZ190eXBlPEpTVHlwZT46OnR5cGU+
Ojp2YWx1ZSwgIkVuc3VyZSB0aGF0IHVpbnQ4X3QgaXMgdGhlIHVuZGVybHlpbmcgdHlwZSBmb3Ig
SlNUeXBlLiIpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX29wSW5mby5h
czx1aW50MzJfdD4oKSk7CisgICAgICAgIEFTU0VSVChoYXNRdWVyaWVkVHlwZSgpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVHlwZVJhbmdlOjpmcm9tQml0cyhtX29wSW5mby5hczx1aW50MzJfdD4oKSk7
CiAgICAgfQogCiAgICAgYm9vbCBoYXNTcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKQEAgLTE0NDks
NyArMTQ0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+
IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWN1bGF0
aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUpTVHlwZVJhbmdlKHF1ZXJpZWRUeXBlKCkpOwogICAgIH0KICAgICAKICAgICBib29sIGhh
c1Jlc3VsdCgpCkBAIC0xODc3LDcgKzE4NzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIENoZWNrSXNDb25zdGFudDoKICAgICAgICAgICAgIHJldHVy
biBpc0NlbGwoY2hpbGQxKCkudXNlS2luZCgpKTsKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJ
bnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgpAQCAtMTk1Miwx
NyArMTk1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFVuaXF1ZWRT
dHJpbmdJbXBsKj4oKTsKICAgICB9CiAKLSAgICBib29sIGhhc1R5cGVJbmZvT3BlcmFuZCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBDaGVja1R5cGVJbmZvRmxhZ3M7Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgdHlwZUluZm9PcGVyYW5kKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCho
YXNUeXBlSW5mb09wZXJhbmQoKSAmJiBtX29wSW5mby5hczx1aW50MzJfdD4oKSA8PSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oVUNIQVJfTUFYKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5hczx1
aW50MzJfdD4oKTsKLSAgICB9Ci0KICAgICBib29sIGhhc1RyYW5zaXRpb24oKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQXNzZXJ0SW5Cb3VuZHMsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0luQm91bmRzLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2hlY2tJZGVudCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAotICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyog
VGFrZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAq
L1wKICAgICBtYWNybyhDaGVja0pTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGhpcyBpcyB0
aGUgc2FtZSBhcyBqc0Nhc3QgYnV0IGFzIGEgc3BlY3VsYXRpb24gcmF0aGVyIHRoYW4gYXNzZXJ0
aW9uICovXAogICAgIG1hY3JvKENoZWNrTm90SlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oUGFyc2VJbnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKQEAg
LTM5NSw3ICszOTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oUGhhbnRvbU5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbWlzYyBvcGVyYXRpb25zLiAqL1wKLSAgICBtYWNybyhP
dmVycmlkZXNIYXNJbnN0YW5jZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgbWFjcm8oSW5zdGFuY2VPZiwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRC
b29sZWFuKSBcCiAgICAgbWFjcm8oSW5zdGFuY2VPZkN1c3RvbSwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTWF0Y2hTdHJ1Y3R1cmUsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVj
dCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci5yYXdCaXRz
KCkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1vZGUpIDogbV92YWx1
ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oUHJpdmF0ZUZpZWxk
UHV0S2luZCBwdXRLaW5kKSA6IG1fdmFsdWUocHV0S2luZC52YWx1ZSgpKSB7IH0KKyAgICBleHBs
aWNpdCBPcEluZm8oSlNUeXBlUmFuZ2UgcmFuZ2UpIDogbV92YWx1ZShyYW5nZS5yYXdCaXRzKCkp
IHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQq
IHB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2Nh
dGlvblByb2ZpbGUoKSkgeworICAgIGlmIChjb25zdHJ1Y3Rvci0+aXNKU0Z1bmN0aW9uKCkgJiYg
anNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Qcm9maWxl
KCkpIHsKICAgICAgICAgRGVmZXJUZXJtaW5hdGlvbiBkZWZlclNjb3BlKHZtKTsKICAgICAgICAg
YXV0byByYXJlRGF0YSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVS
YXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGdsb2JhbE9iamVjdCwgaW5saW5lQ2FwYWNpdHkp
OwogICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzNyw3ICsxMDM3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0
RXE6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAgICBjYXNlIFNhbWVWYWx1ZToK
LSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBJbnN0YW5j
ZU9mOgogICAgICAgICBjYXNlIEluc3RhbmNlT2ZDdXN0b206CiAgICAgICAgIGNhc2UgSXNFbXB0
eToKQEAgLTEzMTQsNyArMTMxMyw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6Ci0gICAgICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOgogICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBjYXNlIEFycmF5
aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1NCw5ICsyNTQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBD
b21wYXJlRXFQdHI6CiAgICAgY2FzZSBTYW1lVmFsdWU6Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZv
RmxhZ3M6CiAgICAgY2FzZSBQYXJzZUludDoKLSAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNl
OgogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgIGNh
c2UgVHlwZU9mSXNPYmplY3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2NDMsMTYgKzM2NDMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAgIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3Mobm9kZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6
IHsKLSAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKG5vZGUpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKICAgICAgICAgY29tcGlsZUlu
c3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyODAwMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDMyLDIxICs0NDMyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBD
aGVja1R5cGVJbmZvRmxhZ3M6IHsKLSAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhu
b2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBQYXJzZUludDogewogICAg
ICAgICBjb21waWxlUGFyc2VJbnQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6IHsKLSAgICAgICAgY29tcGlsZU92ZXJyaWRlc0hh
c0luc3RhbmNlKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIEluc3Rh
bmNlT2Y6IHsKICAgICAgICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDIwICs0MDgxLDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcgogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdz
KE5vZGUqIG5vZGUpCi17Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0KLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICAv
LyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZvciBjaGVja2luZyBpZiBhIHNpbmdsZSBiaXQgaXMg
c2V0LiBJZiB3ZSB3YW50IHRvIGNoZWNrIG1vcmUKLSAgICAvLyB0aGFuIG9uZSBiaXQgYXQgb25j
ZSwgd2UnbGwgbmVlZCB0byBmaXggdGhpczoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NzA1Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlSW5m
b0ZsYWdzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fz
c2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5vZGUt
PnR5cGVJbmZvT3BlcmFuZCgpKSkpOwotCi0gICAgbm9SZXN1bHQobm9kZSk7Ci19Ci0KIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpOwpAQCAtNDE1MiwxMzYgKzQxMzgsNzIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZAogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKIHsKLSAgICBOb2RlKiBoYXNJbnN0YW5jZVZh
bHVlTm9kZSA9IG5vZGUtPmNoaWxkMigpLm5vZGUoKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0
SGFzSW5zdGFuY2VGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKSk7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdERl
ZmF1bHQ7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgaGFzSW5zdGFuY2VWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDModGhpcyk7CisjZW5kaWYK
IAotICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgc3R1YkluZm9H
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHVi
SW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CisKKyAgICBHUFJSZWcgdmFsdWVHUFIg
PSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJH
UFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3M7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIC8vIEl0IHdvdWxkIGJl
IGdyZWF0IGlmIGNvbnN0YW50IGZvbGRpbmcgaGFuZGxlZCBhdXRvbWF0aWNhbGx5IHRoZSBjYXNl
IHdoZXJlIHdlIGtuZXcgdGhlIGhhc0luc3RhbmNlIGZ1bmN0aW9uCi0gICAgLy8gd2FzIGEgY29u
c3RhbnQuIFVuZm9ydHVuYXRlbHksIHRoZSBmb2xkaW5nIHJ1bGUgZm9yIE92ZXJyaWRlc0hhc0lu
c3RhbmNlIGlzIGluIHRoZSBzdHJlbmd0aCByZWR1Y3Rpb24gcGhhc2UKLSAgICAvLyBzaW5jZSBp
dCByZWxpZXMgb24gT1NSIGluZm9ybWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU0ODMyCi0gICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxs
Q29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZh
bHVlTm9kZS0+YXNDZWxsKCkpIHsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VWYWx1
ZVJlZ3MgPSBoYXNJbnN0YW5jZVZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgaWYgKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHIobm9k
ZS0+Y2VsbE9wZXJhbmQoKSkpKTsKKyAgICAgICAgcHJvdG90eXBlUmVncyA9IEpTVmFsdWVSZWdz
KHByb3RvdHlwZS5ncHIoKSk7CiAjZWxzZQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoaGFzSW5zdGFuY2VWYWx1ZVJlZ3MpKTsKLSAgICAgICAgbm90RGVm
YXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFz
SW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpKSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpLCBzY3JhdGNoMy5ncHIoKSk7CisgICAgICAgIHByb3RvdHlwZVJlZ3MgPSBKU1ZhbHVl
UmVncyhzY3JhdGNoMy5ncHIoKSwgcHJvdG90eXBlLmdwcigpKTsKICNlbmRpZgotICAgIH0KLQot
ICAgIC8vIENoZWNrIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCi0g
ICAgbV9qaXQudGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVzdWx0R1BS
KTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCi0gICAgaWYgKCFub3REZWZhdWx0LmVt
cHR5KCkpIHsKLSAgICAgICAgbm90RGVmYXVsdC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBwcm90b3R5cGVSZWdz
ID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpKTsKICAgICB9CiAKLSAgICBkb25lLmxp
bmsoJm1faml0KTsKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
Ci19Ci0KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9k
ZSogbm9kZSwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdz
LCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BS
LCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQotewogICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAg
ICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCisgICAgICAgIHZhbHVlR1BSLCBw
cm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0
Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShT
cGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwotICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd0Nhc2UpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aElDQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1
YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlUmVncyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywg
cHJvdG90eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Z2VuLnN0dWJJbmZvKCksIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzKTsKICAgICB9CiAgICAgCiAg
ICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7Ci19CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UKLSAgICAgICAgJiYg
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIAotICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwotICAgICAgICAKLSAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Ci0gICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOwotICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0g
ICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7Ci0gICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7Ci0gICAgICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUs
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0
R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwotICAgICAgICAKLSAg
ICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKLSAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAKLSAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwotICAgIAotICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Ci0gICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7Ci0gICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OwotICAgIH0KLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwotICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3Mo
KTsKLSAgICAKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWVSZWdzKTsKLSAgICBtb3ZlRmFsc2VU
byhyZXN1bHRHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5q
dW1wKCk7Ci0gICAgCi0gICAgaXNDZWxsLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBKSVRDb21w
aWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVSZWdz
KTsKLSAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywg
cHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxp
ZEdQUlJlZywgc2xvd0Nhc2UpOwotICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgcmV0dXJuOwogfQpAQCAt
NTExNiwxOCArNTAzOCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkN1CiAgICAgLy8gU3ltYm9sLmhhc0luc3RhbmNlIGJlY29tZXMgcG9wdWxhciB3aWxsIGxpa2Vs
eSByZW1haW4gdGhhdCB3YXkuCiAKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMygpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcg
Y29uc3RydWN0b3JHUFIgPSBjb25zdHJ1Y3Rvci5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyBjb25z
dHJ1Y3RvclJlZ3MgPSBjb25zdHJ1Y3Rvci5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdz
IGhhc0luc3RhbmNlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2xvd0Nhc2UgPSBtX2ppdC5qdW1wKCk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgY29uc3RydWN0
b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvclJl
Z3MsIGhhc0luc3RhbmNlUmVncykpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQpAQCAtNTE0NCwxMCArNTA2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJc0NlbGxXaXRoVHkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKIAotICAgICAgICBtX2pp
dC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwKLSAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAg
ICAgICAgICAgIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIG5vZGUtPnF1ZXJpZWRUeXBlKCksIHJlc3VsdEdQUik7CiAgICAg
ICAgIGJsZXNzQm9vbGVhbihyZXN1bHRHUFIpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOwogCkBAIC01MTY2LDEwICs1MDg1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhUeQogICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNl
bGwuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAg
ICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLAotICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
Ci0gICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS0+cXVlcmllZFR5cGUoKSksCi0gICAgICAg
ICAgICByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5pc0NlbGxXaXRoVHlwZShjZWxsR1BSLCBu
b2RlLT5xdWVyaWVkVHlwZSgpLCByZXN1bHRHUFIpOwogICAgICAgICBibGVzc0Jvb2xlYW4ocmVz
dWx0R1BSKTsKICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTEzMjcsNyArMTEyNDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVPYmplY3QoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUZ1bmN0aW9uKEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgc3BlY3VsYXRlQ2VsbFR5
cGUoZWRnZSwgY2VsbCwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgREZHX1RZ
UEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNGdW5j
dGlvbiwgbV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI4MDAxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUzLDEwICs3NTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW5lcmljSlNW
YWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAg
IGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7
CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVl
UmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BU
LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAg
ICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZkN1c3RvbShOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uo
Tm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0aFR5cGUoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUlzVHlwZWRBcnJheVZpZXcoTm9kZSopOwpAQCAtMTM2Myw3ICsxMzYxLDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwogCi0gICAg
dm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
aGVja0lkZW50KE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZVBhcnNlSW50KE5vZGUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzExLDI2ICszMTEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRoaXMgaW4gY29uc3Rh
bnQgZm9sZGluZyBidXQgdGhpcyBjdXJyZW50bHkgcmVsaWVzIG9uIE9TUiBleGl0IGhpc3Rvcnk6
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4
MzIKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICAgICAgaWYg
KCFtX25vZGUtPmNoaWxkMigpLm5vZGUoKS0+aXNDZWxsQ29uc3RhbnQoKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpLT5h
c0NlbGwoKSAhPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpIHsKLSAgICAgICAg
ICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKHRydWUp
KTsKLSAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotCi0gICAgICAgICAgICB9IGVs
c2UgaWYgKCFtX2dyYXBoLmhhc0V4aXRTaXRlKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRU
eXBlSW5mb0ZsYWdzKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIG9wdGltaXN0aWNhbGx5IGFz
c3VtZSB0aGF0IHdlIHdpbGwgbm90IHNlZSBhIGZ1bmN0aW9uIHRoYXQgaGFzIGEgY3VzdG9tIGlu
c3RhbmNlb2Ygb3BlcmF0aW9uIGFzIHRoZXkgc2hvdWxkIGJlIHJhcmUuCi0gICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNr
VHlwZUluZm9GbGFncywgbV9ub2RlLT5vcmlnaW4sIE9wSW5mbyhJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlKSwgRWRnZShtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwgQ2VsbFVzZSkpOwotICAg
ICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4o
ZmFsc2UpKTsKLSAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBoYXZlIGEgbG90IG9mIHN0cmluZyBjb25zdGFudC1mb2xkaW5nIHJ1bGVzIGhlcmUuIEl0IHdv
dWxkIGJlIGdyZWF0IHRvCiAgICAgICAgIC8vIG1vdmUgdGhlc2UgdG8gdGhlIGFic3RyYWN0IGlu
dGVycHJldGVyIG9uY2UgQWJzdHJhY3RWYWx1ZSBjYW4gc3VwcG9ydCBMYXp5SlNWYWx1ZS4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTIwNApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsOCArMjc1LDYgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICBj
YXNlIElzQ29uc3RydWN0b3I6CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgotICAgIGNhc2Ug
Q2hlY2tUeXBlSW5mb0ZsYWdzOgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAg
Y2FzZSBJbnN0YW5jZU9mOgogICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICBjYXNlIERv
dWJsZVJlcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NywxMiArMTQ5Nyw2IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZU9mOgogICAgICAgICAgICAgY29tcGlsZVR5cGVP
ZigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdz
OgotICAgICAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncygpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAgICAgICAgICBj
b21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgICAgICAgICBjb21waWxlSW5zdGFuY2VPZigpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMjcxMyw2NSArMTI3MDcsMjMgQEAgcHJpdmF0ZToKICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKCkKLSAgICB7Ci0gICAgICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5z
dGFuY2VGdW5jdGlvbiA9IG1fbm9kZS0+Y2VsbE9wZXJhbmQoKTsKLSAgICAgICAgQVNTRVJUKGRl
ZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uLT5jZWxsKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZt
KCkpKTsKLQotICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQyKCkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0KLSAgICAgICAgLy8gVW5saWtlIGluIHRoZSBERkcsIHdlIGRvbid0IHdv
cnJ5IGFib3V0IGNsZWFuaW5nIHRoaXMgY29kZSB1cCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2
ZSBwcm92ZW4gdGhlIGhhc0luc3RhbmNlVmFsdWUgaXMgYSBjb25zdGFudCBhcyBCMyBzaG91bGQg
Zml4IGl0IGZvciB1cy4KLQotICAgICAgICBWYWx1ZUZyb21CbG9jayBub3REZWZhdWx0SGFzSW5z
dGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwotICAgICAgICBt
X291dC5icmFuY2gobV9vdXQubm90RXF1YWwoaGFzSW5zdGFuY2UsIGZyb3plblBvaW50ZXIoZGVm
YXVsdEhhc0luc3RhbmNlRnVuY3Rpb24pKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShk
ZWZhdWx0SGFzSW5zdGFuY2UpKTsKLQotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKGRlZmF1bHRIYXNJbnN0YW5jZSwgY29udGludWF0aW9uKTsKLSAgICAgICAg
VmFsdWVGcm9tQmxvY2sgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0
LmFuY2hvcihtX291dC50ZXN0SXNaZXJvMzIoCi0gICAgICAgICAgICBtX291dC5sb2FkOFplcm9F
eHQzMihjb25zdHJ1Y3RvciwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7Ci0g
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGko
SW50MzIsIGltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQsIG5vdERlZmF1bHRIYXNJ
bnN0YW5jZVJlc3VsdCkpOwotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9G
bGFncygpCi0gICAgewotICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRUeXBlSW5m
b0ZsYWdzLCBub1ZhbHVlKCksIG51bGxwdHIsCi0gICAgICAgICAgICBtX291dC50ZXN0SXNaZXJv
MzIoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnR5cGVJbmZvT3BlcmFuZCgpKSkpOwotICAgIH0K
LSAgICAKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKCkKICAgICB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX25vZGU7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworCisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlKTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSB2YWx1ZTsKKyAgICAg
ICAgTFZhbHVlIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZh
bHVlIHByb3RvdHlwZTsKLSAgICAgICAgYm9vbCB2YWx1ZUlzQ2VsbDsKICAgICAgICAgYm9vbCBw
cm90b3R5cGVJc0NlbGw7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlCi0gICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAg
ICAgICAgICAgICBwcm90b3R5cGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICB2YWx1ZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgICAgICBwcm90
b3R5cGVJc0NlbGwgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBw
cm90b3R5cGUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2YWx1ZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSku
aXNUeXBlKFNwZWNDZWxsKTsKICAgICAgICAgICAgIHByb3RvdHlwZUlzQ2VsbCA9IGFic3RyYWN0
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNDZWxsKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEyODAxLDE0ICsxMjc1Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSA/IHBhcmFtcy5ncFNjcmF0Y2goMikgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKLSAgICAgICAg
ICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBpc0NlbGwgPSBqaXQuYnJhbmNoSWZDZWxsKHZhbHVlR1BSKTsKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmJveEJvb2xlYW5QYXlsb2FkKGZhbHNlLCByZXN1bHRHUFIpOwotICAg
ICAgICAgICAgICAgICAgICBkb25lSnVtcCA9IGppdC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlzQ2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUlzQ2VsbCkKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZUdQUikpOwpAQCAt
MTI4MzMsMTQgKzEyNzc3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fR1NzaUpKIG9w
dGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGlu
aygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xv
d1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5j
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRH
UFIsCkBAIC0xMjg1MCw3ICsxMjc5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6
YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQ
UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHZhbHVlR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVH
UFIpLmNhbGwoKTsKQEAgLTEyODY0LDkgKzEyODA2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5r
QnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGRvbmVKdW1w
LmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGRvbmVKdW1wLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBhIGJveGVkIGJv
b2xlYW4uCkBAIC0xMjg3Nyw3ICsxMjgxNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQzKCkpOwogCiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgdmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZSkpKTsKQEAgLTE4OTg3
LDE1ICsxODkyNiwxMSBAQCBwcml2YXRlOgogICAgIAogICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExW
YWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAg
ICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBT
cGVjRnVuY3Rpb24pKQotICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJu
IGlzVHlwZShjZWxsLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIHJldHVybiBpc0NlbGxXaXRo
VHlwZShjZWxsLCBKU1R5cGVSYW5nZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0JvdW5kRnVuY3Rpb25U
eXBlIH0sIFNwZWNGdW5jdGlvbiwgdHlwZSk7CiAgICAgfQogICAgIExWYWx1ZSBpc05vdEZ1bmN0
aW9uKExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAg
ewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWND
ZWxsLCB+U3BlY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAg
IHJldHVybiBpc05vdFR5cGUoY2VsbCwgSlNGdW5jdGlvblR5cGUpOworICAgICAgICByZXR1cm4g
bV9vdXQubG9naWNhbE5vdChpc0Z1bmN0aW9uKGNlbGwsIHR5cGUpKTsKICAgICB9CiAgICAgICAg
ICAgICAKICAgICBMVmFsdWUgaXNFeG90aWNGb3JUeXBlb2YoTFZhbHVlIGNlbGwsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lv
biAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIxLDEzICs2MjEsMTMgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRlcmF0b3JFbgogICAgIHJldHVybiBhcnJheTsKIH0K
IAotc3RhdGljIGJvb2wgY2hlY2tGb3JiaWRkZW5Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90bykKK3N0YXRpYyBib29sIGNo
ZWNrRm9yYmlkZGVuUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiB2YWx1ZSwgSlNPYmplY3QqIHByb3RvKQogewogICAgIGlmICh2YWx1ZSA9PSBwcm90bykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcm90b3R5cGUg
Y2hhaW4gb2YgcHJvdG8gaGFzbid0IGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSB2YWx1ZS4KLSAg
ICByZXR1cm4gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHByb3Rv
LCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwg
cHJvdG8pOwogfQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNl
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAg
LTY5NCw3ICs2OTQsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3Rh
CiAgICAgICAgICAgICBpZiAodmFsdWUuaW5oZXJpdHM8UHJveHlPYmplY3Q+KHZtKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIAotICAgICAgICAg
ICAgaWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
cHJvdG90eXBlKSkKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc09iamVjdCgpICYmIG9iamVjdC0+
aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHZhbHVlKSkpCiAgICAgICAgICAg
ICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgYXJyYXktPmxlbmd0aCgp
LCB2YWx1ZSk7CiAKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShy
ZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzIsOCArOTMyLDIyIEBAIHB1YmxpYzoKICAgICBK
dW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0lu
dChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJ
bnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9Ci0g
ICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJ
ZlR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEZ1
bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwg
SlNGdW5jdGlvblR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0
aW9uVHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9KTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RG
dW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIs
IEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSk7IH0K
KworICAgIHZvaWQgaXNDZWxsV2l0aFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZVJhbmdlIHJh
bmdlLCBHUFJSZWcgZHN0KQorICAgIHsKKyAgICAgICAgaWYgKHJhbmdlLmxhc3QgPT0gcmFuZ2Uu
Zmlyc3QpIHsKKyAgICAgICAgICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIocmFuZ2UuZmlyc3QpLCBk
c3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHJh
bmdlLmxhc3QgPiByYW5nZS5maXJzdCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gc2NyYXRj
aFJlZ2lzdGVyKCk7CisgICAgICAgIGxvYWQ4KEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIo
cmFuZ2UuZmlyc3QpLCBzY3JhdGNoKTsKKyAgICAgICAgY29tcGFyZTMyKEJlbG93T3JFcXVhbCwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCksIGRzdCk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgaXNFbXB0eShHUFJSZWcgZ3ByLCBHUFJSZWcgZHN0KQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5
LDcgKzM2OSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2Yp
Ci0gICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2Zf
Y3VzdG9tKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfZW1wdHkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU3NCw3ICs1NzQsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mX2N1c3RvbShj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfZW1wdHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDM0ICsxMTcs
NiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0
b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3Zl
cnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQotewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3Ry
dWN0b3I7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5t
X2hhc0luc3RhbmNlVmFsdWU7Ci0KLSAgICBlbWl0TG9hZFBheWxvYWQoaGFzSW5zdGFuY2VWYWx1
ZSwgcmVnVDApOwotICAgIC8vIFdlIGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0IFN5bWJvbC5o
YXNJbnN0YW5jZSB3b3VsZCBkby4KLSAgICBKdW1wIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsID0g
ZW1pdEp1bXBJZk5vdEpTQ2VsbChoYXNJbnN0YW5jZVZhbHVlKTsKLSAgICBKdW1wIGN1c3RvbWhh
c0luc3RhbmNlVmFsdWUgPSBicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb24oKSkpOwotCi0gICAgLy8gV2Uga25vdyB0aGF0IGNvbnN0cnVjdG9yIGlzIGFu
IG9iamVjdCBmcm9tIHRoZSB3YXkgYnl0ZWNvZGUgaXMgZW1pdHRlZCBmb3IgaW5zdGFuY2VvZiBl
eHByZXNzaW9ucy4KLSAgICBlbWl0TG9hZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQot
ICAgIC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UnIGkuZS4gdGhlIG9iamVjdCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0
aW9uLgotICAgIHRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCBy
ZWdUMCk7Ci0gICAgSnVtcCBkb25lID0ganVtcCgpOwotCi0gICAgaGFzSW5zdGFuY2VWYWx1ZU5v
dENlbGwubGluayh0aGlzKTsKLSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7
Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluayh0aGlz
KTsKLSAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwotCi19Ci0KIHZvaWQgSklUOjplbWl0
X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+
KCk7CkBAIC0xNTcsOCArMTI5LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25z
dCBJbnN0cgogICAgIGVtaXRMb2FkUGF5bG9hZCh2YWx1ZSwgcmVnVDIpOwogICAgIGVtaXRMb2Fk
UGF5bG9hZChwcm90bywgcmVnVDEpOwogCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2Vs
bHMuIGJhc2VWYWwgbXVzdCBiZSBhIGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9i
eV9pZCBmb3IgU3ltYm9sLmhhc0luc3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbCh2YWx1ZSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAg
ICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKQEAgLTE5NCw5ICsxNjQsOCBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJCiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAg
ICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBlbWl0TG9hZFRhZyh2
YWx1ZSwgcmVnVDApOwogICAgIGVtaXRMb2FkVGFnKHByb3RvLCByZWdUMyk7Ci0gICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVn
VDAsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QxKSk7CisgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIGRzdCwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CiB9CiAKQEAgLTIxMSw5ICsxODAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5z
dGFuY2VvZl9jdXN0b20oCiAgICAgVmlydHVhbFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBi
eXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWU7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEs
IHJlZ1QwKTsKLSAgICBlbWl0TG9hZFBheWxvYWQoY29uc3RydWN0b3IsIHJlZ1QyKTsKLSAgICBl
bWl0TG9hZChoYXNJbnN0YW5jZVZhbHVlLCByZWdUNCwgcmVnVDMpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCByZWdUMiwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJl
Z1QzKSk7CisgICAgZW1pdExvYWQoY29uc3RydWN0b3IsIHJlZ1QzLCByZWdUMik7CisgICAgZW1p
dExvYWQoaGFzSW5zdGFuY2VWYWx1ZSwgcmVnVDUsIHJlZ1Q0KTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNW
YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KSk7CiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KICAgICAKQEAgLTMwNCwxMiArMjczLDExIEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX2NlbGxfd2l0aF90eXBlKGNvbnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X29wZXJhbmQ7Ci0gICAgaW50IHR5cGUgPSBieXRlY29kZS5tX3R5cGU7CiAKICAgICBlbWl0TG9h
ZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMSk7CiAKLSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOworICAg
IGlzQ2VsbFdpdGhUeXBlKHJlZ1QwLCBKU1R5cGVSYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBl
LCBieXRlY29kZS5tX2xhc3RUeXBlIH0sIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDMyICsxMjEs
NiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdChjb25zdCBJCiAgICAgZW1pdFN0
b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfb3Zl
cnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQotewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2U+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBjb25zdHJ1Y3RvciA9IGJ5dGVjb2RlLm1fY29uc3Ry
dWN0b3I7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGhhc0luc3RhbmNlVmFsdWUgPSBieXRlY29kZS5t
X2hhc0luc3RhbmNlVmFsdWU7Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGhhc0luc3Rh
bmNlVmFsdWUsIHJlZ1QwKTsKLQotICAgIC8vIFdlIGRvbid0IGp1bXAgaWYgd2Uga25vdyB3aGF0
IFN5bWJvbC5oYXNJbnN0YW5jZSB3b3VsZCBkby4KLSAgICBKdW1wIGN1c3RvbWhhc0luc3RhbmNl
VmFsdWUgPSBicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24oKSkpOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihjb25zdHJ1Y3RvciwgcmVnVDAp
OwotCi0gICAgLy8gQ2hlY2sgdGhhdCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZScgaS5lLiB0aGUgb2JqZWN0IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQg
ZnVuY3Rpb24uCi0gICAgdGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSksIHJlZ1QwKTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0p
OwotICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKLQotICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUu
bGluayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCBy
ZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwpAQCAtMTU5LDggKzEzMyw2IEBAIHZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHIKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHZhbHVlLCByZWdUMik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm90bywg
cmVnVDEpOwogICAgIAotICAgIC8vIENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFs
IG11c3QgYmUgYSBjZWxsIC0gdGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5
bWJvbC5oYXNJbnN0YW5jZS4KLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDIs
IHZhbHVlKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsK
IAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKApAQCAtMzI2LDEyICsyOTgsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29ucwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciB2
YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKLSAgICBpbnQgdHlwZSA9IGJ5dGVjb2RlLm1fdHlw
ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBKdW1w
IGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAKLSAgICBjb21wYXJlOChFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMih0eXBlKSwgcmVnVDApOworICAgIGlzQ2VsbFdpdGhUeXBlKHJlZ1QwLCBKU1R5cGVSYW5n
ZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5tX2xhc3RUeXBlIH0sIHJlZ1QwKTsK
ICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1bXAg
ZG9uZSA9IGp1bXAoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzI0LDE4ICsyMzI0LDE3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRHZXQKIH0KICNlbmRpZgog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgc2l6
ZV90LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJ
bnN0YW5jZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkN1
c3RvbSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQ29uc3RydWN0b3IsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQ29uc3RydWN0b3IpOwogICAgIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkSGFzSW5zdGFuY2UpOwogCi0gICAgaWYgKGNvbnN0cnVjdG9yLT5oYXNJ
bnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIDE7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGpzSW5zdGFuY2VvZk9wZXJhdG9y
KGdsb2JhbE9iamVjdCwgdmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKTsKIH0K
IAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKQEAgLTI4NjcsMzQg
KzI4NjYsMzIgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hXaQogICAg
IHJldHVybiBKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29w
ZSwgb2JqZWN0KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3Rh
bmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxs
KiB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkUHJvdG8pOwogICAgIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAg
IAotICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBwcm90byk7CisgICAgYm9vbCByZXN1bHQgPSBqc0lzUHJvdG90eXBlT2Yo
Z2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3RvKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBKU0NlbGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8p
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkUHJvdG8pOwogICAgIAotICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90byk7CisgICAgYm9vbCByZXN1
bHQgPSBqc0lzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKLSAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0s
IGNvZGVCbG9jaywgdmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSkpCisgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHZhbHVlLT5zdHJ1Y3R1cmUo
dm0pKSkKICAgICAgICAgcmVwYXRjaEluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IHZhbHVlLCBwcm90bywgKnN0dWJJbmZvLCByZXN1bHQpOwogICAgIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsOCAr
MjcxLDkgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWxldAogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHNpemVfdCwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1c2hXaXRoU2NvcGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIEpTQ2Vs
bCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNl
bGwsIEpTT2JqZWN0KiBvYmplY3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBw
cm90bykpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mT3B0
aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlNDZWxsKiB2YWx1
ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90
bykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9t
LCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
SGFzSW5zdGFuY2UpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZy
YW1lRm9yRm9yd2FyZEFyZ3VtZW50cywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNp
emVGcmFtZUZvclZhcmFyZ3MsIGludDMyX3QsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXR1cEZv
cndhcmRBcmd1bWVudHNGcmFtZSwgQ2FsbEZyYW1lKiwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSk7CkBAIC0zMDMs
NyArMzA0LDYgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FeGNlcAogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FeGNlcHRpb25GdXp6V2l0aENhbGxGcmFt
ZSwgdm9pZCwgKFZNKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblJl
dHJpZXZlQW5kQ2xlYXJFeGNlcHRpb25JZkNhdGNoYWJsZSwgSlNDZWxsKiwgKFZNKikpOwotSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBzaXplX3Qs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKTsKIAogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUFkZCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFs
dWVBZGRQcm9maWxlZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSopKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2
aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxOSwyMSArMTIxOSwxOCBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2
YXRlQnJhbmQoSlNHbG9iYWxPYmplCiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluc3RhbmNlT2YoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVWYWx1
ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNG
b3VuZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCByZXN1bHQ7CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQodmFsdWVWYWx1
ZS5pc0NlbGwoKSk7IC8vIHNob3VsZENvbnNpZGVyQ2FjaGluZyByZWplY3RzIG5vbi1jZWxscy4K
LSAgICAKICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgCiAgICAgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgCi0g
ICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBSZWZQdHI8
QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpOwpAQCAtMTI3OSwxMSArMTI3
NiwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiB9CiAKIHZv
aWQgcmVwYXRjaEluc3RhbmNlT2YoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5
cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0NlbGwqIHZhbHVlLCBKU1Zh
bHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2Fz
Rm91bmQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwotICAgIGlmICh0cnlDYWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZh
bHVlVmFsdWUsIHByb3RvdHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9u
Q2FjaGUpCisgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgdmFsdWUsIHByb3RvdHlwZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hl
KQogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJh
dGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgcmVwYXRjaElu
QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmwKIHZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgYm9vbCB3YXNGb3VuZCwgIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVj
a1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFBy
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0
dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVw
YXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsK
K3ZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU0Nl
bGwqIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdh
c0ZvdW5kKTsKIHZvaWQgbGlua01vbm9tb3JwaGljQ2FsbChWTSYsIENhbGxGcmFtZSosIENhbGxM
aW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lkIGxpbmtEaXJlY3RDYWxsKENhbGxGcmFtZSosIENh
bGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPik7CiB2b2lkIGxpbmtTbG93Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsMjkgKzYwMywzNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9i
amVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHAp
KTsKIH0KIAorI2lmIENPTVBJTEVSKE1TVkMpCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXNfY2VsbF93aXRoX3R5cGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX29wZXJhbmQpOworICAgIGlmICghdmFs
dWUuaXNDZWxsKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oZmFsc2UpKTsKKyAg
ICBKU1R5cGVSYW5nZSByYW5nZSB7IGJ5dGVjb2RlLm1fZmlyc3RUeXBlLCBieXRlY29kZS5tX2xh
c3RUeXBlIH07CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihyYW5nZS5jb250YWlucyh2YWx1
ZS5hc0NlbGwoKS0+dHlwZSgpKSkpOworfQorI2VuZGlmCisKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9pbnN0YW5jZW9mKQogewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2Y+KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3Rv
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvdG90eXBlKTsKLSAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgcHJvdG8pKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzUHJv
dG90eXBlT2YoZ2xvYmFsT2JqZWN0LCBwcm90bywgYXNPYmplY3QodmFsdWUpKSkpOwogfQogCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKLQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbnN0YW5jZW9m
Q3VzdG9tPigpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX2NvbnN0cnVjdG9yKTsKICAgICBKU1ZhbHVlIGhhc0luc3RhbmNl
VmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9oYXNJbnN0YW5jZVZhbHVl
KTsKLQotICAgIEFTU0VSVChjb25zdHJ1Y3Rvci5pc09iamVjdCgpKTsKLSAgICBBU1NFUlQoaGFz
SW5zdGFuY2VWYWx1ZSAhPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uKCkgfHwgIWNvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5zdHJ1Y3R1cmUodm0p
LT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0KLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+aGFzSW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpOwotICAgIExMSU5UX1JF
VFVSTihyZXN1bHQpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJbnN0YW5jZW9mT3Bl
cmF0b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUp
KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lkKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2FycmF5KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2FycmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25ld19yZWdleHApOworI2lmIENPTVBJTEVSKE1TVkMpCitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2lzX2NlbGxfd2l0aF90eXBlKTsKKyNlbmRpZgogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NiwzNSAr
MTI4Niw2IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAgICBk
aXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwgT3BP
dmVycmlkZXNIYXNJbnN0YW5jZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZ2V0
KG1fZHN0LCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
Ci0KLSAgICAjIEZpcnN0IGNoZWNrIGlmIGhhc0luc3RhbmNlVmFsdWUgaXMgdGhlIG9uZSBvbiBG
dW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXQotICAgIGdldChtX2hhc0luc3Rh
bmNlVmFsdWUsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQw
LCBDZWxsVGFnLCB0MiwgLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwpCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbAotCi0gICAgIyBXZSBk
b24ndCBuZWVkIGhhc0luc3RhbmNlVmFsdWUncyB0YWcgcmVnaXN0ZXIgYW55bW9yZS4KLSAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QxXSwgdDEKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9mdW5jdGlvblByb3RvSGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0MV0sIHQxCi0gICAgYmluZXEgdDEsIHQyLCAub3BPdmVy
cmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90RGVmYXVsdAotCi0gICAgIyBXZSBrbm93IHRoZSBjb25z
dHJ1Y3RvciBpcyBhIGNlbGwuCi0gICAgZ2V0KG1fY29uc3RydWN0b3IsIHQwKQotICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHNpemUsIHQwLCB0MSkKLSAgICB0Ynog
SlNDZWxsOjptX2ZsYWdzW3QxXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgdDAKLSAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi0K
LS5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsOgotLm9wT3ZlcnJpZGVzaGFzSW5z
dGFuY2VWYWx1ZU5vdERlZmF1bHQ6Ci0gICAgc3RvcmVpIDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
ZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAg
ICBnZXQobV9vcGVyYW5kLCB0MSkKQEAgLTEzNjYsMTQgKzEzMzcsMjEgQEAgZW5kKQogCiAKIGxs
aW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQoraWYgWDg2X1dJTgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX2NlbGxfd2l0aF90eXBlKQorICAgIGRpc3BhdGNo
KCkKK2Vsc2UKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MCwgdDMpCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5ub3RDZWxsQ2Fz
ZQotICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKLSAgICBjYmVx
IEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCi0gICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQxKQor
ICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV9maXJzdFR5cGUsIHQwKQorICAgIGJi
YiBKU0NlbGw6Om1fdHlwZVt0M10sIHQwLCAubm90Q2VsbENhc2UKKyAgICBnZXR1KHNpemUsIE9w
SXNDZWxsV2l0aFR5cGUsIG1fbGFzdFR5cGUsIHQyKQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0
M10sIHQyLCAubm90Q2VsbENhc2UKKyAgICByZXR1cm4oQm9vbGVhblRhZywgMSkKIC5ub3RDZWxs
Q2FzZToKICAgICByZXR1cm4oQm9vbGVhblRhZywgMCkKK2VuZAogZW5kKQogCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTM0NiwyOSArMTM0
Niw2IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKIGVuZCkKIAog
Ci1sbGludE9wKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIE9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX2RzdCwgdDMpCi0KLSAg
ICBnZXQobV9oYXNJbnN0YW5jZVZhbHVlLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0Ml0sIHQyCi0gICAg
YnFuZXEgdDAsIHQyLCAub3BPdmVycmlkZXNIYXNJbnN0YW5jZU5vdERlZmF1bHRTeW1ib2wKLQot
ICAgIGdldChtX2NvbnN0cnVjdG9yLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQxLCB0MCkKLSAgICB0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICBzdG9yZXEgdDEs
IFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQotLm9wT3ZlcnJpZGVzSGFzSW5zdGFuY2VO
b3REZWZhdWx0U3ltYm9sOgotICAgIHN0b3JlcSBWYWx1ZVRydWUsIFtjZnIsIHQzLCA4XQotICAg
IGRpc3BhdGNoKCkKLWVuZCkKLQotCiBsbGludE9wV2l0aFJldHVybihvcF9pc19lbXB0eSwgT3BJ
c0VtcHR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29w
ZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQpAQCAt
MTQzOSwxNSArMTQxNiwyMSBAQCBlbHNlCiBlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
Y2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQw
KQoraWYgWDg2XzY0X1dJTgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX2Nl
bGxfd2l0aF90eXBlKQorICAgIGRpc3BhdGNoKCkKK2Vsc2UKICAgICBnZXQobV9vcGVyYW5kLCB0
MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MykKICAgICBidHFueiB0
Mywgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDNd
LCB0MCwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICByZXR1cm4odDEpCisgICAgZ2V0
dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAgYmJiIEpTQ2Vs
bDo6bV90eXBlW3QzXSwgdDAsIC5ub3RDZWxsQ2FzZQorICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxX
aXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDIs
IC5ub3RDZWxsQ2FzZQorICAgIHJldHVybihWYWx1ZVRydWUpCiAubm90Q2VsbENhc2U6CiAgICAg
cmV0dXJuKFZhbHVlRmFsc2UpCitlbmQKIGVuZCkKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAy
ODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNiBAQCBjb25zdCBOdW1iZXJPZlR5
cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25z
dCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29uc3RleHByIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSBjb25zdGV4cHIgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29uc3QgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZM
aW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZQogCiAjIEJ5dGVj
b2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw2IEBAIHN0
cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1F
VEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0
eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0
eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgPSBib29s
ICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgQ3VzdG9tSGFz
SW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFuY2Up
OwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wpOwogICAgIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9E
X1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5KTsKIApAQCAtMTU1LDcgKzE1Miw2IEBAIHN0
cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6
OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmN1c3Rv
bUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5LCBc
CiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgwMDE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRSgKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uUHJvdG90eXBlKSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VTeW1ib2wpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAog
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlv
bi1wcm90b3R5cGUtb2JqZWN0CkBAIC02MCw3ICs2MSw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5
cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVD
YWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5jdGlv
blByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgKmhhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFz
SW5zdGFuY2VDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAqaGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAx
LCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0iX3MsIGZ1bmN0aW9uUHJvdG9GdW5jSGFzSW5zdGFuY2VT
eW1ib2wpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KICAgICAKQEAgLTk5LDQgKzEwMCwxNCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1CiAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY0hhc0luc3RhbmNlU3ltYm9sLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpOworCisgICAgYm9vbCByZXN1bHQgPSBhc09iamVjdCh0aGlzVmFsdWUpLT5kZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0dldENhbGxEYXRhOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvCiAK
ICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwotICAgICAgICBBU1NFUlQoIWNhbGxlZS0+dGVt
cGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBwcm90b3R5cGVgIHdoaWNo
IGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICAgICAg
Ym9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgICAgICBib29sIGhhc0luc3RhbmNlID0g
Y2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpAQCAtMTA2LDEw
ICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1CiAgICAg
aWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKIAotICAgIEFT
U0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0p
KTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlz
IGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCi0gICAgQVNTRVJUKHBy
b3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgIGJvb2wgaGFz
SW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAg
ICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxOSArMTQ0LDYgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DbwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0
aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7CiB9CiAKLUpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkp
KTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc0luc3RhbmNlQm91bmRGdW5jdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
LXsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5j
dGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpTVmFsdWUgdmFs
dWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9uKCktPmhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7Ci19Ci0KIGlubGluZSBTdHJ1Y3R1cmUqIGdl
dEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEwLDExICsxOTcsNiBAQCBKU0JvdW5kRnVuY3Rpb24q
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlCiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1ib29s
IEpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0lu
c3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOwotfQotCiBKU0JvdW5kRnVuY3Rpb246OkpTQm91
bmRGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFy
Z2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzLCBKU1N0cmluZyogbmFtZU1heUJlTnVsbCwgZG91YmxlIGxlbmd0aCkKICAgICA6IEJh
c2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJn
ZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMjgwMDE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDE4ICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwpOwotSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ2FsbCk7Ci1KU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNvbnN0cnVjdCk7Ci1KU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5jdGlvbik7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0KIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24g
QmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKLSAgICBz
dGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CkBAIC00OSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNCb3VuZEZ1
bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3Ms
IGRvdWJsZSBsZW5ndGgsIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsKTsKLSAgICAKLSAgICBzdGF0
aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24oKSB7IHJldHVybiBtX3Rhcmdl
dEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2Jv
dW5kVGhpcy5nZXQoKTsgfQpAQCAtNzEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQm91bmRGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsgCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZU
YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rpb24s
IG1fdGFyZ2V0RnVuY3Rpb24pOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3Mg
SlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdAogCiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3Rh
bmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDEwIEBAIGlu
bGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQogLy8gVGhlIGZpcnN0IGFuZCBsYXN0IEpTVHlw
ZSBhcmUgaW5jbHVzaXZlCiBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIGJvb2wgY29udGFpbnMo
SlNUeXBlIHR5cGUpIGNvbnN0IHsgcmV0dXJuIGZpcnN0IDw9IHR5cGUgJiYgdHlwZSA8PSBsYXN0
OyB9CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IHsgb3V0LnByaW50KCJK
U1R5cGVSYW5nZSB7ICIsIGZpcnN0LCAiLCAiLCBsYXN0LCAiIH0iKTsgfQorCisgICAgc3RhdGlj
IEpTVHlwZVJhbmdlIGZyb21CaXRzKHVpbnQxNl90IGJpdHMpIHsgcmV0dXJuIEpTVHlwZVJhbmdl
IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihiaXRzID4+IDgpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KGJp
dHMgJiAweGZmKSB9OyB9CisgICAgdWludDE2X3QgcmF3Qml0cygpIGNvbnN0IHsgcmV0dXJuIChz
dGF0aWNfY2FzdDx1aW50OF90PihmaXJzdCkgPDwgOCkgfCBzdGF0aWNfY2FzdDx1aW50OF90Pihs
YXN0KTsgfQogCiAgICAgSlNUeXBlIGZpcnN0OwogICAgIEpTVHlwZSBsYXN0OwpAQCAtNzEsNyAr
NzUsNyBAQCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1hY3JvKEpTU3RyaW5nSXRlcmF0b3Is
IEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5
cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0T2JqZWN0VHlw
ZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlLCBK
U1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAotICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6
SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKKyAgICBtYWNybyhKU0Z1
bmN0aW9uLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTQm91bmRGdW5jdGlvblR5
cGUpIFwKICAgICBtYWNybyhJbnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVybmFsRnVuY3Rp
b25UeXBlLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhOdWxs
U2V0dGVyRnVuY3Rpb24sIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSwgSlNUeXBlOjpO
dWxsU2V0dGVyRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNUeXBlOjpBcnJh
eVR5cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsMTIg
KzIxNSw2IEBAIGNvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKFZNJiB2bSkgY28KICAgICBy
ZXR1cm4gY2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lOwogfQogCi1ib29sIEpTQ2VsbDo6Y3VzdG9t
SGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJv
b2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKQogewogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wgaXNDdXN0b21H
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKKyAgICBib29s
IGlzSlNGdW5jdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYpOwogICAgIGJv
b2wgaXNDb25zdHJ1Y3RvcihWTSYpOwogICAgIHRlbXBsYXRlPENvbmN1cnJlbmN5PiBUcmlTdGF0
ZSBpc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KFZNJik7CkBAIC0yNTMsNyArMjU0LDYgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJvdG90
eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKTsKICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBj
dXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyODAwMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5
KCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlIHx8
IG1fdHlwZSA9PSBQcm94eU9iamVjdFR5cGU7CiB9CiAKK2lubGluZSBib29sIEpTQ2VsbDo6aXNK
U0Z1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEpTRnVuY3Rpb25UeXBl
IHx8IG1fdHlwZSA9PSBKU0JvdW5kRnVuY3Rpb25UeXBlOworfQorCiAvLyBGSVhNRTogQ29uc2lk
ZXIgbWFraW5nIGdldENhbGxEYXRhIGNvbmN1cnJlbmN5LXNhZmUgb25jZSBOUEFQSSBzdXBwb3J0
IGlzIHJlbW92ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODAxCiB0ZW1wbGF0ZTxDb25jdXJyZW5jeSBjb25jdXJyZW5jeT4KQEAgLTI1NCw3ICsyNTks
NyBAQCBBTFdBWVNfSU5MSU5FIFRyaVN0YXRlIEpTQ2VsbDo6aXNDYWxsYWJsCiB7CiAgICAgaWYg
KCFpc09iamVjdCgpKQogICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwotICAgIGlmICh0
eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNGdW5jdGlvbigpKQogICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgaWYgKGlubGluZVR5cGVGbGFncygpICYgT3Zl
cnJpZGVzR2V0Q2FsbERhdGEpIHsKICAgICAgICAgaWYgY29uc3RleHByIChjb25jdXJyZW5jeSA9
PSBDb25jdXJyZW5jeTo6TWFpblRocmVhZCkKQEAgLTI3Nyw3ICsyODIsNyBAQCBpbmxpbmUgVHJp
U3RhdGUgSlNDZWxsOjppc0NvbnN0cnVjdG9yV2l0CiAgICAgICAgIHJldHVybiAobWV0aG9kVGFi
bGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgLy8gV2Uga25vdyB0
aGF0IGJvdGggZ2V0Q29uc3RydWN0RGF0YSBvZiBib3RoIHR5cGVzIGFyZSBjb25jdXJyZW5jeSBh
d2FyZS4gUGx1cywgZGVyaXZlZCBjbGFzc2VzIG9mIEpTRnVuY3Rpb24gYW5kIEludGVybmFsRnVu
Y3Rpb24KICAgICAvLyBuZXZlciBvdmVycmlkZSBnZXRDb25zdHJ1Y3REYXRhICh0aGlzIGlzIGVu
c3VyZWQgYnkgQVNTRVJUIGluIEpTRnVuY3Rpb24gYW5kIEludGVybmFsRnVuY3Rpb24pLgotICAg
IGlmICh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUgfHwgdHlwZSgpID09IEludGVybmFsRnVuY3Rp
b25UeXBlKQorICAgIGlmIChpc0pTRnVuY3Rpb24oKSB8fCB0eXBlKCkgPT0gSW50ZXJuYWxGdW5j
dGlvblR5cGUpCiAgICAgICAgIHJldHVybiAobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3RE
YXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpID8gVHJpU3RhdGU6OlRydWUg
OiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDYgQEAgSlNGdW5jdGlvbjo6
SlNGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZQogICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQogewotICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFu
dHMoKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmpl
Y3QpOwogfQogCkBAIC0xMTIsNyArMTExLDYgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGhpcykpOwotICAgIEFTU0VSVCh0eXBl
KCkgPT0gSlNGdW5jdGlvblR5cGUpOwogICAgIC8vIEpTQ2VsbDo6e2dldENhbGxEYXRhLGdldENv
bnN0cnVjdERhdGF9IHJlbGllcyBvbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMuCiAgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0
Q29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEg
PT0gJkpTRnVuY3Rpb246OmdldENhbGxEYXRhKTsKQEAgLTEyMiw3ICsxMjAsNiBAQCB2b2lkIEpT
RnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgQVNTRVJU
KHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CiAgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERhdGEs
Z2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4KICAg
ICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9u
OjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxs
RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAtOTA2LDE2ICs5MDMsNCBAQCBK
U0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyCiAgICAgcmV0dXJuIFByb3Bl
cnR5U3RhdHVzOjpSZWlmaWVkOwogfQogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLXZvaWQgSlNGdW5j
dGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpCi17Ci0gICAgLy8gSWYgeW91IGNo
YW5nZSB0aGlzLCB5b3UnbGwgbmVlZCB0byB1cGRhdGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZv
SW5oZXJpdGFuY2UuCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJbmZvKHZtKCkp
OwotICAgIGlmICghKGlubGluZVR5cGVGbGFncygpICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8gPT0gSlNCb3VuZEZ1bmN0aW9uOjpp
bmZvKCkpOwotICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mbyAhPSBKU0JvdW5k
RnVuY3Rpb246OmluZm8oKSk7Ci19Ci0jZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKLQogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxMiArMjEyLDYgQEAgcHJpdmF0
ZToKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlOYW1lSWZOZWVkZWQoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5Qm91
bmROYW1lSWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygp
OwotI2Vsc2UKLSAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKSB7IH0KLSNl
bmRpZgotCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHVp
bnRwdHJfdCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAyODAwMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKFZNJiB2bSwgRnUKICAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X2V4ZWN1dGFibGVPclJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUp
KQogewotICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKIH0KIAogaW5saW5lIEZ1
bmN0aW9uRXhlY3V0YWJsZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDYgKzc4MSw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9KTsKIAogICAgIG1fZnVuY3Rpb25Q
cm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5
bWJvbEZ1bmN0aW9uKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9s
KV0uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKKwogICAgIG1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewogICAgICAgICAgICAgSlNGdW5jdGlvbiog
dGhyb3dlciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKQEAgLTkzMSwx
MyArOTMzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIH0p
OwogICAgIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewotICAgICAgICAgICAgYm9vbCBpc0Nh
bGxhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBpbml0LnNldChQcm94eU9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpLCBpc0NhbGxhYmxlKSk7Ci0g
ICAgICAgIH0pOwotICAgIG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS5pbml0TGF0ZXIo
Ci0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAg
ICAgICAgICBib29sIGlzQ2FsbGFibGUgPSB0cnVlOwotICAgICAgICAgICAgaW5pdC5zZXQoUHJv
eHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSwg
aXNDYWxsYWJsZSkpOworICAgICAgICAgICAgaW5pdC5zZXQoUHJveHlPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSkpOwogICAgICAgICB9KTsKICAg
ICBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKQEAgLTEzNTUsMTUgKzEzNTEsNiBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjCiAgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheVN1
YmFycmF5Q3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpKTsKICAgICAgICAgfSk7Ci0gICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
aXNCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBpc0Jv
dW5kRnVuY3Rpb24pKTsKLSAgICAgICAgfSk7Ci0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aGFzSW5zdGFuY2VCb3VuZEZ1bmN0
aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Ci0g
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pKTsKLSAgICAgICAgfSk7Ci0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW5zdGFuY2VPZildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKSk7Ci0g
ICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwg
U3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKSk7CiAgICAgICAgIH0pOwpAQCAtMjE4NSw3
ICsyMTcyLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSgogICAg
IHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7Ci0gICAgdGhpc09iamVjdC0+bV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNyAr
NDI1LDYgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1
Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2Fs
bGFibGVQcm94eU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9wcm94eVJldm9rZVN0cnVjdHVyZTsKICAgICBMYXp5Q2xhc3NTdHJ1
Y3R1cmUgbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKIApAQCAtODQ3LDcgKzg0Niw2IEBA
IHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBw
cm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBjYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlSZXZva2VTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKTsgfQogICAg
IFN0cnVjdHVyZSogb3JpZ2luYWxSZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhDb250aWd1
b3VzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBBbmFseXplci5oIgogI2luY2x1ZGUgIkluZGV4
aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaCIKQEAgLTY0LDYgKzY4LDcgQEAgY29uc3QgQVNDSUlMaXRlcmFs
IFVuY29uZmlndXJhYmxlUHJvcGVydAogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxl
UHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyB9
OwogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVtZXJh
YmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0
byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJf
cyB9OworY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJv
ciB7ICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3Rv
dHlwZSBwcm9wZXJ0eS4iX3MgfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTT2JqZWN0OjpzX2luZm8g
PSB7ICJPYmplY3QiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTT2JqZWN0KSB9OwogCkBAIC0yMzQ2LDEyICsyMzUxLDQzIEBAIHN0ZDo6b3B0aW9uYWw8
U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hFbnQKICAgICByZXR1cm4gc3RydWN0dXJlKHZtKS0+Zmlu
ZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hMjYyLyNzZWMtaW5zdGFuY2VvZm9wZXJhdG9yCitib29sIEpTT2JqZWN0OjpoYXNJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNv
ZnQoKSkpIHsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0
YW5jZVN5bWJvbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKworICAgIGlmIChoYXNJbnN0YW5jZVZhbHVlID09IGdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKKworICAgIHJl
dHVybiBoYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKTsK
K30KKworc3RhdGljIGlubGluZSBib29sIGlzTm9uQ2FsbGFibGVBUElPYmplY3RUaGF0UGVyZm9y
bXNEZWZhdWx0SGFzSW5zdGFuY2UoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECisgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNDYWxsYmFja09i
amVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Pih2bSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisgICAgcmV0dXJuIG9iamVjdC0+aW5oZXJpdHM8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2
bSk7Cit9CisKIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKIHsKKyAg
ICBBU1NFUlQoaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlm
ICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGhhc0luc3RhbmNlVmFs
dWUgIT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bigpKSB7CisgICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEodm0sIGhhc0luc3RhbmNl
VmFsdWUpOwogICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5j
dGlvbihnbG9iYWxPYmplY3QsIHRoaXMpKTsKQEAgLTIzNjYsNjggKzI0MDIsNTYgQEAgYm9vbCBK
U09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplYwogICAgICAgICByZXR1cm4gcmVzdWx0
LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgIH0KIAotICAgIFR5cGVJbmZvIGluZm8gPSBz
dHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwotICAgIGlmIChpbmZvLmltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UoKSkgewotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGdldChnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcHJvdG90eXBlKSk7Ci0g
ICAgfQotICAgIGlmIChpbmZvLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKSB7Ci0gICAgICAgIGlm
IChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGdsb2JhbE9iamVjdCwg
dmFsdWUpKTsKLSAgICB9CisgICAgaWYgKGlzQ2FsbGFibGUodm0pIHx8IGlzTm9uQ2FsbGFibGVB
UElPYmplY3RUaGF0UGVyZm9ybXNEZWZhdWx0SGFzSW5zdGFuY2Uodm0sIHRoaXMpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7CiAKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCB0aGlzKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNJ
bnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeWhhc2luc3RhbmNlCitib29sIEpT
T2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgaGFzSW5z
dGFuY2VWYWx1ZSA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3Rh
bmNlU3ltYm9sKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFs
dWUsIGhhc0luc3RhbmNlVmFsdWUpKTsKLX0KKyAgICBpZiAoIWlzQ2FsbGFibGUodm0pICYmICFp
c05vbkNhbGxhYmxlQVBJT2JqZWN0VGhhdFBlcmZvcm1zRGVmYXVsdEhhc0luc3RhbmNlKHZtLCB0
aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFz
SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZSBwcm90bykKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmIChpbmhlcml0czxKU0Jv
dW5kRnVuY3Rpb24+KHZtKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhpcyktPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNl
KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIAogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgSlNWYWx1ZSBwcm90byA9IGdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOworCiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBv
biBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBJbnN0YW5jZW9mUHJvdG90
eXBlTm90T2JqZWN0RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGFzT2JqZWN0KHByb3RvKS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFz
T2JqZWN0KHZhbHVlKSkpOworfQorCitib29sIEpTT2JqZWN0Ojppc1Byb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFs
dWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIW9iamVjdFZhbHVl
LmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9
IGFzT2JqZWN0KG9iamVjdFZhbHVlKTsKLSAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKKyAg
ICAgICAgaWYgKG9iamVjdCA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVl
LCBwcm90bykpKTsKLX0KLQogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTaWduYXR1cmU7CiAK
IGlubGluZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAo
dmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUpKQorICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+aXNKU0Z1bmN0
aW9uKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KQEAgLTgyLDYgKzgyLDcgQEAgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFT
Q0lJTGl0ZQogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNv
bmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJhYmlsaXR5RXJyb3I7CiBleHRlcm4gSlNf
RVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlD
aGFuZ2VFbnVtZXJhYmlsaXR5RXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
QVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9y
OworZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBJbnN0YW5jZW9m
UHJvdG90eXBlTm90T2JqZWN0RXJyb3I7CiAKIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKQEAgLTY3
NSw3ICs2NzYsOCBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0lu
c3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5j
ZVZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0luc3RhbmNlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZGVmYXVsdEhhc0luc3RhbmNlKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVQcm9wZXJ0eSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzUHJvdG90eXBlT2YoSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhpbXVtUHJvdG90eXBlQ2hhaW5EZXB0aCA9IDQwMDAwOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CkBAIC0xMjQwLDggKzEyNDIsNiBAQCBwcml2
YXRlOgogICAgIH0KIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04ob2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKTsKLQogaW5saW5lIEpTRmluYWxPYmpl
Y3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7CiAgICAgSlNGaW5hbE9iamVjdCog
ZmluYWxPYmplY3QgPSBuZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NDAsNyArNTQwLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eQog
CiBBTFdBWVNfSU5MSU5FIENhbGxEYXRhIGdldENhbGxEYXRhKFZNJiB2bSwgSlNDZWxsKiBjZWxs
KQogewotICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgaWYgKGNl
bGwtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q2FsbERh
dGEoY2VsbCk7CiAgICAgQ2FsbERhdGEgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5n
ZXRDYWxsRGF0YShjZWxsKTsKICAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0gQ2FsbERhdGE6OlR5
cGU6Ok5vbmUgfHwgY2VsbC0+aXNWYWxpZENhbGxlZSgpKTsKQEAgLTU1OSw3ICs1NTksNyBAQCBp
bmxpbmUgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShWTSYgdm0sCiAgICAgaWYgKCF2YWx1ZS5p
c0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5h
c0NlbGwoKTsKLSAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlm
IChjZWxsLT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmdldENv
bnN0cnVjdERhdGEoY2VsbCk7CiAgICAgQ2FsbERhdGEgcmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwpOwogICAgIEFTU0VSVChyZXN1bHQudHlwZSA9
PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSB8fCBjZWxsLT5pc1ZhbGlkQ2FsbGVlKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCShyZXZpc2lvbiAyODAwMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw2ICs2Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBKU0MKICAgICBDQVNFKEZpbmFsT2JqZWN0VHlwZSkKICAgICBDQVNFKEpTQ2FsbGVlVHlwZSkK
ICAgICBDQVNFKEpTRnVuY3Rpb25UeXBlKQorICAgIENBU0UoSlNCb3VuZEZ1bmN0aW9uVHlwZSkK
ICAgICBDQVNFKEludGVybmFsRnVuY3Rpb25UeXBlKQogICAgIENBU0UoTnVsbFNldHRlckZ1bmN0
aW9uVHlwZSkKICAgICBDQVNFKEJvb2xlYW5PYmplY3RUeXBlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDI4MDAxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1OSwx
MCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIE9iamVjdFR5cGUsCiAgICAgRmluYWxP
YmplY3RUeXBlLAogICAgIEpTQ2FsbGVlVHlwZSwKLSAgICBKU0Z1bmN0aW9uVHlwZSwKICAgICBJ
bnRlcm5hbEZ1bmN0aW9uVHlwZSwKICAgICBOdWxsU2V0dGVyRnVuY3Rpb25UeXBlLAorICAgIEpT
RnVuY3Rpb25UeXBlLAorICAgIEpTQm91bmRGdW5jdGlvblR5cGUsCiAgICAgQm9vbGVhbk9iamVj
dFR5cGUsCiAgICAgTnVtYmVyT2JqZWN0VHlwZSwKICAgICBFcnJvckluc3RhbmNlVHlwZSwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9u
IDI4MDAxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAvLyBJbmxpbmUgZmxhZ3MuCiAKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8vIE5lZWQg
dGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1lbnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwgd2hpY2gg
bWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxsRGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJlIGNhbGxh
YmxlIHNpbmNlIGdldENhbGxEYXRhIGNhbiBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7
CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8g
SWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRoaXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiAn
dGhpcycuIE5vbi1vYmplY3QgY2VsbHMgdGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZlIHRoaXMg
c2V0IGFzIGRvIHNvbWUgZXhvdGljIG9iamVjdHMuCkBAIC00Nyw3ICs0Niw2IEBAIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgVHlwZUluZm9QZXJDZWwKIAogLy8gT3V0IG9mIGxpbmUgZmxhZ3Mu
CiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8
PCA4Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5h
bWVzID0gMSA8PCA5Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25T
cGVjaWFsUHJvcGVydHlOYW1lcyA9IDEgPDwgMTA7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgMTE7CkBAIC05MCw4ICs4OCw2IEBAIHB1
YmxpYzoKIAogICAgIHVuc2lnbmVkIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2ZsYWdzMikgPDwgbnVtYmVyT2ZJbmxpbmVCaXRzKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2ZsYWdzKTsgfQogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKTsg
fQotICAgIGJvb2wgaW1wbGVtZW50c0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRP
bkZsYWdzMjxJbXBsZW1lbnRzSGFzSW5zdGFuY2U+KCk7IH0KLSAgICBib29sIGltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2U+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldENhbGxEYXRh
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxPdmVycmlkZXNHZXRDYWxsRGF0YT4oKTsg
fQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4g
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KGlubGluZVR5cGVGbGFncygpKTsgfQogICAgIGJv
b2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8
SGFzU3RhdGljUHJvcGVydHlUYWJsZT4oKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyODAwMTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIE51
bWJlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGlj
OgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxl
bWVudHNIYXNJbnN0YW5jZSB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAogICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVt
YmVyUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjgw
MDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jVmFsdWVPZik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9w
ZXJ0eSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFBy
b3RvRnVuY0RlZmluZUdldHRlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihv
YmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04ob2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKTsKQEAgLTYzLDcgKzYyLDcgQEAgdm9p
ZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YsIG9iamVj
dFByb3RvRnVuY1ZhbHVlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAwKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duUHJvcGVydHksIG9iamVjdFBy
b3RvRnVuY0hhc093blByb3BlcnR5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSwgSGFzT3duUHJvcGVydHlJbnRyaW5zaWMpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnByb3Bl
cnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwotICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNQcm90
b3R5cGVPZiwgb2JqZWN0UHJvdG90eXBlSXNQcm90b3R5cGVPZkNvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2Rl
ZmluZUdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZVNl
dHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdldHRlcl9f
LCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKQEAgLTEyNywzMyArMTI2LDYgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KGdsb2JhbE9iamVj
dCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
b2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
aWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0KLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhdGhpc09iaik7Ci0gICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKLSAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7Ci0KLSAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgaWYgKCF2LmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICBpZiAodiA9PSB0aGlzT2Jq
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOwot
ICAgICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgfQotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5l
R2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDI4MDAxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNiArNzcsMzUgQEAgQUxXQVlTX0lOTElORSBib29sIGpzVHlwZW9mSXNGdW5jdGlv
bihKUwogICAgIHJldHVybiByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWU7CiB9CiAKK0FMV0FZU19J
TkxJTkUgYm9vbCBqc0lzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUsIEpTT2JqZWN0KiB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNPYmplY3QocHJvdG90eXBlKS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmpl
Y3QsIHZhbHVlKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBqc0luc3RhbmNlb2ZPcGVyYXRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGNv
bnN0cnVjdG9yLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJpZ2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5j
ZW9mIGlzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBoYXNJbnN0YW5jZVZhbHVlCisgICAg
ICAgID8gYXNPYmplY3QoY29uc3RydWN0b3IpLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZh
bHVlLCBoYXNJbnN0YW5jZVZhbHVlKQorICAgICAgICA6IGFzT2JqZWN0KGNvbnN0cnVjdG9yKS0+
aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNT
dHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdTEsIEpTU3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNw
cAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMiArNDgsNiBAQCBQcm94eU9iamVj
dDo6UHJveHlPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1CiB7CiB9CiAKLVN0cnVjdHVyZSogUHJveHlP
YmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHRhcmdldCkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
cmV0dXJuIHRhcmdldC5pc0NhbGxhYmxlKHZtKSA/IGdsb2JhbE9iamVjdC0+Y2FsbGFibGVQcm94
eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVyZSgp
OwotfQotCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzEsMTEgKzY1
LDYgQEAgdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLAogICAgIEpTT2Jq
ZWN0KiB0YXJnZXRBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCk7CiAKICAgICBt
X2lzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDYWxsYWJsZSh2bSk7Ci0gICAgaWYgKG1f
aXNDYWxsYWJsZSkgewotICAgICAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZtKS0+dHlw
ZUluZm8oKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSAmJiBpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAgfQotCiAg
ICAgbV9pc0NvbnN0cnVjdGlibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDb25zdHJ1Y3Rvcih2bSk7
CiAKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIHRhcmdldEFzT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkocmV2aXNpb24gMjgw
MDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJveHlP
YmplY3QqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdl
dCwgSlNWYWx1ZSBoYW5kbGVyKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBQcm94eU9iamVjdDo6c3Ry
dWN0dXJlRm9yVGFyZ2V0KGdsb2JhbE9iamVjdCwgdGFyZ2V0KTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3RydWN0dXJlKCk7CiAgICAg
ICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5
T2JqZWN0Pih2bS5oZWFwKSkgUHJveHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHBy
b3h5LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwog
ICAgICAgICByZXR1cm4gcHJveHk7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUsIGJvb2wgaXNDYWxsYWJsZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gU3RydWN0dXJlRmxh
Z3M7Ci0gICAgICAgIGlmIChpc0NhbGxhYmxlKQotICAgICAgICAgICAgZmxhZ3MgfD0gKEltcGxl
bWVudHNIYXNJbnN0YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpOwotICAgICAg
ICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oUHJveHlPYmplY3RUeXBlLCBmbGFncyksIGluZm8oKSwgTm9u
QXJyYXkgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIFN0cnVjdHVyZSogcmVz
dWx0ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhQcm94eU9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSB8
IE1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3Vs
dC0+Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZt
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03Nyw3ICs3NCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJveHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUq
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHRhcmdldCk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUz
NSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWQKICAgICAgICAg
ICAgICAgICBtX2xpdmVDZWxsUG9pbnRlcnMuYWRkKGNhbGxlZSk7CiAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICBpZiAoY2FsbGVlQ2VsbC0+dHlwZSgpICE9IEpTRnVuY3Rpb25UeXBlKSB7
CisgICAgICAgICAgICBpZiAoIWNhbGxlZUNlbGwtPmlzSlNGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
Y2FsbGVlQ2VsbC0+dm0oKSwgY2FsbGVlQ2VsbCkpCiAgICAgICAgICAgICAgICAgICAgIGFkZENh
bGxlZShvYmplY3QpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAy
MS0wNy0xNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisKIDIwMjEtMDctMTcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTW92ZSBJbmxpbmVMZXZlbEJveCBjbGFzcyB0
byBpdHMgb3duIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db25zdHJ1Y3RvckJhc2UuaAkocmV2aXNpb24gMjgwMDE4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPCiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NT2JqZWN0OwogCi0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6OkltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0Q2FsbERhdGE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSBmYWxzZTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiAyODAwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjkxNCw3ICsyOTE0LDYgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQi
fSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5j
ZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSJ9ID0gMSBpZiAkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IjsKICAgICAgICAgCiAgICAgIyBQcm90b3R5cGUKICAgICB1bmxl
c3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSB8fCAkaW50ZXJm
YWNlLT5pc05hbWVzcGFjZU9iamVjdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4MDAx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRv
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PERPTVdpbmRvdyY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAgfQogcHVi
bGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW1w
bGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIHByb3RlY3RlZDoKICAg
ICBKU0RPTVdpbmRvdyhKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8RE9NV2luZG93PiYm
LCBKU1dpbmRvd1Byb3h5Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNX
aW5kb3dQcm94eSopOwpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUt
cHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9t
L29iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MDAx
OCkKKysrIExheW91dFRlc3RzL2pzL2RvbS9vYmplY3QtcHJvdG90eXBlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90
b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsCiBQQVNTIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5j
YWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVu
ZGVmaW5lZCknKS4KIFBBU1MgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVu
ZGVmaW5lZCwgJ2hhc093blByb3BlcnR5JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbCh1bmRlZmluZWQsICdoYXNPd25Qcm9wZXJ0eScpJykuCiBQQVNTIE9i
amVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh1bmRlZmluZWQsICdwcm9w
ZXJ0eUlzRW51bWVyYWJsZScpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNF
bnVtZXJhYmxlLmNhbGwodW5kZWZpbmVkLCAncHJvcGVydHlJc0VudW1lcmFibGUnKScpLgotUEFT
UyBPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRo
aXMpJykuCitQQVNTIE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKHVuZGVmaW5l
ZCwgdGhpcykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434051</attachid>
            <date>2021-07-22 18:30:38 -0700</date>
            <delta_ts>2021-08-06 19:57:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-216816-20210723043036.patch</filename>
            <type>text/plain</type>
            <size>181761</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAyMTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTIyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA3LTIyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFpclN0
YWNrU2xvdCdzIHVpbnQxNl90IGJ5dGUgc2l6ZSBpcyB0b28gc21hbGwKSW5kZXg6IEpTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5hbC1mdW5jdGlv
bi5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LWludGVybmFsLWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhm
dW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmbigpIHt9CisgICAgdmFyIGFyciA9IFtdOworICAg
IHZhciByZSA9IC8oPzopLzsKKyAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlOworICAgIHZhciBtYXAg
PSBuZXcgTWFwOworICAgIHZhciBzZXQgPSBuZXcgU2V0OworCisgICAgdmFyIGFjYyA9IDA7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7IGkrKykgeworICAgICAgICBhY2MgKz0gZm4gaW5z
dGFuY2VvZiBGdW5jdGlvbgorICAgICAgICAgICAgJiYgYXJyIGluc3RhbmNlb2YgQXJyYXkKKyAg
ICAgICAgICAgICYmIHJlIGluc3RhbmNlb2YgUmVnRXhwCisgICAgICAgICAgICAmJiBkYXRlIGlu
c3RhbmNlb2YgRGF0ZQorICAgICAgICAgICAgJiYgbWFwIGluc3RhbmNlb2YgTWFwCisgICAgICAg
ICAgICAmJiBzZXQgaW5zdGFuY2VvZiBTZXQ7CisgICAgfQorICAgIGlmIChhY2MgIT09IGkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLWNl
bGwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2Vv
Zi1wcmltaXRpdmUtY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACisoZnVu
Y3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7fQor
CisgICAgdmFyIG51bWJlciA9IDQuNTsKKyAgICB2YXIgc3RyaW5nID0gInN0ciI7CisgICAgdmFy
IHN5bWJvbCA9IFN5bWJvbCgpOworICAgIHZhciBiaWdpbnQgPSAxMG47CisKKyAgICB2YXIgYWNj
ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7CisgICAgICAgIGFjYyAr
PSBudW1iZXIgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8IHN0cmluZyBpbnN0YW5jZW9m
IEJhcgorICAgICAgICAgICAgfHwgc3ltYm9sIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8
fCBiaWdpbnQgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorICAgIGlmIChhY2MpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2VsbC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1ub24tY2Vs
bC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LXByaW1pdGl2ZS1ub24tY2VsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICBmdW5jdGlvbiBCYXIoKSB7
fQorCisgICAgdmFyIGFjYyA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsraSkg
eworICAgICAgICBhY2MgKz0gdW5kZWZpbmVkIGluc3RhbmNlb2YgRm9vCisgICAgICAgICAgICB8
fCBudWxsIGluc3RhbmNlb2YgQmFyCisgICAgICAgICAgICB8fCB0cnVlIGluc3RhbmNlb2YgRm9v
CisgICAgICAgICAgICB8fCBpIGluc3RhbmNlb2YgQmFyOworICAgIH0KKyAgICBpZiAoYWNjKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRleDog
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcm94eS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5LmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJveHkuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIFRh
cmdldCgpIHt9CisgICAgdmFyIHZhbHVlID0gbmV3IFRhcmdldCgpOworICAgIHZhciBwcm94eSA9
IG5ldyBQcm94eShUYXJnZXQsIFJlZmxlY3QpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTU7ICsraSkgeworICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIHByb3h5KSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtY2VsbC13aXRoLXR5cGUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZh
ciBpc0FycmF5ID0gJHZtLmNyZWF0ZUJ1aWx0aW4oIihmdW5jdGlvbiAoYykgeyByZXR1cm4gQGlz
QXJyYXkoYyk7IH0pIik7CisgICAgbm9JbmxpbmUoaXNBcnJheSk7CisKKyAgICB2YXIgc3ltID0g
U3ltYm9sKCk7CisgICAgdmFyIGFyciA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU2
OyArK2kpIHsKKyAgICAgICAgaWYgKHR5cGVvZiAiZm9vIiAhPT0gInN0cmluZyIgfHwgdHlwZW9m
IGkgPT09ICJzdHJpbmciIHx8CisgICAgICAgICAgICB0eXBlb2Ygc3ltICE9PSAic3ltYm9sIiB8
fCB0eXBlb2YgYXJyID09PSAic3ltYm9sIiB8fAorICAgICAgICAgICAgIWlzQXJyYXkoYXJyKSB8
fCBpc0FycmF5KHN5bSkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRp
b24hIik7CisgICAgfQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2lzLXBy
b3RvdHlwZS1vZi1hbHdheXMtaGl0LW9uZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9pcy1wcm90b3R5cGUtb2YtYWx3YXlzLWhpdC1vbmUuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtcHJvdG90eXBlLW9mLWFsd2F5cy1oaXQt
b25lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKyhmdW5jdGlvbigpIHsKKyAg
ICBub0lubGluZShPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YpOworCisgICAgZnVuY3Rp
b24gRm9vKCkge30KKyAgICB2YXIgZm9vID0gRm9vLnByb3RvdHlwZTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDU7ICsraSkKKyAgICAgICAgZm9vID0gT2JqZWN0LmNyZWF0ZShmb28pOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1ZTY7ICsraSkgeworICAgICAgICBpZiAoIUZvby5wcm90
b3R5cGUuaXNQcm90b3R5cGVPZihmb28pKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQgYXNzZXJ0aW9uISIpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9pcy1wcm90b3R5cGUtb2YtZHluYW1pYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9pcy1wcm90b3R5cGUtb2YtZHluYW1pYy5qcwkobm9uZXhpc3RlbnQpCisr
KyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1wcm90b3R5cGUtb2YtZHluYW1pYy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24oKSB7CisgICAgbm9JbmxpbmUo
T2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKTsKKworICAgIHZhciBwcm90b3R5cGVzID0g
W107CisgICAgdmFyIGhlaXJzID0gW107CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyAr
K2kpIHsKKyAgICAgICAgdmFyIHByb3RvdHlwZSA9IHt9OworICAgICAgICBwcm90b3R5cGVzW2ld
ID0gcHJvdG90eXBlOworICAgICAgICBoZWlyc1tpXSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmNy
ZWF0ZShPYmplY3QuY3JlYXRlKHByb3RvdHlwZSkpKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgICAgIHZhciBwcm90b3R5cGVJbmRleCA9IGkgJSAx
MDsKKyAgICAgICAgdmFyIGhlaXJJbmRleCA9IGkgJSA1MDsKKworICAgICAgICB2YXIgcmVzdWx0
ID0gcHJvdG90eXBlc1twcm90b3R5cGVJbmRleF0uaXNQcm90b3R5cGVPZihoZWlyc1toZWlySW5k
ZXhdKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gKHByb3RvdHlwZUluZGV4ID09PSBoZWlySW5k
ZXgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworICAg
IH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zeW1ib2wtaGFzLWluc3Rh
bmNlLWFsd2F5cy1oaXQtdHdvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3N5bWJvbC1oYXMtaW5zdGFuY2UtYWx3YXlzLWhpdC10d28uanMJKG5vbmV4aXN0ZW50KQor
KysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3ltYm9sLWhhcy1pbnN0YW5jZS1hbHdheXMtaGl0
LXR3by5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisoZnVuY3Rpb24oKSB7Cisg
ICAgbm9JbmxpbmUoRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0pOworCisg
ICAgZnVuY3Rpb24gRm9vKCkge30KKyAgICB2YXIgZm9vID0gbmV3IEZvbygpOworCisgICAgZnVu
Y3Rpb24gQmFyKCkge30KKyAgICBCYXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShGb28ucHJv
dG90eXBlKTsKKyAgICB2YXIgYmFyID0gbmV3IEJhcigpOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA1ZTY7ICsraSkgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSBpICYgMSA/IGZvbyA6IGJh
cjsKKyAgICAgICAgaWYgKCFGb29bU3ltYm9sLmhhc0luc3RhbmNlXShpbnN0YW5jZSkpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7CisgICAgfQorfSkoKTsK
SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N5bWJvbC1oYXMtaW5zdGFuY2UtdHJpY2t5
LWR5bmFtaWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3ltYm9s
LWhhcy1pbnN0YW5jZS10cmlja3ktZHluYW1pYy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zeW1ib2wtaGFzLWluc3RhbmNlLXRyaWNreS1keW5hbWljLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBub0lubGlu
ZShGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSk7CisKKyAgICB2YXIgY29u
c3RydWN0b3JzID0gW107CisgICAgdmFyIGluc3RhbmNlcyA9IFtdOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9u
KCkge307CisgICAgICAgIGNvbnN0cnVjdG9yc1tpXSA9IGNvbnN0cnVjdG9yOworICAgICAgICBp
bnN0YW5jZXNbaV0gPSBuZXcgY29uc3RydWN0b3I7CisgICAgfQorCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA1ZTU7ICsraSkgeworICAgICAgICB2YXIgY29uc3RydWN0b3JJbmRleCA9IGkgJSAx
MDsKKyAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JzW2NvbnN0cnVjdG9ySW5k
ZXhdOworICAgICAgICB2YXIgaW5zdGFuY2VJbmRleCA9IGkgJSA1MDsKKyAgICAgICAgdmFyIGlu
c3RhbmNlID0gaW5zdGFuY2VzW2luc3RhbmNlSW5kZXhdOworCisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgMTAwOyArK2opIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb25zdHJ1Y3Rv
cltTeW1ib2wuaGFzSW5zdGFuY2VdKGluc3RhbmNlKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
IT09IChjb25zdHJ1Y3RvckluZGV4ID09PSBpbnN0YW5jZUluZGV4KSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7CisgICAgICAgIH0KKyAgICB9Cit9
KSgpOwpJbmRleDogSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjgwMjExKQor
KysgSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTk5LDkgKzE1OTksNiBAQCB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2Nv
CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUg
dGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2dlbmVyYXRvcnMvc2NvcGUtcGFyYW0tcmVzdC1lbGVtLXZhci1vcGVuLmpz
OgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtvdXRzaWRl
wrssIMKraW5zaWRlwrspIHRvIGJlIHRydWUnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2lu
c3RhbmNlb2YvcHJvdG90eXBlLWdldHRlci13aXRoLXByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDog
IlRlc3QyNjJFcnJvcjogZ2V0dGVyIGZvciAncHJvdG90eXBlJyBjYWxsZWQiCi0gIHN0cmljdCBt
b2RlOiAiVGVzdDI2MkVycm9yOiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKIHRlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtYW5kLWFzc2lnbm1l
bnQtb3BlcmF0b3Itbm9uLXNpbXBsZS1saHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlz
IHN0YXRlbWVudCBzaG91bGQgbm90IGJlIGV2YWx1YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2xvZ2ljYWwtYXNzaWdubWVudC9sZ2NsLW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRv
ci1ub24tc2ltcGxlLWxocy5qczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwOCBAQAorMjAyMS0wNy0yMiAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBp
bnN0YW5jZW9mCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTY4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UpOgorICAgICAg
ICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc0luc3RhbmNlT2ZDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKGNvbnN0
cnVjdG9ySGFzSW5zdGFuY2UpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0
aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5n
X2FwcGVhcmVkX2hlcmUuc3ltYm9sSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGJ1
aWx0aW5zL09iamVjdFByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChpc1Byb3RvdHlwZU9m
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4
SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6dmlzaXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgor
ICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZGVzcGVjaWZpZWRDbG9zdXJlIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9FeGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZTdGF0dXM6
OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvSW5oZXJpdGFuY2UpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5n
ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6
OnNwZWN1bGF0aW9uRnJvbVN0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2luc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpJbnN0YW5j
ZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1Bo
YXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAg
ICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpxdWVyaWVkVHlwZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBw
ZXI6OmFzSlNUeXBlUmFuZ2UgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1R5
cGVJbmZvT3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dHlwZUlu
Zm9PcGVyYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8p
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mQ3VzdG9tKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpjaGVja0ZvcmJp
ZGRlblByb3RvdHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpxdWVyeUluc3RhbmNlcyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90RnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmlzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
c19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaEluc3RhbmNlT2YpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Ns
YXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9y
TGVnYWN5SW50bENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6dW53cmFwRm9yTGVnYWN5SW50
bENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NhbGxlZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYXN0Lmg6CisgICAgICAgIChKU0M6
OkpTVHlwZVJhbmdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeSk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm94eU9iamVjdFN0
cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsYWJsZVBy
b3h5T2JqZWN0U3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtBdXhpbGlhcnlBbmRWaXNp
dE91dE9mTGluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmlzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6Z2V0SlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlND
OjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpt
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Omlz
SlNGdW5jdGlvblR5cGUpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0hhc0lu
c3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc0lzUHJvdG90eXBl
T2YpOgorICAgICAgICAoSlNDOjpqc0luc3RhbmNlb2ZPcGVyYXRvcik6CisgICAgICAgICogcnVu
dGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2Zp
bGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKToKKwogMjAyMS0wNy0yMiAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBaXJTdGFja1Nsb3QncyB1aW50
MTZfdCBieXRlIHNpemUgaXMgdG9vIHNtYWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzMzcsNiArMTMzNyw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL01vZHVsZUxvYWRlci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9OdW1iZXJDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9PYmplY3RDb25zdHJ1Y3Rvci5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9PYmplY3RQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
UHJvbWlzZUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L1Byb21pc2VPcGVyYXRpb25zLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L1Byb21pc2VQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyODAyMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9N
YXBQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwog
JChQUk9KRUNUX0RJUikvYnVpbHRpbnMvTnVtYmVyQ29uc3RydWN0b3IuanMKICQoUFJPSkVDVF9E
SVIpL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCiskKFBST0pFQ1RfRElSKS9idWlsdGlu
cy9PYmplY3RQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21pc2VDb25z
dHJ1Y3Rvci5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMK
ICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyODAyMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDYgKzExNCw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBc
CiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgXAorICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcyBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4
MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
IG1vZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgogY2xhc3MgSlNDYWxsYmFja09iamVjdCBmaW5hbCA6IHB1YmxpYyBQ
YXJlbnQgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBQYXJlbnQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3Bl
cnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YSB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBHZXRPd25Qcm9w
ZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51bTsKLSAgICBzdGF0aWNfYXNzZXJ0KCEoU3Ry
dWN0dXJlRmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgInVzaW5nIGN1c3Rv
bUhhc0luc3RhbmNlIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxs
RGF0YSB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBHZXRP
d25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51bTsKIAogICAgIH5KU0NhbGxiYWNr
T2JqZWN0KCk7CiAKQEAgLTIwMCw2ICsxOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKIAogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KFZNJiwgU3Vic3BhY2VBY2Nlc3MpOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMX0FUVFJJQlVURVMgY3VzdG9tSGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJV
VEVTIGN1c3RvbVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0yMTEsOCArMjExLDYgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQpOwogCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwotCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duU3BlY2lhbFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAKICAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyODAyMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwxMyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Z2V0T3duUHJvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlm
IChwcm9wZXJ0eU5hbWUudWlkKCkgPT0gdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1i
b2wuaW1wbCgpKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGhhc0luc3RhbmNlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLmhhc0luc3RhbmNlXSJfcywg
Y3VzdG9tSGFzSW5zdGFuY2UpOworICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHBy
b3BlcnR5TmFtZSwgaGFzSW5zdGFuY2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgaGFzSW5z
dGFuY2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTUwMSwxNCArNTA4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50PjoKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorRW5jb2RlZEpTVmFsdWUg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxs
YmFja09iamVjdCo+KG9iamVjdCk7CisgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5bWJvbC5oYXNJbnN0
YW5jZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlLiJfcyk7CisK
ICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QpKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAKICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RI
YXNJbnN0YW5jZUNhbGxiYWNrIGhhc0luc3RhbmNlID0ganNDbGFzcy0+aGFzSW5zdGFuY2UpIHsK
QEAgLTUyMCwxMSArNTMxLDExIEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0
b21IYXMKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0YW5jZShleGVjUmVmLCB0aGlz
UmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIHRvSlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZmFsc2UpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg4LDcgKzI4OCw3IEBAIGJvb2wgSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKEpT
Q28KICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgdmFsdWUpOwogCiAg
ICAgSlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSB0b0pTKGNvbnN0cnVjdG9yKTsKLSAgICBpZiAo
IWpzQ29uc3RydWN0b3ItPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0hhc0lu
c3RhbmNlKCkpCisgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5pc0NhbGxhYmxlRm9ySGFzSW5zdGFu
Y2Uodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCByZXN1bHQgPSBqc0NvbnN0
cnVjdG9yLT5oYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyAvLyBmYWxzZSBpZiBh
biBleGNlcHRpb24gaXMgdGhyb3duCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNj
b3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCShyZXZpc2lvbiAyODAy
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdG9ySGFzSW5z
dGFuY2UoSlNDb24KIAogICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25z
dHJ1Y3RvclJlZik7CiAgICAgSlNDOjpKU1ZhbHVlIGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmpl
Y3QsIHBvc3NpYmxlSW5zdGFuY2UpOwotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0
SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIHJldHVybiBjb25z
dHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwogfQog
CiBzdGF0aWMgSlNDOjpKU09iamVjdCogbWFrZVdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlND
bGFzc1JlZiBqc0NsYXNzLCBpZCB3cmFwcGVkT2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc1
LDYgKzE3NzUsMTkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NF
UlQoSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHQsIHJlc3VsdCwgYXJyYXlD
b25zdHJ1Y3RvciwgTlVMTCkpOwogICAgIEFTU0VSVCghSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0
cnVjdG9yKGNvbnRleHQsIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KSwgYXJyYXlDb25zdHJ1Y3Rv
ciwgTlVMTCkpOwogCisgICAgSlNPYmplY3RSZWYgcGxhaW5PYmplY3QgPSBKU09iamVjdE1ha2Uo
Y29udGV4dCwgTlVMTCwgTlVMTCk7CisgICAgQVNTRVJUKCFKU1ZhbHVlSXNJbnN0YW5jZU9mQ29u
c3RydWN0b3IoY29udGV4dCwgcmVzdWx0LCBwbGFpbk9iamVjdCwgTlVMTCkpOworCisgICAgSlNP
YmplY3RSZWYgcGxhaW5PYmplY3RXaXRoU3ltYm9sSGFzSW5zdGFuY2UgPSBKU1ZhbHVlVG9PYmpl
Y3QoY29udGV4dCwKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiKHsgW1N5bWJvbC5oYXNJbnN0YW5jZV06ICgpID0+IHRydWUg
fSkiKSwgTlVMTCwgTlVMTCwgMSwgTlVMTCksCisgICAgICAgIE5VTEwpOworICAgIEFTU0VSVCgh
SlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHQsIHJlc3VsdCwgcGxhaW5PYmpl
Y3RXaXRoU3ltYm9sSGFzSW5zdGFuY2UsIE5VTEwpKTsKKworICAgIEpTT2JqZWN0UmVmIGFycm93
RnVuY3Rpb25XaXRoU3ltYm9sSGFzSW5zdGFuY2UgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwK
KyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiT2JqZWN0LmRlZmluZVByb3BlcnR5KCgpID0+IHt9LCBTeW1ib2wuaGFzSW5zdGFu
Y2UsIHsgdmFsdWU6ICgpID0+IHRydWUgfSkiKSwgTlVMTCwgTlVMTCwgMSwgTlVMTCksCisgICAg
ICAgIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoY29u
dGV4dCwgcmVzdWx0LCBhcnJvd0Z1bmN0aW9uV2l0aFN5bWJvbEhhc0luc3RhbmNlLCBOVUxMKSk7
CisKICAgICBvID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHJlc3VsdCwgTlVMTCk7CiAgICAg
ZXhjZXB0aW9uID0gTlVMTDsKICAgICBBU1NFUlQoSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQs
IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIG8sIDAsICZleGNlcHRpb24pKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZp
c2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MDIsMTIgKzE0MDIsMTQgQEAgc3RhdGljIHZvaWQgdGVz
dE9iamVjdGl2ZUNBUElNYWluKCkKICAgICAgICAgY2hlY2tSZXN1bHQoQCIhKHZhbHVlMSBpbnN0
YW5jZW9mIE15T3RoZXJDbGFzcykiLCAhW3ZhbHVlMSBpc0luc3RhbmNlT2Y6Y29uc3RydWN0b3Iy
XSk7CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiTXlDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PT09IE15Q2xhc3MiLCBbW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJNeUNsYXNzLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9PT0gTXlDbGFzcyJdIHRvQm9vbF0pOwogICAgICAgICBjaGVja1Jlc3Vs
dChAIk15Q2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbiIsIFtbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIk15Q2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbiJdIHRvQm9vbF0pOworICAgICAgICBjaGVj
a1Jlc3VsdChAIk15Q2xhc3NbU3ltYm9sLmhhc0luc3RhbmNlXShuZXcgTXlDbGFzcygpKSIsIFtb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIk15Q2xhc3NbU3ltYm9sLmhhc0luc3RhbmNlXShuZXcg
TXlDbGFzcygpKSJdIHRvQm9vbF0pOwogCiAgICAgICAgIEpTVmFsdWUgKnZhbHVlMiA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAibmV3IE15T3RoZXJDbGFzcygpIl07CiAgICAgICAgIGNoZWNr
UmVzdWx0KEAidmFsdWUyIGluc3RhbmNlb2YgTXlPdGhlckNsYXNzIiwgW3ZhbHVlMiBpc0luc3Rh
bmNlT2Y6Y29uc3RydWN0b3IyXSk7CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiISh2YWx1ZTIgaW5z
dGFuY2VvZiBNeUNsYXNzKSIsICFbdmFsdWUyIGlzSW5zdGFuY2VPZjpjb25zdHJ1Y3RvcjFdKTsK
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJNeU90aGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID09PSBNeU90aGVyQ2xhc3MiLCBbW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJNeU90aGVyQ2xh
c3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID09PSBNeU90aGVyQ2xhc3MiXSB0b0Jvb2xdKTsKICAg
ICAgICAgY2hlY2tSZXN1bHQoQCJNeU90aGVyQ2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbiIsIFtb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIk15T3RoZXJDbGFzcyBpbnN0YW5jZW9mIEZ1bmN0aW9u
Il0gdG9Cb29sXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTXlPdGhlckNsYXNzW1N5bWJvbC5o
YXNJbnN0YW5jZV0obmV3IE15Q2xhc3MoKSkiLCAhW1tjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
TXlPdGhlckNsYXNzW1N5bWJvbC5oYXNJbnN0YW5jZV0obmV3IE15Q2xhc3MoKSkiXSB0b0Jvb2xd
KTsKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTE1NTMsNiArMTU1NSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIH07CiAgICAgICAg
IEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiKG1ha2VPYmplY3Qo
KSBpbnN0YW5jZW9mIFVuZXhwb3J0ZWRPYmplY3QpIl07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bWFrZU9iamVjdCgpIGluc3RhbmNlb2YgVW5leHBvcnRlZE9iamVjdCIsIHJlc3VsdC5pc0Jvb2xl
YW4gJiYgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJVbmV4cG9ydGVk
T2JqZWN0W1N5bWJvbC5oYXNJbnN0YW5jZV0obWFrZU9iamVjdCgpKSIsIFtbY29udGV4dCBldmFs
dWF0ZVNjcmlwdDpAIlVuZXhwb3J0ZWRPYmplY3RbU3ltYm9sLmhhc0luc3RhbmNlXShtYWtlT2Jq
ZWN0KCkpIl0gdG9Cb29sXSk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGku
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
U2NyaXB0cy90ZXN0YXBpLmpzCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBzaG91bGRCZSgiTXlPYmplY3QudGhyb3dPblNldCA9IDUiLCAi
YW4gCiBzaG91bGRCZSgiTXlPYmplY3QoJ3Rocm93T25DYWxsJykiLCAiYW4gZXhjZXB0aW9uIik7
CiBzaG91bGRCZSgibmV3IE15T2JqZWN0KCd0aHJvd09uQ29uc3RydWN0JykiLCAiYW4gZXhjZXB0
aW9uIik7CiBzaG91bGRCZSgiJ3Rocm93T25IYXNJbnN0YW5jZScgaW5zdGFuY2VvZiBNeU9iamVj
dCIsICJhbiBleGNlcHRpb24iKTsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1ib2wuaGFzSW5zdGFu
Y2VdKCd0aHJvd09uSGFzSW5zdGFuY2UnKSIsICJhbiBleGNlcHRpb24iKTsKIAogTXlPYmplY3Qu
bnVsbEdldEZvcndhcmRTZXQgPSAxOwogc2hvdWxkQmUoIk15T2JqZWN0Lm51bGxHZXRGb3J3YXJk
U2V0IiwgMSk7CkBAIC0xODksNiArMTkwLDcgQEAgY29uc3RydWN0ZWRPYmplY3QgPSBuZXcgTXlD
b25zdHJ1Y3RvcigxKQogc2hvdWxkQmUoInR5cGVvZiBjb25zdHJ1Y3RlZE9iamVjdCIsICJvYmpl
Y3QiKTsKIHNob3VsZEJlKCJjb25zdHJ1Y3RlZE9iamVjdC52YWx1ZSIsIDEpOwogc2hvdWxkQmUo
Im15T2JqZWN0IGluc3RhbmNlb2YgTXlPYmplY3QiLCB0cnVlKTsKK3Nob3VsZEJlKCJNeU9iamVj
dFtTeW1ib2wuaGFzSW5zdGFuY2VdKG15T2JqZWN0KSIsIHRydWUpOwogc2hvdWxkQmUoIihuZXcg
T2JqZWN0KCkpIGluc3RhbmNlb2YgTXlPYmplY3QiLCBmYWxzZSk7CiAKIHNob3VsZFRocm93KCJu
ZXcgTXlCYWRDb25zdHJ1Y3RvcigpIik7CkBAIC0zNTUsNiArMzU3LDE2IEBAIHNob3VsZEJlKCJz
eW1ib2xUb1N0cmluZ1RhZ0Rlc2NyaXB0b3IuY28KIEVtcHR5T2JqZWN0W1N5bWJvbC50b1N0cmlu
Z1RhZ10gPSAiRm9vIjsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
RW1wdHlPYmplY3QpIiwgIltvYmplY3QgRm9vXSIpOwogCitzaG91bGRCZSgiW10gaW5zdGFuY2Vv
ZiBFbXB0eU9iamVjdCIsIGZhbHNlKTsKK3Nob3VsZEJlKCJFbXB0eU9iamVjdFtTeW1ib2wuaGFz
SW5zdGFuY2VdKHt9KSIsIGZhbHNlKTsKKwordmFyIHN5bWJvbEhhc0luc3RhbmNlRGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRW1wdHlPYmplY3QsIFN5bWJvbC5o
YXNJbnN0YW5jZSk7CitzaG91bGRCZSgidHlwZW9mIHN5bWJvbEhhc0luc3RhbmNlRGVzY3JpcHRv
ciIsICJvYmplY3QiKTsKK3Nob3VsZEJlKCJzeW1ib2xIYXNJbnN0YW5jZURlc2NyaXB0b3IudmFs
dWUiLCBFbXB0eU9iamVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdKTsKK3Nob3VsZEJlKCJzeW1ib2xI
YXNJbnN0YW5jZURlc2NyaXB0b3Iud3JpdGFibGUiLCB0cnVlKTsKK3Nob3VsZEJlKCJzeW1ib2xI
YXNJbnN0YW5jZURlc2NyaXB0b3IuZW51bWVyYWJsZSIsIGZhbHNlKTsKK3Nob3VsZEJlKCJzeW1i
b2xIYXNJbnN0YW5jZURlc2NyaXB0b3IuY29uZmlndXJhYmxlIiwgdHJ1ZSk7CisKIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgKytpKQogICAgIFByb3BlcnR5Q2F0Y2hhbGxzLnggPSBpOwogc2hvdWxk
QmUoIlByb3BlcnR5Q2F0Y2hhbGxzLngiLCA0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE5
Miw2ICs0MTkyLDcgQEAKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0
OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEYxNTNG
RTI2OUEwODcyMDAwQjlDREUgLyogT2JqZWN0UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gT2JqZWN0UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlclg4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg5ODksNiArODk5MCw3IEBACiAJCQkJRTMwNjc3OTcxQjhCQzZGNTAw
M0Y4N0YwIC8qIE1vZHVsZUxvYWRlci5qcyAqLywKIAkJCQlBNTI3MDQ4NjFEMDI3Qzg4MDAzNTRD
MzcgLyogTnVtYmVyQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURC
MUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAorCQkJCTg0RjE1M0ZFMjY5QTA4NzIwMDBC
OUNERSAvKiBPYmplY3RQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNUUxQjY1RDlCMTAwOURC
MUVGIC8qIFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5
REIxRUYgLyogUHJvbWlzZU9wZXJhdGlvbnMuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAw
RDAwNzUwIC8qIFByb21pc2VQcm90b3R5cGUuanMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw5ICsxMjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhpc1NoYXJl
ZFR5cGVkQXJyYXlWaWV3KSBcCiAgICAgbWFjcm8oaXNEZXRhY2hlZCkgXAogICAgIG1hY3JvKHR5
cGVkQXJyYXlEZWZhdWx0Q29tcGFyYXRvcikgXAotICAgIG1hY3JvKGlzQm91bmRGdW5jdGlvbikg
XAogICAgIG1hY3JvKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGluc3Rh
bmNlT2YpIFwKKyAgICBtYWNybyhmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sKSBc
CiAgICAgbWFjcm8oaXNBcnJheVNsb3cpIFwKICAgICBtYWNybyhzYW1lVmFsdWUpIFwKICAgICBt
YWNybyhjb25jYXRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9GdW5jdGlvblByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBAQCBmdW5jdGlvbiBzeW1ib2xIYXNJbnN0YW5jZSh2YWx1
ZSkKICAgICBpZiAoQGlzQm91bmRGdW5jdGlvbih0aGlzKSkKICAgICAgICAgcmV0dXJuIEBoYXNJ
bnN0YW5jZUJvdW5kRnVuY3Rpb24odGhpcywgdmFsdWUpOwogCisgICAgaWYgKCFAaXNPYmplY3Qo
dmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5w
cm90b3R5cGU7CiAgICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJnZXQpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBl
LmpzCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmpl
Y3RQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworZnVuY3Rpb24gaXNQcm90b3R5cGVPZih2YWx1ZSkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoIUBpc09iamVjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBAaW5zdGFuY2VPZih2YWx1ZSwgQHRvT2JqZWN0KHRoaXMpKTsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBp
bnQzMl90OwogICAgIG1hY3JvKGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1h
Y3JvKGdldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2Zp
bGUpIFwKKyAgICBtYWNybyhpbnN0YW5jZU9mKSBcCisgICAgbWFjcm8oaXNCb3VuZEZ1bmN0aW9u
KSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKICAgICBtYWNybyhpc0NhbGxhYmxlKSBcCiAgICAg
bWFjcm8oaXNDb25zdHJ1Y3RvcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00
MDIsMTMgKzQwMiw2IEBAIG9wIDppZGVudGl0eV93aXRoX3Byb2ZpbGUsCiAgICAgICAgIGJvdHRv
bVByb2ZpbGU6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOm92ZXJyaWRlc19oYXNfaW5zdGFuY2Us
Ci0gICAgYXJnczogewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY29u
c3RydWN0b3I6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgaGFzSW5zdGFuY2VWYWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAotICAgIH0KLQogb3AgOmluc3RhbmNlb2YsCiAgICAgYXJnczogewogICAg
ICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTQzNCw3ICs0MjcsOCBAQCBvcCA6aXNfY2Vs
bF93aXRoX3R5cGUsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0eXBlOiBKU1R5cGUs
CisgICAgICAgIGZpcnN0VHlwZTogSlNUeXBlLAorICAgICAgICBsYXN0VHlwZTogSlNUeXBlLAog
ICAgIH0KIAogb3AgOmluX2J5X3ZhbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM0LDcgKzIzNCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4
SW1wbChWaXIKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhP
cEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSGFzUHJpdmF0ZUJy
YW5kLCBiYXNlLCBicmFuZCkKLSAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0
cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwg
cHJvdG90eXBlKQogICAgIFVTRVMoT3BBZGQsIGxocywgcmhzKQogICAgIFVTRVMoT3BNdWwsIGxo
cywgcmhzKQpAQCAtNDkwLDcgKzQ4OSw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUlu
ZGV4SW1wbCh1bnMKICAgICBERUZTKE9wR2V0QnlJZFdpdGhUaGlzLCBkc3QpCiAgICAgREVGUyhP
cEdldEJ5VmFsV2l0aFRoaXMsIGRzdCkKICAgICBERUZTKE9wR2V0UHJvdG90eXBlT2YsIGRzdCkK
LSAgICBERUZTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGRzdCkKICAgICBERUZTKE9wSW5zdGFu
Y2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhP
cEdldEJ5VmFsLCBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3
ICsyNTUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBjYWxsZWUgPSBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yQ29kZUJsb2NrLmdldCgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT5pc0pTRnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q2xlYXJpbmcgY2FsbCB0byAiLApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZv
Ojp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaXNEaXJlY3Qo
KSAmJiBoYXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChsYXN0U2VlbkNh
bGxlZSgpKSkgewotICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+dHlwZSgpID09IEpTRnVu
Y3Rpb25UeXBlKQorICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+aXNKU0Z1bmN0aW9uKCkp
CiAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShqc0Nhc3Q8SlNGdW5jdGlvbio+KGxh
c3RTZWVuQ2FsbGVlKCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9jbGVhcmVkQnlH
QyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGlj
OgogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0
IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlh
bnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxl
ZS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobV9jYWxsZWUtPmlzSlNG
dW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3Bw
CShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhp
dEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBAIGNvbnN0IGNoYXIqIGV4
aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJCYWRDb25zdGFudENh
Y2hlIjsKICAgICBjYXNlIEJhZEluZGV4aW5nVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRJbmRl
eGluZ1R5cGUiOwotICAgIGNhc2UgQmFkVHlwZUluZm9GbGFnczoKLSAgICAgICAgcmV0dXJuICJC
YWRUeXBlSW5mb0ZsYWdzIjsKICAgICBjYXNlIE92ZXJmbG93OgogICAgICAgICByZXR1cm4gIk92
ZXJmbG93IjsKICAgICBjYXNlIE5lZ2F0aXZlWmVybzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNiBAQCBlbnVtIEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRD
YWNoZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVz
dWFsbHkgYSBwcm90b3R5cGUpIHdhcyB3cm9uZy4KICAgICBCYWRJbmRleGluZ1R5cGUsIC8vIFdl
IGV4aXRlZCBiZWNhdXNlIGFuIGluZGV4aW5nIHR5cGUgd2FzIHdyb25nLgotICAgIEJhZFR5cGVJ
bmZvRmxhZ3MsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3Vt
cHRpb24gYWJvdXQgd2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBzZWUuCiAgICAgT3ZlcmZs
b3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0aXZlWmVybywg
Ly8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVyby4KICAgICBO
ZWdhdGl2ZUluZGV4LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBhIG5lZ2F0
aXZlIGluZGV4IGluIGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2VlIGl0LgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNw
cAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw2IEBAIEluc3Rh
bmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHUKICNpZiBFTkFCTEUoREZHX0pJVCkK
IEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvKQogewotICAgIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBoYXZlIHRvIGJhaWwgZm9yIG5vbkNl
bGwgaWYgd2UgdGF1Z2h0IE1hdGNoU3RydWN0dXJlIGhvdyB0byBoYW5kbGUgbm9uCi0gICAgLy8g
Y2VsbHMuIElmIHdlIGZpeGVkIHRoYXQgdGhlbiB3ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHVzZSBz
dW1tYXJ5KCk7Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTc4NAogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86
OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkK
ICAgICAgICAgcmV0dXJuIEluc3RhbmNlT2ZTdGF0dXMoc3VtbWFyeSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHJldmlz
aW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgdihpc0RldGFjaGVkLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5RGVm
YXVsdENvbXBhcmF0b3IsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0
ZSwgbnVsbHB0cikgXAotICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdiho
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGZ1bmN0aW9uUHJvdG90
eXBlSGFzSW5zdGFuY2VTeW1ib2wsIG51bGxwdHIpIFwKICAgICB2KGluc3RhbmNlT2YsIG51bGxw
dHIpIFwKICAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5EZXNjcmli
ZSwgbnVsbHB0cikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzAsNiArMjMwLDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIK
ICAgICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0ludGVybmFsRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50
KCJJbnRlcm5hbEZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3Ry
aW5nKSA9PSBTcGVjU3RyaW5nKQpAQCAtNTE4LDEwICs1MjMsMTMgQEAgU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSQogCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFz
c09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0Jv
dW5kRnVuY3Rpb246OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRo
Tm9uRGVmYXVsdEhhc0luc3RhbmNlOwotICAgICAgICByZXR1cm4gU3BlY0Z1bmN0aW9uV2l0aERl
ZmF1bHRIYXNJbnN0YW5jZTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjQm91bmRGdW5jdGlvbjsK
KyAgICAgICAgcmV0dXJuIFNwZWNOb25Cb3VuZEZ1bmN0aW9uOwogICAgIH0KIAorICAgIGlmIChj
bGFzc0luZm8tPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgICAg
ICByZXR1cm4gU3BlY0ludGVybmFsRnVuY3Rpb24gfCBTcGVjT2JqZWN0T3RoZXI7CisKICAgICBp
ZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNQcm9taXNlOjppbmZvKCkpKQogICAgICAgICBy
ZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAgICAgCkBAIC02ODYsNiArNjk0LDE2IEBAIFR5cGVk
QXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGEKICAgICByZXR1cm4gTm90VHlwZWRB
cnJheTsKIH0KIAorc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9t
SlNUeXBlUmFuZ2UoSlNUeXBlUmFuZ2UgcmFuZ2UpCit7CisgICAgU3BlY3VsYXRlZFR5cGUgc3Bl
Y3VsYXRpb24gPSBTcGVjTm9uZTsKKyAgICBmb3IgKHVpbnQ4X3QgdHlwZSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJhbmdlLmZpcnN0KTsgdHlwZSA8PSBzdGF0aWNfY2FzdDx1aW50OF90PihyYW5n
ZS5sYXN0KTsgdHlwZSsrKQorICAgICAgICBzcGVjdWxhdGlvbiB8PSBzcGVjdWxhdGlvbkZyb21K
U1R5cGUoc3RhdGljX2Nhc3Q8SlNUeXBlPih0eXBlKSkudmFsdWVfb3IoU3BlY05vbmUpOworICAg
IGlmIChzcGVjdWxhdGlvbiA9PSBTcGVjTm9uZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3BlY3VsYXRpb247Cit9CisKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRl
ZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpIHsKQEAgLTY5NSw2ICs3MTMsMTAgQEAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlw
ZT4gc3BlY3VsYXRpbwogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICBjYXNlIEhlYXBC
aWdJbnRUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBJbnRl
cm5hbEZ1bmN0aW9uVHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOwor
ICAgIGNhc2UgSlNGdW5jdGlvblR5cGU6CisgICAgICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5j
dGlvbjsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAg
ICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC05NjAsNiArOTgyLDggQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRB
cnJheTsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3Qi
LCBzdHJsZW4oIlNwZWNEYXRhVmlld09iamVjdCIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNEYXRh
Vmlld09iamVjdDsKKyAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjSW50ZXJuYWxG
dW5jdGlvbiIsIHN0cmxlbigiU3BlY0ludGVybmFsRnVuY3Rpb24iKSkpCisgICAgICAgIHJldHVy
biBTcGVjSW50ZXJuYWxGdW5jdGlvbjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJT
cGVjT2JqZWN0T3RoZXIiLCBzdHJsZW4oIlNwZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0
dXJuIFNwZWNPYmplY3RPdGhlcjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVj
T2JqZWN0Iiwgc3RybGVuKCJTcGVjT2JqZWN0IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI4MDIxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxNCArMzYsMTUgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1
Y3R1cmU7CitzdHJ1Y3QgSlNUeXBlUmFuZ2U7CiAKIHR5cGVkZWYgdWludDY0X3QgU3BlY3VsYXRl
ZFR5cGU7CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwOyAvLyBXZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4K
IHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgICAg
ICAgICAgICAgICAgICA9IDF1bGwgPDwgMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9i
amVjdC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0FycmF5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNB
cnJheS4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERl
ZmF1bHRIYXNJbnN0YW5jZSAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNG
dW5jdGlvbiB0aGF0IGhhcyBpdHMgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGlu
Zm8gZmxhZ3MgYml0IHNldC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5jZSA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0IGRvZXMgbm90IGhhdmUgaXRzIEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UgdHlwZSBpbmZvIGZsYWdzIGJpdCBzZXQuCi1zdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlIHwgU3BlY0Z1bmN0aW9uV2l0aE5vbkRl
ZmF1bHRIYXNJbnN0YW5jZTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbi4KK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JvdW5kRnVuY3Rpb24gICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNCb3VuZEZ1bmN0aW9u
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uQm91bmRGdW5jdGlvbiAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0
aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3NlcywgYnV0IG5vdCBhIEpTQm91bmRGdW5jdGlvbi4K
K3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNCb3VuZEZ1bmN0aW9uIHwgU3BlY05vbkJvdW5kRnVuY3Rpb247
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MTZBcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA1OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xh
c3Nlcy4KQEAgLTEwOSw4ICsxMTAsOSBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNCaWdJCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcEJpZ0ludDsKICNlbmRpZgogc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAg
ICAgICAgID0gMXVsbCA8PCA0NTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVybmFsRnVuY3Rpb24gICAgICAg
ICAgICAgICAgICA9IDF1bGwgPDwgNDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEludGVybmFsRnVu
Y3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRl
Y29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVj
dCBKU1ZhbHVlLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwg
U3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8
IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVj
dCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwg
U3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBT
cGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3Bl
Y0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5k
IG9mIG9iamVjdCBwcmVkaWN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwg
U3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVj
dEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3Bl
Y1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVj
TWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtT
ZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVj
dE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0IHwgU3BlY0ludGVybmFsRnVuY3Rpb247IC8vIEJp
dG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24u
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBT
cGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2Vs
bC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2Rl
TnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQg
Zm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUs
IGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVz
cG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpAQCAtMjMx
LDcgKzIzMyw3IEBAIGlubGluZSBib29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAog
aW5saW5lIGJvb2wgaXNGdW5jdGlvblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRnVuY3Rpb247CisgICAgcmV0dXJuICEhdmFsdWUg
JiYgKHZhbHVlICYgU3BlY0Z1bmN0aW9uKSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNQ
cm94eU9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpAQCAtNTE4LDYgKzUy
MCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGEKIC8vIElmIGl0
J3MgYW4gYW55SW50KCksIGl0J2xsIHJldHVybiBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIElu
dDUyIGxhdHRpY2UuCiAvLyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBK
U1ZhbHVlIGxhdHRpY2UuCiBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3
YXJlU3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0
ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGVSYW5nZShKU1R5cGVSYW5nZSk7CiBzdGQ6Om9w
dGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAog
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5
cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDEx
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW4KICAgICBPcEpuZXFQ
dHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVnaXN0
ZXJJRCogY29uZCwgTGlua1RpbWVDb25zdGFudCBjb25zdGFudCwgTGFiZWwmIHRhcmdldCkKK3sK
KyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgY29uc3RhbnQpLCB0YXJnZXQuYmluZCh0aGlzKSk7Cit9CisKIHVuc2lnbmVkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0V2lkZUp1bXBJZk5vdEZ1bmN0aW9uSGFzT3duUHJvcGVydHkoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIHsKICAgICBPcEpuZXFQdHI6OmVtaXQ8T3Bj
b2RlU2l6ZTo6V2lkZTMyPih0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRy
LCBMaW5rVGltZUNvbnN0YW50OjpoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQo
dGhpcykpOwpAQCAtMTczNSwxMiArMTc0MCwxMiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RXF1YWxpdHlPcEltCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0g
InN0cmluZyIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBP
cElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSk7
CisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1f
dmFsdWUsIFN0cmluZ1R5cGUsIFN0cmluZ1R5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJzeW1ib2wiKSB7
CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRo
VHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5bWJvbFR5cGUpOworICAgICAgICAg
ICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1i
b2xUeXBlLCBTeW1ib2xUeXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAiYmlnaW50IikgewpAQCAtMTc0OCw3
ICsxNzUzLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbQogI2lm
IFVTRShCSUdJTlQzMikKICAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRz
dCwgb3AubV92YWx1ZSk7CiAjZWxzZQotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6
OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFwQmlnSW50VHlwZSk7CisgICAgICAgICAg
ICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBC
aWdJbnRUeXBlLCBIZWFwQmlnSW50VHlwZSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTI0MjQsMTIgKzI0MjksNiBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogaGFzSW5zdGFuY2VWYWx1ZSkK
LXsKLSAgICBPcE92ZXJyaWRlc0hhc0luc3RhbmNlOjplbWl0KHRoaXMsIGRzdCwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KIC8vIEluZGljYXRl
cyB0aGUgbGVhc3QgdXBwZXIgYm91bmQgb2YgcmVzb2x2ZSB0eXBlIGJhc2VkIG9uIGxvY2FsIHNj
b3BlLiBUaGUgYnl0ZWNvZGUgbGlua2VyCiAvLyB3aWxsIHN0YXJ0IHdpdGggdGhpcyBSZXNvbHZl
VHlwZSBhbmQgY29tcHV0ZSB0aGUgbGVhc3QgdXBwZXIgYm91bmQgaW5jbHVkaW5nIGludGVyY2Vw
dGluZyBzY29wZXMuCiBSZXNvbHZlVHlwZSBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZVR5cGUo
KQpAQCAtNDYwNiw5ICs0NjA1LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0VG9JbmQKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
LCBKU1R5cGVSYW5nZSByYW5nZSkKK3sKKyAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMs
IGRzdCwgc3JjLCByYW5nZS5maXJzdCwgcmFuZ2UubGFzdCk7CisgICAgcmV0dXJuIGRzdDsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0NlbGxXaXRoVHlwZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlIHR5cGUpCiB7Ci0gICAgT3BJc0Nl
bGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlwZSk7CisgICAgT3BJc0NlbGxXaXRo
VHlwZTo6ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlwZSwgdHlwZSk7CiAgICAgcmV0dXJuIGRzdDsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OTgsNyArNzk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJbmMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERl
YyhSZWdpc3RlcklEKiBzcmNEc3QpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRPdmVycmlk
ZXNIYXNJbnN0YW5jZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBS
ZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElu
c3RhbmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCog
YmFzZVByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9t
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVj
dG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFR5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CkBAIC05MTYsNiAr
OTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBJZkZhbHNlKFJl
Z2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wSWZO
b3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAg
IHZvaWQgZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwm
IHRhcmdldCk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBJZk5vdExpbmtUaW1lQ29uc3RhbnQoUmVn
aXN0ZXJJRCogY29uZCwgTGlua1RpbWVDb25zdGFudCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAg
IHVuc2lnbmVkIGVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9wZXJ0eShSZWdpc3Rl
cklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsKICAgICAgICAgdm9pZCByZWNvcmRIYXNPd25TdHJ1
Y3R1cmVQcm9wZXJ0eUluRm9ySW5Mb29wKFN0cnVjdHVyZUZvckluQ29udGV4dCYsIHVuc2lnbmVk
IGJyYW5jaE9mZnNldCwgTGFiZWwmIGdlbmVyaWNQYXRoKTsKIApAQCAtOTQwLDYgKzk0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RW51bWVyYXRvckdlbmVy
aWNQcm9wZXJ0eU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBS
ZWdpc3RlcklEKiBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb0luZGV4U3RyaW5n
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogCisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0NlbGxXaXRoVHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywg
SlNUeXBlUmFuZ2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUpOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpT
QXN5bmNHZW5lcmF0b3JUeXBlKTsgfQpAQCAtOTUzLDYgKzk1NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNBcnJheUl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMs
IEpTQXJyYXlJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc01hcEl0
ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXND
ZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwSXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXNTZXRJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldEl0ZXJhdG9yVHlw
ZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQm91bmRGdW5jdGlvbihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwg
c3JjLCBKU0JvdW5kRnVuY3Rpb25UeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNP
YmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0SXNDYWxsYWJsZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM0NSw2ICsxMzQ1LDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF8KICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQcm90b3R5cGVPZihnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaW5zdGFuY2VPZihCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRM
aXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1f
bmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRJbnN0YW5jZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVl
LmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOworfQorCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBw
cm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6VHlwZTo6RW1pdHRlcik7CkBAIC0xODk5LDYgKzE5MDksNyBAQCBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc0FycmF5CiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc01hcEl0ZXJhdG9yLCBJc01hcEl0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1Jf
QlJBTkRfQ0hFQ0soaXNTZXRJdGVyYXRvciwgSXNTZXRJdGVyYXRvcikKIENSRUFURV9JTlRSSU5T
SUNfRk9SX0JSQU5EX0NIRUNLKGlzVW5kZWZpbmVkT3JOdWxsLCBJc1VuZGVmaW5lZE9yTnVsbCkK
K0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQm91bmRGdW5jdGlvbiwgSXNCb3Vu
ZEZ1bmN0aW9uKQogCiAjdW5kZWYgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0sKIApA
QCAtMzE2MCwyOSArMzE3MSwyNCBAQCBSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6
OmVtaXRCCiAKIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBoYXNJbnN0YW5jZVZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpc09iamVjdCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXNDdXN0b20gPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaGFzSW5zdGFuY2VWYWx1ZSA9
IGdlbmVyYXRvci5tb3ZlRW1wdHlWYWx1ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVm
dEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJl
KGdlbmVyYXRvcikpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnID0g
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgcHJv
dG90eXBlLmdldCgpKTsKICAgICBSZWY8TGFiZWw+IGN1c3RvbSA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwogICAgIFJlZjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgIFJl
ZjxMYWJlbD4gdHlwZUVycm9yID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRJc09iamVjdChpc09iamVjdC5nZXQoKSwgY29uc3RydWN0b3Iu
Z2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoaXNPYmplY3QuZ2V0KCksIHR5
cGVFcnJvci5nZXQoKSk7CisgICAgLy8gVW5jb25kaXRpb25hbGx5IGNsb25lIHJlZ2lzdGVycyB0
byBlbnN1cmUgY29ycmVjdG5lc3MgZm9yIGNhc2VzIGxpa2UgYHZhciB4ID0geCBpbnN0YW5jZW9m
IHg7IGZ1bmN0aW9uIHgoKSB7fWAuCisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgp
LCBtX2V4cHIxKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1f
ZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJhdG9yLmVtaXRJc0Nl
bGxXaXRoVHlwZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGNvbnN0cnVjdG9yLmdldCgpLCBK
U1R5cGVSYW5nZSB7IEludGVybmFsRnVuY3Rpb25UeXBlLCBKU0Z1bmN0aW9uVHlwZSB9KSwgY3Vz
dG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoaGFz
SW5zdGFuY2VWYWx1ZS5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnBy
b3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5l
cmF0b3IuZW1pdE92ZXJyaWRlc0hhc0luc3RhbmNlKGlzQ3VzdG9tLmdldCgpLCBjb25zdHJ1Y3Rv
ci5nZXQoKSwgaGFzSW5zdGFuY2VWYWx1ZS5nZXQoKSk7Ci0KLSAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGlzQ3VzdG9tLmdldCgpLCBjdXN0b20uZ2V0KCkpOworICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudChoYXNJbnN0YW5jZVZhbHVl
LmdldCgpLCBMaW5rVGltZUNvbnN0YW50OjpmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3lt
Ym9sLCBjdXN0b20uZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoZ2VuZXJh
dG9yLmVtaXRJc09iamVjdChkc3RSZWcuZ2V0KCksIHZhbHVlLmdldCgpKSwgZG9uZS5nZXQoKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3RvdHlwZS5nZXQo
KSwgY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRvci52bSgpLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSk7CkBAIC0zMTkxLDEwICszMTk3LDYgQEAgUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6
OmVtaXRCeXRlY29kZQogICAgIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VPZihkc3RSZWcuZ2V0KCks
IHZhbHVlLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
KGRvbmUuZ2V0KCkpOwotCi0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0eXBlRXJyb3IuZ2V0KCkp
OwotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlJpZ2h0IGhhbmQgc2lkZSBvZiBp
bnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiKTsKLQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
Y3VzdG9tLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYm9v
bCBjb25zdGFudFdhc1NldCA9IHRydWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICAgICAgICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6Ci0gICAgICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNDZWxsKCkgJiYgY2hpbGQu
dmFsdWUoKS5hc0NlbGwoKS0+dHlwZSgpID09IG5vZGUtPnF1ZXJpZWRUeXBlKCkpKTsKKyAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0Nl
bGwoKSAmJiBub2RlLT5xdWVyaWVkVHlwZSgpLmNvbnRhaW5zKGNoaWxkLnZhbHVlKCkuYXNDZWxs
KCktPnR5cGUoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJl
c3VsdDsKICAgICAgICAgICAgICAgICAgICAgY2hpbGQubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKICAg
ICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1ZXJpZWRUeXBlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gbm9kZS0+cXVlcmllZFR5cGUoKS5jb250YWlu
cyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbWF0Y2hlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTQzMzQs
MTAgKzQzMzQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6Ci0gICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7Ci0gICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBjbG9iYmVyV29ybGQoKTsK
QEAgLTQ0NjQsNDMgKzQ0NjAsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUm
IGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgdW5zaWdu
ZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQoYml0cyk7
Ci0gICAgICAgIGlmIChiaXRzID09IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpIHsKLSAg
ICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fdHlwZSA9PSBTcGVjRnVuY3Rpb25XaXRoRGVm
YXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlD
b25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGFic3RyYWN0VmFs
dWUudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Ug
a25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAgLy8gYW5kIHdlIGNh
biByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZsYWdzLiBUaGVzZSBmbGFncyBkb24ndCBjaGFu
Z2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAvLyBvYmplY3QncyBsaWZldGltZS4KLSAgICAg
ICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMp
ID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25z
dGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhYnN0cmFj
dFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0
cnVlOwotICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXSAo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICBvayAmPSAo
c3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpICYgYml0cykgPT0gYml0czsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmJiAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5KSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI4MDIxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTY2LDE3ICs1OTY2LDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2hlY2tfdGR6KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogewot
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVy
cmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24oKTsKLQotICAgICAgICAgICAgTm9kZSogY29uc3RydWN0b3IgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uc3RydWN0b3IpKTsKLSAgICAgICAgICAg
IE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
aGFzSW5zdGFuY2VWYWx1ZSkpOwotCi0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChPdmVycmlkZXNIYXNJbnN0YW5jZSwgT3BJbmZvKG1f
Z3JhcGguZnJlZXplKGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKSksIGNvbnN0cnVj
dG9yLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9vdmVy
cmlkZXNfaGFzX2luc3RhbmNlKTsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2Ugb3BfaWRlbnRp
dHlfd2l0aF9wcm9maWxlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElkZW50aXR5V2l0aFByb2ZpbGU+KCk7CiAgICAgICAgICAgICBOb2Rl
KiBzcmNEc3QgPSBnZXQoYnl0ZWNvZGUubV9zcmNEc3QpOwpAQCAtNjAyNyw3ICs2MDE2LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBhZGRUb0dyYXBoKEluc3RhbmNlT2YsIHZhbHVlLCBwcm90b3R5cGUpKTsKKyAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbnN0YW5jZU9mLCBFZGdlKHZh
bHVlLCBDZWxsVXNlKSwgRWRnZShwcm90b3R5cGUpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgfQogCkBAIC02MDk4LDcgKzYwODcsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfaXNf
Y2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcEluZm8oYnl0ZWNvZGUubV90eXBlKSwg
dmFsdWUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0Nl
bGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdlIHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5
dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZhbHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pc19jZWxsX3dpdGhfdHlwZSk7CiAgICAgICAgIH0KIApAQCAtNzI1Nyw3ICs3MjQ2LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
ICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogaXNLbm93bkl0ZXJGdW5jdGlvbiA9IGFkZFRvR3JhcGgoQ29t
cGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0b3JGdW5jdGlvbiksIHN5bWJvbEl0
ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNBcnJheSA9IGFkZFRvR3JhcGgo
SXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBnZXQoYnl0ZWNvZGUubV9pdGVyYWJs
ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0Nl
bGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdlIHsgQXJyYXlUeXBlLCBBcnJheVR5cGUgfSks
IGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CiAKICAgICAgICAgICAgICAgICAgICAgQnJhbmNo
RGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hEYXRhLmFkZCgpOwogICAgICAgICAg
ICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5jaFRhcmdldChmYXN0QXJyYXlCbG9j
ayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNiBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9wcm9maWxlX3R5
cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX21vdjoK
LSAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pZGVudGl0
eV93aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgogICAgIGNhc2Ugb3BfaW5z
dGFuY2VvZl9jdXN0b206CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgSXNDZWxsV2l0aFR5cGU6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+
cXVlcmllZFR5cGUoKSkpOworICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPnF1ZXJp
ZWRUeXBlKCkucmF3Qml0cygpKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVC
aXROb3Q6CkBAIC0xMTc2LDExICsxMTc2LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgIGNhc2UgQ2hlY2tEZXRhY2hlZDoKICAgICAgICAgcmVhZChNaXNj
RmllbGRzKTsKICAgICAgICAgcmV0dXJuOyAKLSAgICAgICAgCi0gICAgY2FzZSBDaGVja1R5cGVJ
bmZvRmxhZ3M6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOwotICAgICAgICBk
ZWYoSGVhcExvY2F0aW9uKENoZWNrVHlwZUluZm9GbGFnc0xvYywgSlNDZWxsX3R5cGVJbmZvRmxh
Z3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwotICAgICAgICByZXR1cm47CiAK
ICAgICBjYXNlIFBhcnNlSW50OgogICAgICAgICAvLyBOb3RlOiBXZSB3b3VsZCBoYXZlIGVsaW1p
bmF0ZWQgYSBQYXJzZUludCB0aGF0IGhhcyBqdXN0IGEgc2luZ2xlIGNoaWxkIGFzIGFuIEludDMy
VXNlIGluc2lkZSBmaXh1cC4KQEAgLTExOTIsMTEgKzExODcsNiBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAgICAgcmVhZChK
U0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oT3ZlcnJpZGVz
SGFzSW5zdGFuY2VMb2MsIEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBub2RlLT5jaGlsZDEoKSksIExh
enlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6
CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKICAgICAgICAgd3JpdGUoSlNDZWxs
X3N0cnVjdHVyZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAyNiw0NiArMTAyNiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
YXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICAgICAgICAgIGNvbnN0IEFic3RyYWN0
VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBub2RlLT50eXBlSW5mb09wZXJhbmQoKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJpdHMg
PT0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0
YW5jZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gYWJzdHJhY3RWYWx1ZS52
YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGlmIHdlIHNlZSBhIGNl
bGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBhbmQgd2UgY2FuIHJlYWQgaXRzIGlubGluZSB0eXBlIGluZm8gZmxhZ3MuIFRo
ZXNlIGZsYWdzIGRvbid0IGNoYW5nZSBvdmVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVl
LmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RW
YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wg
b2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJl
LmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgb2sgJj0gKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxh
Z3MoKSAmIGJpdHMpID09IGJpdHM7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICBpZiAob2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQw
LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29t
cGFyZUJlbG93RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CiAgICAgY2FzZSBQcm9maWxlQ29u
dHJvbEZsb3c6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIElzRW1w
dHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0
OgpAQCAtMTg4LDcgKzE4Nyw2IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIENoZWNrVmFyYXJnczoKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAg
IGNhc2UgVmFsdWVSZXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNyArMTk5MCw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ug
T3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
ICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgpAQCAtMjA3
NCwyNSArMjA3MywxNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewotICAgICAgICAgICAgLy8gRklYTUU6IEludHJvZHVj
ZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1cmUgdGhhdCBkb2Vzbid0IGRvIGEgY2VsbCBjaGVj
ay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU3ODQKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEluc3RhbmNlT2Y6IHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNw
ZWN1bGF0ZUNlbGwoKQotICAgICAgICAgICAgICAgICYmIGlzNjRCaXQoKSkgewotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKLSAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBJbkJ5SWQ6
IHsKQEAgLTI4MjgsNyArMjgxOSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFs
TGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBjYXNl
IERpcmVjdENhbGw6Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgICAgICBj
YXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbElu
bGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAkocmV2aXNpb24gMjgwMjExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDksMTUgKzEwOSw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBMb2MKICAgICBjYXNlIEJ1dHRlcmZseUxvYzoKICAgICAgICAgb3V0LnByaW50KCJC
dXR0ZXJmbHlMb2MiKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENoZWNr
VHlwZUluZm9GbGFnc0xvYzoKLSAgICAgICAgb3V0LnByaW50KCJDaGVja1R5cGVJbmZvRmxhZ3NM
b2MiKTsKLSAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZUxv
YzoKLSAgICAgICAgb3V0LnByaW50KCJPdmVycmlkZXNIYXNJbnN0YW5jZUxvYyIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAogICAgIGNhc2UgQ2xvc3VyZVZhcmlhYmxlTG9jOgogICAgICAg
ICBvdXQucHJpbnQoIkNsb3N1cmVWYXJpYWJsZUxvYyIpOwogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgJKHJldmlzaW9u
IDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDYgQEAgZW51bSBMb2NhdGlvbktpbmQgewogICAg
IEFycmF5TWFza0xvYywKICAgICBWZWN0b3JMZW5ndGhMb2MsCiAgICAgQnV0dGVyZmx5TG9jLAot
ICAgIENoZWNrVHlwZUluZm9GbGFnc0xvYywKLSAgICBPdmVycmlkZXNIYXNJbnN0YW5jZUxvYywK
ICAgICBDbG9zdXJlVmFyaWFibGVMb2MsCiAgICAgRGlyZWN0QXJndW1lbnRzTG9jLAogICAgIEdl
dHRlckxvYywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAy
ODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQzNiwxMCArMTQzNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgp
ID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0KIAotICAgIEpTVHlwZSBxdWVyaWVkVHlwZSgpCisg
ICAgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGUoKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8dWludDhfdCwgc3RkOjp1bmRlcmx5aW5nX3R5cGU8SlNUeXBlPjo6dHlw
ZT46OnZhbHVlLCAiRW5zdXJlIHRoYXQgdWludDhfdCBpcyB0aGUgdW5kZXJseWluZyB0eXBlIGZv
ciBKU1R5cGUuIik7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1R5cGU+KG1fb3BJbmZv
LmFzPHVpbnQzMl90PigpKTsKKyAgICAgICAgQVNTRVJUKGhhc1F1ZXJpZWRUeXBlKCkpOworICAg
ICAgICByZXR1cm4gSlNUeXBlUmFuZ2U6OmZyb21CaXRzKG1fb3BJbmZvLmFzPHVpbnQzMl90Pigp
KTsKICAgICB9CiAKICAgICBib29sIGhhc1NwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQpAQCAtMTQ0
OSw3ICsxNDQ5LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlw
ZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3BlY3Vs
YXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkpOworICAgICAgICByZXR1cm4gc3BlY3VsYXRp
b25Gcm9tSlNUeXBlUmFuZ2UocXVlcmllZFR5cGUoKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aGFzUmVzdWx0KCkKQEAgLTE4NzcsNyArMTg3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CiAgICAgICAgIGNhc2UgQ2hlY2tJc0NvbnN0YW50OgogICAgICAgICAgICAgcmV0
dXJuIGlzQ2VsbChjaGlsZDEoKS51c2VLaW5kKCkpOwotICAgICAgICBjYXNlIE92ZXJyaWRlc0hh
c0luc3RhbmNlOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CkBAIC0xOTUy
LDE3ICsxOTUxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8VW5pcXVl
ZFN0cmluZ0ltcGwqPigpOwogICAgIH0KIAotICAgIGJvb2wgaGFzVHlwZUluZm9PcGVyYW5kKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrVHlwZUluZm9GbGFnczsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCB0eXBlSW5mb09wZXJhbmQoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGhhc1R5cGVJbmZvT3BlcmFuZCgpICYmIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpIDw9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihVQ0hBUl9NQVgpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFz
PHVpbnQzMl90PigpOwotICAgIH0KLQogICAgIGJvb2wgaGFzVHJhbnNpdGlvbigpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw2IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBc3NlcnRJbkJvdW5kcywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCi0gICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRlKSAv
KiBUYWtlcyBhbiBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUgc2V0
ICovXAogICAgIG1hY3JvKENoZWNrSlNDYXN0LCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUaGlzIGlz
IHRoZSBzYW1lIGFzIGpzQ2FzdCBidXQgYXMgYSBzcGVjdWxhdGlvbiByYXRoZXIgdGhhbiBhc3Nl
cnRpb24gKi9cCiAgICAgbWFjcm8oQ2hlY2tOb3RKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhQYXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXApA
QCAtMzk1LDcgKzM5NCw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhQaGFudG9tTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAotICAgIG1hY3Jv
KE92ZXJyaWRlc0hhc0luc3RhbmNlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xl
YW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQ3VzdG9tLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhNYXRjaFN0cnVjdHVyZSwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgc3Ry
dWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0Jp
dHMoKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3Zh
bHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhQcml2YXRlRmll
bGRQdXRLaW5kIHB1dEtpbmQpIDogbV92YWx1ZShwdXRLaW5kLnZhbHVlKCkpIHsgfQorICAgIGV4
cGxpY2l0IE9wSW5mbyhKU1R5cGVSYW5nZSByYW5nZSkgOiBtX3ZhbHVlKHJhbmdlLnJhd0JpdHMo
KSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8o
VCogcHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChjb25zdHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVu
Y3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxv
Y2F0aW9uUHJvZmlsZSgpKSB7CisgICAgaWYgKGNvbnN0cnVjdG9yLT5pc0pTRnVuY3Rpb24oKSAm
JiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2Zp
bGUoKSkgewogICAgICAgICBEZWZlclRlcm1pbmF0aW9uIGRlZmVyU2NvcGUodm0pOwogICAgICAg
ICBhdXRvIHJhcmVEYXRhID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmVuc3Vy
ZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZ2xvYmFsT2JqZWN0LCBpbmxpbmVDYXBhY2l0
eSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDM3LDcgKzEwMzcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVTdHJp
Y3RFcToKICAgICAgICAgY2FzZSBDb21wYXJlRXFQdHI6CiAgICAgICAgIGNhc2UgU2FtZVZhbHVl
OgotICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIEluc3Rh
bmNlT2Y6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICAgICAgY2FzZSBJc0Vt
cHR5OgpAQCAtMTMxNCw3ICsxMzEzLDYgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKLSAgICAgICAgY2FzZSBDaGVj
a1R5cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgIGNhc2UgQXJy
YXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lv
biAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDkgKzI1NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNl
IENvbXBhcmVFcVB0cjoKICAgICBjYXNlIFNhbWVWYWx1ZToKLSAgICBjYXNlIENoZWNrVHlwZUlu
Zm9GbGFnczoKICAgICBjYXNlIFBhcnNlSW50OgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFu
Y2U6CiAgICAgY2FzZSBJc0VtcHR5OgogICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAg
Y2FzZSBUeXBlT2ZJc09iamVjdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjgwMjExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzY0MywxNiArMzY0Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVj
a1R5cGVJbmZvRmxhZ3M6IHsKLSAgICAgICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhub2Rl
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5j
ZTogewotICAgICAgICBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAgICAgICBjb21waWxl
SW5zdGFuY2VPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI4MDIx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0MzIsMjEgKzQ0MzIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNl
IENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdz
KG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAg
ICAgICAgIGNvbXBpbGVQYXJzZUludChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICBjb21waWxlT3ZlcnJpZGVz
SGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgSW5z
dGFuY2VPZjogewogICAgICAgICBjb21waWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwODEsMjAgKzQwODEsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyCiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MoTm9kZSogbm9kZSkKLXsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLQotICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAg
IC8vIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGNoZWNraW5nIGlmIGEgc2luZ2xlIGJpdCBp
cyBzZXQuIElmIHdlIHdhbnQgdG8gY2hlY2sgbW9yZQotICAgIC8vIHRoYW4gb25lIGJpdCBhdCBv
bmNlLCB3ZSdsbCBuZWVkIHRvIGZpeCB0aGlzOgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODU3MDUKLSAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGVJ
bmZvRmxhZ3MsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3Q4KE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobm9k
ZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7Ci0KLSAgICBub1Jlc3VsdChub2RlKTsKLX0KLQogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSk7CkBAIC00MTUyLDEzNiArNDEzOCw3
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogewotICAgIE5vZGUqIGhhc0luc3RhbmNl
VmFsdWVOb2RlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOwotICAgIEpTRnVuY3Rpb24qIGRlZmF1
bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5jZWxsT3Bl
cmFuZCgpLT52YWx1ZSgpKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90
RGVmYXVsdDsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKyNlbmRp
ZgogCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0
dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KKworICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVnczsK
KyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgLy8gSXQgd291bGQg
YmUgZ3JlYXQgaWYgY29uc3RhbnQgZm9sZGluZyBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgdGhlIGNh
c2Ugd2hlcmUgd2Uga25ldyB0aGUgaGFzSW5zdGFuY2UgZnVuY3Rpb24KLSAgICAvLyB3YXMgYSBj
b25zdGFudC4gVW5mb3J0dW5hdGVseSwgdGhlIGZvbGRpbmcgcnVsZSBmb3IgT3ZlcnJpZGVzSGFz
SW5zdGFuY2UgaXMgaW4gdGhlIHN0cmVuZ3RoIHJlZHVjdGlvbiBwaGFzZQotICAgIC8vIHNpbmNl
IGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWVOb2RlLT5pc0Nl
bGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uICE9IGhhc0luc3RhbmNl
VmFsdWVOb2RlLT5hc0NlbGwoKSkgewotICAgICAgICBKU1ZhbHVlUmVncyBoYXNJbnN0YW5jZVZh
bHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBpZiAobm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5ncHIoKSwgVHJ1c3RlZEltbVB0cihu
b2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgICAgICBwcm90b3R5cGVSZWdzID0gSlNWYWx1ZVJl
Z3MocHJvdG90eXBlLmdwcigpKTsKICNlbHNlCi0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3RE
ZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBo
YXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2Vs
bE9wZXJhbmQoKSkpKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIHNjcmF0Y2gzLmdwcigpKTsKKyAgICAgICAgcHJvdG90eXBlUmVncyA9IEpTVmFs
dWVSZWdzKHNjcmF0Y2gzLmdwcigpLCBwcm90b3R5cGUuZ3ByKCkpOwogI2VuZGlmCi0gICAgfQot
Ci0gICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4K
LSAgICBtX2ppdC50ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZXN1bHRH
UFIpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAKLSAgICBpZiAoIW5vdERlZmF1bHQu
ZW1wdHkoKSkgewotICAgICAgICBub3REZWZhdWx0LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIHByb3RvdHlwZVJl
Z3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncykpOwogICAgIH0KIAotICAgIGRvbmUu
bGluaygmbV9qaXQpOwotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhO
b2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJl
Z3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hH
UFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCi17CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAg
ICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCks
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgdmFsdWVHUFIs
IHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaDJHUFIsCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBl
KFNwZWNPYmplY3QgfCB+U3BlY0NlbGwpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5z
dGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
dHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
SW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBnZW4uc3R1YkluZm8oKSwgdmFsdWVHUFIsIHByb3RvdHlwZVJlZ3MpOwogICAgIH0KICAgICAK
ICAgICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKLX0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAgICAgICAm
JiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgCi0gICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7Ci0gICAgICAgIAot
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7Ci0gICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKLSAgICAgICAgfQotICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsK
LSAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsKLSAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNo
Mi5ncHIoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9k
ZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIAot
ICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7Ci0gICAgCi0gICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwotICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICBKU1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIAot
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7Ci0gICAgCi0gICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKLSAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKLSAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7Ci0gICAgfQotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7Ci0gICAgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVn
cygpOwotICAgIAotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZVJlZ3MpOwotICAgIG1vdmVGYWxz
ZVRvKHJlc3VsdEdQUik7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKLSAgICAKLSAgICBpc0NlbGwubGluaygmbV9qaXQpOwotICAgIAotICAgIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJl
Z3MpOwotICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZh
bGlkR1BSUmVnLCBzbG93Q2FzZSk7Ci0gICAgCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAg
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICByZXR1cm47CiB9CkBA
IC01MTE2LDE4ICs1MDM4LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mQ3UKICAgICAvLyBTeW1ib2wuaGFzSW5zdGFuY2UgYmVjb21lcyBwb3B1bGFyIHdpbGwgbGlr
ZWx5IHJlbWFpbiB0aGF0IHdheS4KIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgY29uc3RydWN0b3IodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGhhc0luc3RhbmNlVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJl
ZyBjb25zdHJ1Y3RvckdQUiA9IGNvbnN0cnVjdG9yLmdwcigpOworICAgIEpTVmFsdWVSZWdzIGNv
bnN0cnVjdG9yUmVncyA9IGNvbnN0cnVjdG9yLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3MgaGFzSW5zdGFuY2VSZWdzID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBzbG93Q2FzZSA9IG1faml0Lmp1bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1
Y3RvckdQUiwgaGFzSW5zdGFuY2VSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9y
UmVncywgaGFzSW5zdGFuY2VSZWdzKSk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiB9CkBAIC01MTQ0LDEwICs1MDY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhUeQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
Tm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwogCi0gICAgICAgIG1f
aml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUtPnF1ZXJpZWRUeXBlKCkpLAot
ICAgICAgICAgICAgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuaXNDZWxsV2l0aFR5cGUodmFs
dWVSZWdzLnBheWxvYWRHUFIoKSwgbm9kZS0+cXVlcmllZFR5cGUoKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgYmxlc3NCb29sZWFuKHJlc3VsdEdQUik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTUxNjYsMTAgKzUwODUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSXNDZWxsV2l0aFR5CiAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0g
Y2VsbC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAot
ICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwKLSAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAg
ICAgICAgIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKGNlbGxHUFIs
IG5vZGUtPnF1ZXJpZWRUeXBlKCksIHJlc3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihy
ZXN1bHRHUFIpOwogICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICByZXR1cm47CkBAIC0xMTMyNyw3ICsxMTI0Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlRnVuY3Rpb24oRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKLSAgICBzcGVjdWxhdGVDZWxs
VHlwZShlZGdlLCBjZWxsLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICBERkdf
VFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY0Z1
bmN0aW9uLCBtX2ppdC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNlbGwpKTsKIH0KIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24oRWRnZSBlZGdlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjgwMjEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NTMsMTAgKzc1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlbmVyaWNK
U1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAg
ICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNl
KTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFs
dWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRH
UFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNo
MkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsK
ICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0
YW5jZU9mQ3VzdG9tKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5j
ZShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVJc0NlbGxXaXRoVHlwZShOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlSXNUeXBlZEFycmF5VmlldyhOb2RlKik7CkBAIC0xMzYzLDcgKzEzNjEsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAKLSAg
ICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrSWRlbnQoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlUGFyc2VJbnQoTm9kZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTEsMjYgKzMxMSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgZG8gdGhpcyBpbiBjb25z
dGFudCBmb2xkaW5nIGJ1dCB0aGlzIGN1cnJlbnRseSByZWxpZXMgb24gT1NSIGV4aXQgaGlzdG9y
eToKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDgzMgotICAgICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOiB7Ci0gICAgICAgICAgICBp
ZiAoIW1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpLT5pc0NlbGxDb25zdGFudCgpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS5ub2RlKCkt
PmFzQ2VsbCgpICE9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkgewotICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4odHJ1
ZSkpOwotICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIW1fZ3JhcGguaGFzRXhpdFNpdGUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIEJh
ZFR5cGVJbmZvRmxhZ3MpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugb3B0aW1pc3RpY2FsbHkg
YXNzdW1lIHRoYXQgd2Ugd2lsbCBub3Qgc2VlIGEgZnVuY3Rpb24gdGhhdCBoYXMgYSBjdXN0b20g
aW5zdGFuY2VvZiBvcGVyYXRpb24gYXMgdGhleSBzaG91bGQgYmUgcmFyZS4KLSAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hl
Y2tUeXBlSW5mb0ZsYWdzLCBtX25vZGUtPm9yaWdpbiwgT3BJbmZvKEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UpLCBFZGdlKG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBDZWxsVXNlKSk7Ci0g
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVh
bihmYWxzZSkpOwotICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gRklYTUU6
IFdlIGhhdmUgYSBsb3Qgb2Ygc3RyaW5nIGNvbnN0YW50LWZvbGRpbmcgcnVsZXMgaGVyZS4gSXQg
d291bGQgYmUgZ3JlYXQgdG8KICAgICAgICAgLy8gbW92ZSB0aGVzZSB0byB0aGUgYWJzdHJhY3Qg
aW50ZXJwcmV0ZXIgb25jZSBBYnN0cmFjdFZhbHVlIGNhbiBzdXBwb3J0IExhenlKU1ZhbHVlLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjA0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw4ICsyNzUsNiBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBJc0NhbGxhYmxlOgogICAg
IGNhc2UgSXNDb25zdHJ1Y3RvcjoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6Ci0gICAgY2Fz
ZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAg
ICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgogICAgIGNhc2Ug
RG91YmxlUmVwOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDEyICsxNDk3LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICBjb21waWxlVHlw
ZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxh
Z3M6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAgICAgICAg
IGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEyNzEzLDY1ICsxMjcwNywyMyBAQCBwcml2YXRlOgogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UoKQotICAgIHsKLSAgICAgICAgRnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJ
bnN0YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxsT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQo
ZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNlbGwoKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4o
dm0oKSkpOwotCi0gICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgZGVmYXVsdEhhc0luc3RhbmNlID0g
bV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKLQotICAgICAgICAvLyBVbmxpa2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qg
d29ycnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVwIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBo
YXZlIHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBpcyBhIGNvbnN0YW50IGFzIEIzIHNob3Vs
ZCBmaXggaXQgZm9yIHVzLgotCi0gICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJ
bnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJbnN0YW5jZSwgZnJvemVuUG9pbnRlcihk
ZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KGRlZmF1bHRIYXNJbnN0YW5jZSkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oZGVmYXVsdEhhc0luc3RhbmNlLCBjb250aW51YXRpb24pOwotICAgICAg
ICBWYWx1ZUZyb21CbG9jayBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9v
dXQuYW5jaG9yKG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVy
b0V4dDMyKGNvbnN0cnVjdG9yLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsK
LSAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBo
aShJbnQzMiwgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVmYXVsdEhh
c0luc3RhbmNlUmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5m
b0ZsYWdzKCkKLSAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZFR5cGVJ
bmZvRmxhZ3MsIG5vVmFsdWUoKSwgbnVsbHB0ciwKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1pl
cm8zMigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7Ci0gICAg
fQotICAgIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoKQogICAgIHsKICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisK
KyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IENlbGxVc2UpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVlOworICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBM
VmFsdWUgcHJvdG90eXBlOwotICAgICAgICBib29sIHZhbHVlSXNDZWxsOwogICAgICAgICBib29s
IHByb3RvdHlwZUlzQ2VsbDsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UKLSAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09
IENlbGxVc2UpIHsKLSAgICAgICAgICAgIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsK
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAgICAgIHBy
b3RvdHlwZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIHZhbHVlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0gYWJzdHJh
Y3RWYWx1ZShtX25vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMTI4MDEsMTQgKzEyNzUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogICAgICAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwotICAgICAg
ICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGlzQ2VsbCA9IGppdC5icmFuY2hJZkNlbGwodmFsdWVHUFIpOwotICAgICAg
ICAgICAgICAgICAgICBqaXQuYm94Qm9vbGVhblBheWxvYWQoZmFsc2UsIHJlc3VsdEdQUik7Ci0g
ICAgICAgICAgICAgICAgICAgIGRvbmVKdW1wID0gaml0Lmp1bXAoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaXNDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
ICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlSXNDZWxsKQogICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlR1BSKSk7CkBA
IC0xMjgzMywxNCArMTI3NzcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9HU3NpSkog
b3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRv
ci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1
bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3Vs
dEdQUiwKQEAgLTEyODUwLDcgKzEyNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGlt
aXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
R1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgdmFsdWVHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlw
ZUdQUikuY2FsbCgpOwpAQCAtMTI4NjQsOSArMTI4MDYsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxp
bmtCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoZG9uZUp1
bXAuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZG9uZUp1bXAubGluaygmaml0KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyByZXR1cm5zIGEgYm94ZWQg
Ym9vbGVhbi4KQEAgLTEyODc3LDcgKzEyODE2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJv
NjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpOwpAQCAtMTg5
ODgsMTUgKzE4OTI3LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIGlzRnVuY3Rpb24o
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0g
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGws
IFNwZWNGdW5jdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1
cm4gaXNUeXBlKGNlbGwsIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbFdp
dGhUeXBlKGNlbGwsIEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5cGUsIEpTQm91bmRGdW5jdGlv
blR5cGUgfSwgU3BlY0Z1bmN0aW9uLCB0eXBlKTsKICAgICB9CiAgICAgTFZhbHVlIGlzTm90RnVu
Y3Rpb24oTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAg
ICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3Bl
Y0NlbGwsIH5TcGVjRnVuY3Rpb24pKQotICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAg
ICAgcmV0dXJuIGlzTm90VHlwZShjZWxsLCBKU0Z1bmN0aW9uVHlwZSk7CisgICAgICAgIHJldHVy
biBtX291dC5sb2dpY2FsTm90KGlzRnVuY3Rpb24oY2VsbCwgdHlwZSkpOwogICAgIH0KICAgICAg
ICAgICAgIAogICAgIExWYWx1ZSBpc0V4b3RpY0ZvclR5cGVvZihMVmFsdWUgY2VsbCwgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlz
aW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjEsMTMgKzYyMSwxMyBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVuCiAgICAgcmV0dXJuIGFycmF5Owog
fQogCi1zdGF0aWMgYm9vbCBjaGVja0ZvcmJpZGRlblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvKQorc3RhdGljIGJvb2wg
Y2hlY2tGb3JiaWRkZW5Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIHZhbHVlLCBKU09iamVjdCogcHJvdG8pCiB7CiAgICAgaWYgKHZhbHVlID09IHByb3Rv
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHByb3RvdHlw
ZSBjaGFpbiBvZiBwcm90byBoYXNuJ3QgYmVlbiBtb2RpZmllZCB0byBpbmNsdWRlIHZhbHVlLgot
ICAgIHJldHVybiBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgcHJv
dG8sIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUtPmlzUHJvdG90eXBlT2YoZ2xvYmFsT2JqZWN0
LCBwcm90byk7CiB9CiAKIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFu
Y2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpA
QCAtNjk0LDcgKzY5NCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5z
dGEKICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmhlcml0czxQcm94eU9iamVjdD4odm0pKQogICAg
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAoSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVl
LCBwcm90b3R5cGUpKQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgb2JqZWN0
LT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgYXNPYmplY3QodmFsdWUpKSkKICAgICAgICAg
ICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBhcnJheS0+bGVuZ3Ro
KCksIHZhbHVlKTsKIAogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJ
KHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw4ICs5MzIsMjIgQEAgcHVibGljOgogICAg
IEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZIZWFwQmln
SW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJp
Z0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0K
LSAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90
RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BS
LCBKU0Z1bmN0aW9uVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU1R5cGVSYW5nZSB7IEpTRnVu
Y3Rpb25UeXBlLCBKU0JvdW5kRnVuY3Rpb25UeXBlIH0pOyB9CisgICAgSnVtcCBicmFuY2hJZk5v
dEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQ
UiwgSlNUeXBlUmFuZ2UgeyBKU0Z1bmN0aW9uVHlwZSwgSlNCb3VuZEZ1bmN0aW9uVHlwZSB9KTsg
fQorCisgICAgdm9pZCBpc0NlbGxXaXRoVHlwZShHUFJSZWcgY2VsbEdQUiwgSlNUeXBlUmFuZ2Ug
cmFuZ2UsIEdQUlJlZyBkc3QpCisgICAgeworICAgICAgICBpZiAocmFuZ2UubGFzdCA9PSByYW5n
ZS5maXJzdCkgeworICAgICAgICAgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihyYW5nZS5maXJzdCks
IGRzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQo
cmFuZ2UubGFzdCA+IHJhbmdlLmZpcnN0KTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzY3Jh
dGNoUmVnaXN0ZXIoKTsKKyAgICAgICAgbG9hZDgoQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihyYW5nZS5maXJzdCksIHNjcmF0Y2gpOworICAgICAgICBjb21wYXJlMzIoQmVsb3dPckVxdWFs
LCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIocmFuZ2UubGFzdCAtIHJhbmdlLmZpcnN0KSwgZHN0KTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBpc0VtcHR5KEdQUlJlZyBncHIsIEdQUlJlZyBkc3QpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjgwMjExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjksNyArMzY5LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9j
aGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3RvdHlwZV9v
ZikKLSAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAgICAgICAg
IERFRklORV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2Vv
Zl9jdXN0b20pCiAgICAgICAgIERFRklORV9PUChvcF9pc19lbXB0eSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTc0LDcgKzU3NCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2ZfY3VzdG9t
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0eShjb25z
dCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMzQgKzEx
Nyw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEkKICAgICBlbWl0
U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9v
dmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVy
cmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25z
dHJ1Y3RvcjsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2Rl
Lm1faGFzSW5zdGFuY2VWYWx1ZTsKLQotICAgIGVtaXRMb2FkUGF5bG9hZChoYXNJbnN0YW5jZVZh
bHVlLCByZWdUMCk7Ci0gICAgLy8gV2UgZG9uJ3QganVtcCBpZiB3ZSBrbm93IHdoYXQgU3ltYm9s
Lmhhc0luc3RhbmNlIHdvdWxkIGRvLgotICAgIEp1bXAgaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwg
PSBlbWl0SnVtcElmTm90SlNDZWxsKGhhc0luc3RhbmNlVmFsdWUpOwotICAgIEp1bXAgY3VzdG9t
aGFzSW5zdGFuY2VWYWx1ZSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VT
eW1ib2xGdW5jdGlvbigpKSk7Ci0KLSAgICAvLyBXZSBrbm93IHRoYXQgY29uc3RydWN0b3IgaXMg
YW4gb2JqZWN0IGZyb20gdGhlIHdheSBieXRlY29kZSBpcyBlbWl0dGVkIGZvciBpbnN0YW5jZW9m
IGV4cHJlc3Npb25zLgotICAgIGVtaXRMb2FkUGF5bG9hZChjb25zdHJ1Y3RvciwgcmVnVDApOwot
Ci0gICAgLy8gQ2hlY2sgdGhhdCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZScgaS5lLiB0aGUgb2JqZWN0IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQgZnVu
Y3Rpb24uCi0gICAgdGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSks
IHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqdW1wKCk7Ci0KLSAgICBoYXNJbnN0YW5jZVZhbHVl
Tm90Q2VsbC5saW5rKHRoaXMpOwotICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlz
KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwotCi0gICAgZG9uZS5saW5rKHRo
aXMpOwotICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7Ci0KLX0KLQogdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5zdGFuY2Vv
Zj4oKTsKQEAgLTE1Nyw4ICsxMjksNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNv
bnN0IEluc3RyCiAgICAgZW1pdExvYWRQYXlsb2FkKHZhbHVlLCByZWdUMik7CiAgICAgZW1pdExv
YWRQYXlsb2FkKHByb3RvLCByZWdUMSk7CiAKLSAgICAvLyBDaGVjayB0aGF0IHByb3RvIGFyZSBj
ZWxscy4gYmFzZVZhbCBtdXN0IGJlIGEgY2VsbCAtIHRoaXMgaXMgY2hlY2tlZCBieSB0aGUgZ2V0
X2J5X2lkIGZvciBTeW1ib2wuaGFzSW5zdGFuY2UuCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHZhbHVlKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvdG8pOwog
ICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKApAQCAtMTk0LDkgKzE2NCw4IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEkKICAgICBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yJiBnZW4gPSBtX2luc3RhbmNlT2ZzW21faW5zdGFuY2VPZkluZGV4KytdOwog
ICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIGVtaXRMb2FkVGFn
KHZhbHVlLCByZWdUMCk7CiAgICAgZW1pdExvYWRUYWcocHJvdG8sIHJlZ1QzKTsKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgZHN0LCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhy
ZWdUMCwgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDEpKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgZHN0LCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QxKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKIH0KIApAQCAtMjExLDkgKzE4MCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bnN0YW5jZW9mX2N1c3RvbSgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9
IGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdU
MSwgcmVnVDApOwotICAgIGVtaXRMb2FkUGF5bG9hZChjb25zdHJ1Y3RvciwgcmVnVDIpOwotICAg
IGVtaXRMb2FkKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1Q0LCByZWdUMyk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHJlZ1QyLCBKU1ZhbHVlUmVncyhyZWdUNCwg
cmVnVDMpKTsKKyAgICBlbWl0TG9hZChjb25zdHJ1Y3RvciwgcmVnVDMsIHJlZ1QyKTsKKyAgICBl
bWl0TG9hZChoYXNJbnN0YW5jZVZhbHVlLCByZWdUNSwgcmVnVDQpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBK
U1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpKTsKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmV0dXJu
VmFsdWVHUFIpOwogfQogICAgIApAQCAtMzA0LDEyICsyNzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXNfY2VsbF93aXRoX3R5cGUoY29ucwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fb3BlcmFuZDsKLSAgICBpbnQgdHlwZSA9IGJ5dGVjb2RlLm1fdHlwZTsKIAogICAgIGVtaXRM
b2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZO
b3RDZWxsKHJlZ1QxKTsKIAotICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpLCByZWdUMCk7Cisg
ICAgaXNDZWxsV2l0aFR5cGUocmVnVDAsIEpTVHlwZVJhbmdlIHsgYnl0ZWNvZGUubV9maXJzdFR5
cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMzIgKzEy
MSw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEkKICAgICBlbWl0
U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9v
dmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVy
cmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25z
dHJ1Y3RvcjsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2Rl
Lm1faGFzSW5zdGFuY2VWYWx1ZTsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoaGFzSW5z
dGFuY2VWYWx1ZSwgcmVnVDApOwotCi0gICAgLy8gV2UgZG9uJ3QganVtcCBpZiB3ZSBrbm93IHdo
YXQgU3ltYm9sLmhhc0luc3RhbmNlIHdvdWxkIGRvLgotICAgIEp1bXAgY3VzdG9taGFzSW5zdGFu
Y2VWYWx1ZSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5j
dGlvbigpKSk7Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNvbnN0cnVjdG9yLCByZWdU
MCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGNvbnN0cnVjdG9yICdJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlJyBpLmUuIHRoZSBvYmplY3QgaXMgbm90IGEgQy1BUEkgdXNlciBub3IgYSBib3Vu
ZCBmdW5jdGlvbi4KLSAgICB0ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSwgcmVnVDApOwotICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAg
fSk7Ci0gICAgSnVtcCBkb25lID0ganVtcCgpOwotCi0gICAgY3VzdG9taGFzSW5zdGFuY2VWYWx1
ZS5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSks
IHJlZ1QwKTsKLQotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2Y+KCk7CkBAIC0xNTksOCArMTMzLDYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cgogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIodmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Rv
LCByZWdUMSk7CiAgICAgCi0gICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuIGJhc2VW
YWwgbXVzdCBiZSBhIGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgdGhlIGdldF9ieV9pZCBmb3Ig
U3ltYm9sLmhhc0luc3RhbmNlLgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MiwgdmFsdWUpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8p
OwogCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCkBAIC0zMjYsMTIgKzI5OCwxMSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOwotICAgIGludCB0eXBlID0gYnl0ZWNvZGUubV90
eXBlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIEp1
bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAotICAgIGNvbXBhcmU4KEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKHR5cGUpLCByZWdUMCk7CisgICAgaXNDZWxsV2l0aFR5cGUocmVnVDAsIEpTVHlwZVJh
bmdlIHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSwgcmVnVDAp
OwogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgSnVt
cCBkb25lID0ganVtcCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMjQsMTggKzIzMjQs
MTcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEdldAogfQogI2VuZGlm
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCBz
aXplX3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhh
c0luc3RhbmNlKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9m
Q3VzdG9tLCBzaXplX3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRDb25zdHJ1Y3RvciwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRDb25zdHJ1Y3Rvcik7CiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRIYXNJbnN0YW5jZSk7CiAKLSAgICBpZiAoY29uc3RydWN0b3ItPmhh
c0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKQotICAgICAg
ICByZXR1cm4gMTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNJbnN0YW5jZW9mT3BlcmF0
b3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpOwog
fQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQpAQCAtMjg2Nywz
NCArMjg2NiwzMiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpCiAg
ICAgcmV0dXJuIEpTV2l0aFNjb3BlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNj
b3BlLCBvYmplY3QpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5z
dGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0Nl
bGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRQcm90byk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAg
ICAgCi0gICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsIHByb3RvKTsKKyAgICBib29sIHJlc3VsdCA9IGpzSXNQcm90b3R5cGVP
ZihnbG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90
bykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRQcm90byk7CiAgICAgCi0gICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVm
YXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvKTsKKyAgICBib29sIHJl
c3VsdCA9IGpzSXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1
ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKSk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwotICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2
bSwgY29kZUJsb2NrLCB2YWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pKSkKKyAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgdmFsdWUtPnN0cnVjdHVy
ZSh2bSkpKQogICAgICAgICByZXBhdGNoSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgdmFsdWUsIHByb3RvLCAqc3R1YkluZm8sIHJlc3VsdCk7CiAgICAgCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw4
ICsyNzEsOSBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgc2l6ZV90
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCwgRUNNQU1vZGUpKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgSlND
ZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgSlNPYmplY3QqIG9iamVjdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVl
IHByb3RvKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZP
cHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqIHZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHBy
b3RvKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQ29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRIYXNJbnN0YW5jZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaXpl
RnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzLCBpbnQzMl90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
U2l6ZUZyYW1lRm9yVmFyYXJncywgaW50MzJfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldHVw
Rm9yd2FyZEFyZ3VtZW50c0ZyYW1lLCBDYWxsRnJhbWUqLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpKTsKQEAgLTMw
Myw3ICszMDQsNiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkV4Y2VwCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enpXaXRoQ2FsbEZy
YW1lLCB2b2lkLCAoVk0qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
UmV0cmlldmVBbmRDbGVhckV4Y2VwdGlvbklmQ2F0Y2hhYmxlLCBKU0NlbGwqLCAoVk0qKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVf
dCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVj
dCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpOwogCiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQWRkLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25W
YWx1ZUFkZFByb2ZpbGVkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJp
dGhQcm9maWxlKikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShy
ZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjE5LDIxICsxMjE5LDE4IEBAIHZvaWQgcmVwYXRjaFNldFBy
aXZhdGVCcmFuZChKU0dsb2JhbE9iamUKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW5zdGFuY2VPZigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZh
bHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdh
c0ZvdW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZVZh
bHVlLmlzQ2VsbCgpKTsgLy8gc2hvdWxkQ29uc2lkZXJDYWNoaW5nIHJlamVjdHMgbm9uLWNlbGxz
LgotICAgIAogICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAKICAgICB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICAK
LSAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIFJlZlB0
cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CkBAIC0xMjc5LDExICsx
Mjc2LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmMKIH0KIAog
dm9pZCByZXBhdGNoSW5zdGFuY2VPZigKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3Rv
dHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpT
VmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3
YXNGb3VuZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7Ci0gICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
dmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVw
T25DYWNoZSkKKyAgICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCB2YWx1ZSwgcHJvdG90eXBlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2Fj
aGUpCiAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3Bl
cmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCByZXBhdGNo
SW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVCbAogdm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5k
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBib29sIHdhc0ZvdW5kLCAgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaENo
ZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCBy
ZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFs
dWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQp
Owordm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpT
Q2VsbCogdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wg
d2FzRm91bmQpOwogdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKFZNJiwgQ2FsbEZyYW1lKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1lKiwg
Q2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KTsKIHZvaWQgbGlua1Nsb3dGb3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMywyOSArNjAzLDM2IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXgKICAgICBMTElOVF9SRVRVUk4oUmVnRXhw
T2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4
cCkpOwogfQogCisjaWYgQ09NUElMRVIoTVNWQykKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pc19jZWxsX3dpdGhfdHlwZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgaWYgKCF2
YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihmYWxzZSkpOwor
ICAgIEpTVHlwZVJhbmdlIHJhbmdlIHsgYnl0ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1f
bGFzdFR5cGUgfTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHJhbmdlLmNvbnRhaW5zKHZh
bHVlLmFzQ2VsbCgpLT50eXBlKCkpKSk7Cit9CisjZW5kaWYKKwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2luc3RhbmNlb2YpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5zdGFuY2VvZj4oKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgcHJv
dG8gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm90b3R5cGUpOwotICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBwcm90bykpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNQ
cm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpKSk7CiB9CiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSkKIHsKICAg
ICBMTElOVF9CRUdJTigpOwotCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNl
b2ZDdXN0b20+KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3ZhbHVlKTsKICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fY29uc3RydWN0b3IpOwogICAgIEpTVmFsdWUgaGFzSW5zdGFu
Y2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFs
dWUpOwotCi0gICAgQVNTRVJUKGNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCho
YXNJbnN0YW5jZVZhbHVlICE9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24oKSB8fCAhY29uc3RydWN0b3IuZ2V0T2JqZWN0KCktPnN0cnVjdHVyZSh2
bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLQotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5oYXNJbnN0
YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgTExJTlRf
UkVUVVJOKHJlc3VsdCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0luc3RhbmNlb2ZP
cGVyYXRvcihnbG9iYWxPYmplY3QsIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1
ZSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X3JlZ2V4cCk7CisjaWYgQ09NUElMRVIoTVNWQykKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfaXNfY2VsbF93aXRoX3R5cGUpOworI2VuZGlmCiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDM1
ICsxMjg2LDYgQEAgbGxpbnRPcFdpdGhQcm9maWxlKG9wX2JpdG5vdCwgT3BCaXRub3QsIAogICAg
IGRpc3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCBP
cE92ZXJyaWRlc0hhc0luc3RhbmNlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBn
ZXQobV9kc3QsIHQzKQotICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KLQotICAgICMgRmlyc3QgY2hlY2sgaWYgaGFzSW5zdGFuY2VWYWx1ZSBpcyB0aGUgb25lIG9u
IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdCi0gICAgZ2V0KG1faGFzSW5z
dGFuY2VWYWx1ZSwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDAsIENlbGxUYWcsIHQyLCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCkKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSwgdDIpCi0gICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsCi0KLSAgICAjIFdl
IGRvbid0IG5lZWQgaGFzSW5zdGFuY2VWYWx1ZSdzIHRhZyByZWdpc3RlciBhbnltb3JlLgotICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDFdLCB0MQotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uW3QxXSwgdDEKLSAgICBiaW5lcSB0MSwgdDIsIC5vcE92
ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3REZWZhdWx0Ci0KLSAgICAjIFdlIGtub3cgdGhlIGNv
bnN0cnVjdG9yIGlzIGEgY2VsbC4KLSAgICBnZXQobV9jb25zdHJ1Y3RvciwgdDApCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoc2l6ZSwgdDAsIHQxKQotICAgIHRi
eiBKU0NlbGw6Om1fZmxhZ3NbdDFdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCB0MAot
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkK
LQotLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGw6Ci0ub3BPdmVycmlkZXNoYXNJ
bnN0YW5jZVZhbHVlTm90RGVmYXVsdDoKLSAgICBzdG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLWVuZCkKLQogCiBsbGludE9wV2l0aFJldHVybihvcF9p
c19lbXB0eSwgT3BJc0VtcHR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGdldChtX29wZXJhbmQsIHQxKQpAQCAtMTM2NiwxNCArMTMzNywyMSBAQCBlbmQpCiAKIAog
bGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCitpZiBYODZfV0lOCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfY2VsbF93aXRoX3R5cGUpCisgICAgZGlzcGF0
Y2goKQorZWxzZQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQwLCB0MykKICAgICBiaW5lcSB0MCwgQ2VsbFRhZywgLm5vdENlbGxD
YXNlCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQotICAgIGNi
ZXEgSlNDZWxsOjptX3R5cGVbdDNdLCB0MCwgdDEKLSAgICByZXR1cm4oQm9vbGVhblRhZywgdDEp
CisgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAg
YmJiIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIC5ub3RDZWxsQ2FzZQorICAgIGdldHUoc2l6ZSwg
T3BJc0NlbGxXaXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCisgICAgYmJhIEpTQ2VsbDo6bV90eXBl
W3QzXSwgdDIsIC5ub3RDZWxsQ2FzZQorICAgIHJldHVybihCb29sZWFuVGFnLCAxKQogLm5vdENl
bGxDYXNlOgogICAgIHJldHVybihCb29sZWFuVGFnLCAwKQorZW5kCiBlbmQpCiAKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ2LDI5ICsx
MzQ2LDYgQEAgbGxpbnRPcFdpdGhQcm9maWxlKG9wX2JpdG5vdCwgT3BCaXRub3QsIAogZW5kKQog
CiAKLWxsaW50T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwgT3BPdmVycmlkZXNIYXNJbnN0
YW5jZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZ2V0KG1fZHN0LCB0MykKLQot
ICAgIGdldChtX2hhc0luc3RhbmNlVmFsdWUsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQwKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgotICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uW3QyXSwgdDIKLSAg
ICBicW5lcSB0MCwgdDIsIC5vcE92ZXJyaWRlc0hhc0luc3RhbmNlTm90RGVmYXVsdFN5bWJvbAot
Ci0gICAgZ2V0KG1fY29uc3RydWN0b3IsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQwKQotICAgIHRieiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlLCB0MQotICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQotICAgIHN0b3JlcSB0
MSwgW2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goKQotCi0ub3BPdmVycmlkZXNIYXNJbnN0YW5j
ZU5vdERlZmF1bHRTeW1ib2w6Ci0gICAgc3RvcmVxIFZhbHVlVHJ1ZSwgW2NmciwgdDMsIDhdCi0g
ICAgZGlzcGF0Y2goKQotZW5kKQotCi0KIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2VtcHR5LCBP
cElzRW1wdHksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCkBA
IC0xNDM5LDE1ICsxNDE2LDIxIEBAIGVsc2UKIGVuZAogCiBsbGludE9wV2l0aFJldHVybihvcF9p
c19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKLSAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlwZSwg
dDApCitpZiBYODZfNjRfV0lOCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNf
Y2VsbF93aXRoX3R5cGUpCisgICAgZGlzcGF0Y2goKQorZWxzZQogICAgIGdldChtX29wZXJhbmQs
IHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQzKQogICAgIGJ0cW56
IHQzLCBub3RDZWxsTWFzaywgLm5vdENlbGxDYXNlCi0gICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0
M10sIHQwLCB0MQotICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQotICAgIHJldHVybih0MSkKKyAgICBn
ZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fZmlyc3RUeXBlLCB0MCkKKyAgICBiYmIgSlND
ZWxsOjptX3R5cGVbdDNdLCB0MCwgLm5vdENlbGxDYXNlCisgICAgZ2V0dShzaXplLCBPcElzQ2Vs
bFdpdGhUeXBlLCBtX2xhc3RUeXBlLCB0MikKKyAgICBiYmEgSlNDZWxsOjptX3R5cGVbdDNdLCB0
MiwgLm5vdENlbGxDYXNlCisgICAgcmV0dXJuKFZhbHVlVHJ1ZSkKIC5ub3RDZWxsQ2FzZToKICAg
ICByZXR1cm4oVmFsdWVGYWxzZSkKK2VuZAogZW5kKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9u
IDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTYyLDcgKzU2Miw2IEBAIGNvbnN0IE51bWJlck9m
VHlwZWRBcnJheVR5cGVzRXhjbHVkaW5nQmkKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNv
bnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBjb25zdGV4cHIgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAotY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IGNvbnN0ZXhwciBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlCiBjb25zdCBPdmVycmlkZXNHZXRQcm90b3R5cGVPdXRP
ZkxpbmUgPSBjb25zdGV4cHIgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0T2ZMaW5lCiAKICMgQnl0
ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDYgQEAg
c3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIg
TUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blByb3BlcnR5TmFtZXMpOwogICAgIEdldE93blByb3Bl
cnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duU3BlY2lhbFByb3Bl
cnR5TmFtZXMpOwogCi0gICAgdXNpbmcgQ3VzdG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciA9IGJv
b2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKLSAgICBDdXN0b21I
YXNJbnN0YW5jZUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShjdXN0b21IYXNJbnN0YW5j
ZSk7Ci0KICAgICB1c2luZyBEZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKiko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCk7CiAgICAgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0ciBNRVRI
T0RfVEFCTEVfRU5UUlkoZGVmaW5lT3duUHJvcGVydHkpOwogCkBAIC0xNTUsNyArMTUyLDYgQEAg
c3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6dG9UaGlzLCBcCiAgICAg
ICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6Y3Vz
dG9tSGFzSW5zdGFuY2UsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHks
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6cHJldmVudEV4dGVuc2lvbnMsIFwKICAgICAgICAgJkNs
YXNzTmFtZTo6aXNFeHRlbnNpYmxlLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05v
bkZpbgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50
c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0dl
dENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyODAyMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NywxMCArNzcsNyBAQCBKU1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5j
ZVdpdGhXb3JrYXJvCiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwotICAgICAgICBBU1NF
UlQoIWNhbGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwotICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBw
cm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgotICAgICAgICBBU1NFUlQocHJvdG90
eXBlKTsKLSAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgICAgICBib29s
IGhhc0luc3RhbmNlID0gY2FsbGVlLT5kZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0
aGlzT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKICAgICAgICAgaWYgKGhhc0luc3RhbmNlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUpOwpAQCAtMTA2LDEwICsxMDMsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxlZ2FjeUlu
dGxDb25zdHJ1CiAgICAgaWYgKExJS0VMWShpbnN0YW5jZSkpCiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKIAotICAgIEFTU0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4odm0pKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0cnVjdG9yLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25z
dHJ1Y3RvcnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQu
Ci0gICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUp
OworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjb25zdHJ1Y3Rvci0+ZGVmYXVsdEhhc0luc3RhbmNl
KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgaWYgKCFoYXNJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMSArMTQ0
LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DbwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChnbG9iYWxPYmpl
Y3QsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBuZXdUYXJnZXQpKSk7CiB9
CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PGJvb2w+KGpzRHluYW1pY0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSkpKTsKLX0KLQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc0luc3Rh
bmNlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKIHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kT2JqZWN0ID0ganND
YXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpA
QCAtMjEwLDExICsyMDUsNiBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3Jl
YXRlCiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1ib29sIEpTQm91bmRGdW5jdGlvbjo6Y3Vz
dG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlv
bio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwg
dmFsdWUpOwotfQotCiBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIE5h
dGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUg
Ym91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFt
ZU1heUJlTnVsbCwgZG91YmxlIGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywg
dGFyZ2V0RnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0
ICszMywxMiBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnCiBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DYWxsKTsKIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOwogSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oaXNCb3VuZEZ1bmN0aW9uKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKTsKIAogY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFs
IDogcHVibGljIEpTRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBC
YXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyAmIH5JbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwotICAgIHN0
YXRpY19hc3NlcnQoU3RydWN0dXJlRmxhZ3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsICIiKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
QEAgLTQ5LDggKzQ3LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0JvdW5kRnVu
Y3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0
aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncywg
ZG91YmxlIGxlbmd0aCwgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwpOwotICAgIAotICAgIHN0YXRp
YyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0
RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91
bmRUaGlzLmdldCgpOyB9CkBAIC03MSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QpOwotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOyAKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNCb3VuZEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOyAKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRh
cmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwg
bV90YXJnZXRGdW5jdGlvbik7IH0KQEAgLTkzLDkgKzg5LDQgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbV9sZW5ndGg7CiB9OwogCi1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rp
b25DYWxsKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNvbnN0cnVj
dCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bCk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KTsKLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdAogCiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50
c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYw
LDEwIEBAIGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQogLy8gVGhlIGZpcnN0IGFuZCBs
YXN0IEpTVHlwZSBhcmUgaW5jbHVzaXZlCiBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIGJvb2wg
Y29udGFpbnMoSlNUeXBlIHR5cGUpIGNvbnN0IHsgcmV0dXJuIGZpcnN0IDw9IHR5cGUgJiYgdHlw
ZSA8PSBsYXN0OyB9CisgICAgdWludDE2X3QgcmF3Qml0cygpIGNvbnN0IHsgcmV0dXJuIChzdGF0
aWNfY2FzdDx1aW50OF90PihmaXJzdCkgPDwgOCkgfCBzdGF0aWNfY2FzdDx1aW50OF90PihsYXN0
KTsgfQorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IG91dC5wcmludCgi
SlNUeXBlUmFuZ2UgeyAiLCBmaXJzdCwgIiwgIiwgbGFzdCwgIiB9Iik7IH0KKworICAgIHN0YXRp
YyBKU1R5cGVSYW5nZSBmcm9tQml0cyh1aW50MTZfdCBiaXRzKSB7IHJldHVybiBKU1R5cGVSYW5n
ZSB7IHN0YXRpY19jYXN0PEpTVHlwZT4oYml0cyA+PiA4KSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihi
aXRzICYgMHhmZikgfTsgfQogCiAgICAgSlNUeXBlIGZpcnN0OwogICAgIEpTVHlwZSBsYXN0OwpA
QCAtNzEsNyArNzUsNyBAQCBzdHJ1Y3QgSlNUeXBlUmFuZ2UgewogICAgIG1hY3JvKEpTU3RyaW5n
SXRlcmF0b3IsIEpTVHlwZTo6SlNTdHJpbmdJdGVyYXRvclR5cGUsIEpTVHlwZTo6SlNTdHJpbmdJ
dGVyYXRvclR5cGUpIFwKICAgICBtYWNybyhKU09iamVjdCwgRmlyc3RPYmplY3RUeXBlLCBMYXN0
T2JqZWN0VHlwZSkgXAogICAgIG1hY3JvKEpTRmluYWxPYmplY3QsIEpTVHlwZTo6RmluYWxPYmpl
Y3RUeXBlLCBKU1R5cGU6OkZpbmFsT2JqZWN0VHlwZSkgXAotICAgIG1hY3JvKEpTRnVuY3Rpb24s
IEpTVHlwZTo6SlNGdW5jdGlvblR5cGUsIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUpIFwKKyAgICBt
YWNybyhKU0Z1bmN0aW9uLCBKU1R5cGU6OkpTRnVuY3Rpb25UeXBlLCBKU1R5cGU6OkpTQm91bmRG
dW5jdGlvblR5cGUpIFwKICAgICBtYWNybyhJbnRlcm5hbEZ1bmN0aW9uLCBKU1R5cGU6OkludGVy
bmFsRnVuY3Rpb25UeXBlLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBt
YWNybyhOdWxsU2V0dGVyRnVuY3Rpb24sIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSwg
SlNUeXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKSBcCiAgICAgbWFjcm8oSlNBcnJheSwgSlNU
eXBlOjpBcnJheVR5cGUsIEpTVHlwZTo6RGVyaXZlZEFycmF5VHlwZSkgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTUsMTIgKzIxNSw2IEBAIGNvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKFZNJiB2bSkg
Y28KICAgICByZXR1cm4gY2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lOwogfQogCi1ib29sIEpTQ2Vs
bDo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wg
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsK
KyAgICBib29sIGlzSlNGdW5jdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNDYWxsYWJsZShWTSYp
OwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpOwogICAgIHRlbXBsYXRlPENvbmN1cnJlbmN5
PiBUcmlTdGF0ZSBpc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KFZNJik7CkBAIC0yNTMsNyArMjU0
LDYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wg
c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKTsK
ICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lv
biAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxs
Ojppc1Byb3h5KCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFB1cmVGb3J3YXJkaW5nUHJv
eHlUeXBlIHx8IG1fdHlwZSA9PSBQcm94eU9iamVjdFR5cGU7CiB9CiAKK2lubGluZSBib29sIEpT
Q2VsbDo6aXNKU0Z1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEpTRnVu
Y3Rpb25UeXBlIHx8IG1fdHlwZSA9PSBKU0JvdW5kRnVuY3Rpb25UeXBlOworfQorCiAvLyBGSVhN
RTogQ29uc2lkZXIgbWFraW5nIGdldENhbGxEYXRhIGNvbmN1cnJlbmN5LXNhZmUgb25jZSBOUEFQ
SSBzdXBwb3J0IGlzIHJlbW92ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1ODAxCiB0ZW1wbGF0ZTxDb25jdXJyZW5jeSBjb25jdXJyZW5jeT4KQEAgLTI1
NCw3ICsyNTksNyBAQCBBTFdBWVNfSU5MSU5FIFRyaVN0YXRlIEpTQ2VsbDo6aXNDYWxsYWJsCiB7
CiAgICAgaWYgKCFpc09iamVjdCgpKQogICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwot
ICAgIGlmICh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNGdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgaWYgKGlubGluZVR5cGVGbGFn
cygpICYgT3ZlcnJpZGVzR2V0Q2FsbERhdGEpIHsKICAgICAgICAgaWYgY29uc3RleHByIChjb25j
dXJyZW5jeSA9PSBDb25jdXJyZW5jeTo6TWFpblRocmVhZCkKQEAgLTI3Nyw3ICsyODIsNyBAQCBp
bmxpbmUgVHJpU3RhdGUgSlNDZWxsOjppc0NvbnN0cnVjdG9yV2l0CiAgICAgICAgIHJldHVybiAo
bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgLy8g
V2Uga25vdyB0aGF0IGJvdGggZ2V0Q29uc3RydWN0RGF0YSBvZiBib3RoIHR5cGVzIGFyZSBjb25j
dXJyZW5jeSBhd2FyZS4gUGx1cywgZGVyaXZlZCBjbGFzc2VzIG9mIEpTRnVuY3Rpb24gYW5kIElu
dGVybmFsRnVuY3Rpb24KICAgICAvLyBuZXZlciBvdmVycmlkZSBnZXRDb25zdHJ1Y3REYXRhICh0
aGlzIGlzIGVuc3VyZWQgYnkgQVNTRVJUIGluIEpTRnVuY3Rpb24gYW5kIEludGVybmFsRnVuY3Rp
b24pLgotICAgIGlmICh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUgfHwgdHlwZSgpID09IEludGVy
bmFsRnVuY3Rpb25UeXBlKQorICAgIGlmIChpc0pTRnVuY3Rpb24oKSB8fCB0eXBlKCkgPT0gSW50
ZXJuYWxGdW5jdGlvblR5cGUpCiAgICAgICAgIHJldHVybiAobWV0aG9kVGFibGUodm0pLT5nZXRD
b25zdHJ1Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpID8gVHJpU3Rh
dGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDYgQEAgSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZQogICAgIDogQmFzZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhKGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQogewotICAgIGFzc2VydFR5cGVJbmZvRmxh
Z0ludmFyaWFudHMoKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBn
bG9iYWxPYmplY3QpOwogfQogCkBAIC0xMTEsOCArMTEwLDcgQEAgSlNGdW5jdGlvbjo6SlNGdW5j
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZQogdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGhpcykpOwotICAgIEFTU0VSVCh0eXBlKCkgPT0g
SlNGdW5jdGlvblR5cGUpOworICAgIEFTU0VSVChpc0pTRnVuY3Rpb24oKSk7CiAgICAgLy8gSlND
ZWxsOjp7Z2V0Q2FsbERhdGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucy4KICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3RE
YXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9k
VGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAt
MTIyLDE0ICsxMjAsMTIgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IAogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOworICAgIC8vIEpTQm91bmRGdW5jdGlvbiBpbnN0YW5jZXMgdXNlIGZpbmlz
aENyZWF0aW9uKFZNJikgb3ZlcmxvYWQgYW5kIGxhemlseSBhbGxvY2F0ZSB0aGVpciBuYW1lIHN0
cmluZyAvIGxlbmd0aC4KICAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKICAg
ICAvLyBKU0NlbGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENv
bnN0cnVjdERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFTU0VS
VChtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0
YSk7CiAKLSAgICAvLyBKU0JvdW5kRnVuY3Rpb24gaW5zdGFuY2VzIHVzZSBmaW5pc2hDcmVhdGlv
bihWTSYpIG92ZXJsb2FkIGFuZCBsYXppbHkgYWxsb2NhdGUgdGhlaXIgbmFtZSBzdHJpbmcgLyBs
ZW5ndGguCi0gICAgQVNTRVJUKCF0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7
Ci0KICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
bGVuZ3RoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcodm0sIG5hbWUpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtOTA2
LDE2ICs5MDIsNCBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyCiAg
ICAgcmV0dXJuIFByb3BlcnR5U3RhdHVzOjpSZWlmaWVkOwogfQogCi0jaWYgQVNTRVJUX0VOQUJM
RUQKLXZvaWQgSlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpCi17Ci0g
ICAgLy8gSWYgeW91IGNoYW5nZSB0aGlzLCB5b3UnbGwgbmVlZCB0byB1cGRhdGUgc3BlY3VsYXRp
b25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFuY2UuCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0g
Y2xhc3NJbmZvKHZtKCkpOwotICAgIGlmICghKGlubGluZVR5cGVGbGFncygpICYgSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8gPT0gSlNC
b3VuZEZ1bmN0aW9uOjppbmZvKCkpOwotICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5mbyAhPSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSk7Ci19Ci0jZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxMiAr
MjEyLDYgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlOYW1lSWZOZWVk
ZWQoVk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTdGF0
dXMgcmVpZnlMYXp5Qm91bmROYW1lSWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9G
bGFnSW52YXJpYW50cygpOwotI2Vsc2UKLSAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFy
aWFudHMoKSB7IH0KLSNlbmRpZgotCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHVpbnRwdHJfdCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShy
ZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIGlubGluZSBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgRnUKICAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGV4ZWN1dGFibGUpKQogewotICAgIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsK
IH0KIAogaW5saW5lIEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxl
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDYgKzc4
MSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9KTsKIAog
ICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpmdW5jdGlvblByb3RvdHlwZUhh
c0luc3RhbmNlU3ltYm9sKV0uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
KTsKKwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewogICAgICAgICAg
ICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rp
b24oKTsKQEAgLTkzMSwxMyArOTMzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgICAgIH0pOwogICAgIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewotICAgICAg
ICAgICAgYm9vbCBpc0NhbGxhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBpbml0LnNldChQcm94
eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpLCBp
c0NhbGxhYmxlKSk7Ci0gICAgICAgIH0pOwotICAgIG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZS5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+
JiBpbml0KSB7Ci0gICAgICAgICAgICBib29sIGlzQ2FsbGFibGUgPSB0cnVlOwotICAgICAgICAg
ICAgaW5pdC5zZXQoUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93
bmVyLCBqc051bGwoKSwgaXNDYWxsYWJsZSkpOworICAgICAgICAgICAgaW5pdC5zZXQoUHJveHlP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSkpOwog
ICAgICAgICB9KTsKICAgICBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKQEAgLTEzNTUsMTUg
KzEzNTEsOSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjCiAgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6dHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpKTsKICAgICAg
ICAgfSk7Ci0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pKTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBo
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pKTsKICAgICAgICAgfSk7Ci0gICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW5zdGFuY2VP
ZildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKSk7Ci0gICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKSk7CiAgICAgICAg
IH0pOwpAQCAtMjE4NSw3ICsyMTc1LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbkltcGwoSgogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+bV9jYWxsYWJsZVByb3h5T2JqZWN0
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlSZXZva2VT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1
ZmZlclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MjUsNyArNDI1LDYgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
cHJveHlPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94eVJldm9rZVN0cnVjdHVyZTsKICAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKIApAQCAt
ODQ3LDcgKzg0Niw2IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBwcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
eHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBjYWxsYWJsZVBy
b3h5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYWJsZVByb3h5T2JqZWN0
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlSZXZva2VTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
ICAgIFN0cnVjdHVyZSogcmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250
aWd1b3VzKTsgfQogICAgIFN0cnVjdHVyZSogb3JpZ2luYWxSZXN0UGFyYW1ldGVyU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShB
cnJheVdpdGhDb250aWd1b3VzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMCBA
QAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBBbmFseXplci5oIgog
I2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBl
ck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKQEAgLTY0LDYgKzY4LDcgQEAgY29u
c3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydAogY29uc3QgQVNDSUlMaXRlcmFs
IFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvciB7ICJBdHRl
bXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxl
IHByb3BlcnR5LiJfcyB9OwogY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVy
dHlDaGFuZ2VFbnVtZXJhYmlsaXR5RXJyb3IgeyAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVy
YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBjb25zdCBB
U0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3Ig
eyAiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiJfcyB9OworY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90b3R5
cGVOb3RPYmplY3RFcnJvciB7ICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBh
biBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MgfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
T2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTT2JqZWN0KSB9OwogCkBAIC0yMzQ1LDEyICsyMzUwLDM2IEBA
IHN0ZDo6b3B0aW9uYWw8U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hFbnQKICAgICByZXR1cm4gc3Ry
dWN0dXJlKHZtKS0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSk7CiB9CiAKKy8v
IEZJWE1FOiBOU1ZlcnNpb25PZkxpbmtUaW1lTGlicmFyeQorYm9vbCBKU09iamVjdDo6aXNOb25D
YWxsYWJsZUFQSU9iamVjdFRoYXRQZXJmb3Jtc0RlZmF1bHRIYXNJbnN0YW5jZShWTSYgdm0pCit7
CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBpZiAoaW5oZXJpdHM8SlNDYWxsYmFja09i
amVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Pih2bSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisgICAgcmV0dXJuIGluaGVyaXRzPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4odm0pOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWluc3RhbmNlb2ZvcGVyYXRvcgogYm9v
bCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBo
YXNJbnN0YW5jZVZhbHVlICE9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24oKSkgeworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkgeworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghaGFzSW5z
dGFuY2VWYWx1ZSkgeworICAgICAgICBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKCFoYXNJbnN0YW5j
ZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaWYgKGhhc0luc3RhbmNlVmFs
dWUgPT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bigpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworCiAgICAgICAgIGF1dG8gY2FsbERhdGEgPSBK
U0M6OmdldENhbGxEYXRhKHZtLCBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgaWYgKGNhbGxE
YXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1l
dGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCB0aGlzKSk7
CkBAIC0yMzY1LDY4ICsyMzk0LDU2IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xv
YmFsT2JqZWMKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
ICAgICB9CiAKLSAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKTsK
LSAgICBpZiAoaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpIHsKLSAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0g
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkpOwotICAgIH0KLSAgICBpZiAoaW5mby5pbXBsZW1l
bnRzSGFzSW5zdGFuY2UoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWV0aG9kVGFibGUodm0pLT5jdXN0b21I
YXNJbnN0YW5jZSh0aGlzLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7Ci0gICAgfQorICAgIGlmIChM
SUtFTFkoaXNDYWxsYWJsZUZvckhhc0luc3RhbmNlKHZtKSkpCisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpKTsK
IAogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
bnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIHRoaXMpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5aGFzaW5zdGFuY2UKK2Jvb2wgSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0g
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgaGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFu
Y2VWYWx1ZSkpOwotfQorICAgIGlmICghaXNDYWxsYWJsZUZvckhhc0luc3RhbmNlKHZtKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
bykKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmICh0eXBlKCkgPT0gSlNCb3VuZEZ1bmN0
aW9uVHlwZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4odGhpcyktPnRhcmdldEZ1bmN0aW9uKCktPmhhc0luc3RhbmNlKGdsb2JhbE9i
amVjdCwgdmFsdWUpKTsKIAogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgSlNWYWx1ZSBwcm90byA9IGdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOworCiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmpl
Y3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBJbnN0YW5jZW9mUHJvdG90eXBlTm90T2Jq
ZWN0RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGFzT2JqZWN0KHByb3RvKS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHZh
bHVlKSkpOworfQorCitib29sIEpTT2JqZWN0Ojppc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmpl
Y3QtPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0
KG9iamVjdFZhbHVlKTsKLSAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKKyAgICAgICAgaWYg
KG9iamVjdCA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0
UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgcHJvdG8gPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90bykp
KTsKLX0KLQogdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
MjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTaWduYXR1cmU7CiAKIGlubGluZSBK
U0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpKQorICAg
IGlmICh2YWx1ZS5pc0NlbGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+aXNKU0Z1bmN0aW9uKCkpCiAg
ICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAg
LTgyLDYgKzgyLDcgQEAgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZQog
ZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJs
ZVByb3BlcnR5Q2hhbmdlQ29uZmlndXJhYmlsaXR5RXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BS
SVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVt
ZXJhYmlsaXR5RXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9yOworZXh0ZXJu
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBJbnN0YW5jZW9mUHJvdG90eXBl
Tm90T2JqZWN0RXJyb3I7CiAKIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKQEAgLTY3Myw5ICs2NzQs
MTAgQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBvcmRpbmFyeVRvUHJpbWl0aXZlKEpTR2xvYmFs
T2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgc3RhdGljIGJvb2wgZGVm
YXVsdEhhc0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5
cGVQcm9wZXJ0eSk7CisgICAgYm9vbCBpc0NhbGxhYmxlRm9ySGFzSW5zdGFuY2UoVk0mIHZtKSB7
IHJldHVybiBpc0NhbGxhYmxlKHZtKSB8fCBpc05vbkNhbGxhYmxlQVBJT2JqZWN0VGhhdFBlcmZv
cm1zRGVmYXVsdEhhc0luc3RhbmNlKHZtKTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNl
VmFsdWUgPSBKU1ZhbHVlKCkpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVmYXVsdEhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bVByb3RvdHlwZUNoYWluRGVwdGggPSA0
MDAwMDsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwpA
QCAtMTExMCw2ICsxMTEyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KTsKICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgdm9pZCBp
c1N0cmluZygpOworCisgICAgYm9vbCBpc05vbkNhbGxhYmxlQVBJT2JqZWN0VGhhdFBlcmZvcm1z
RGVmYXVsdEhhc0luc3RhbmNlKFZNJik7CiAgICAgICAgIAogICAgIEJ1dHRlcmZseSogY3JlYXRl
SW5pdGlhbEluZGV4ZWRTdG9yYWdlKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgCkBA
IC0xMjQ0LDggKzEyNDgsNiBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLUpTX0VYUE9SVF9QUklW
QVRFIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9m
KTsKLQogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVdpdGhCdXR0
ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkp
CiB7CiAgICAgSlNGaW5hbE9iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9u
IDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNyArNTQwLDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eQogCiBBTFdBWVNfSU5MSU5FIENhbGxEYXRhIGdldENhbGxE
YXRhKFZNJiB2bSwgSlNDZWxsKiBjZWxsKQogewotICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpCisgICAgaWYgKGNlbGwtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoY2VsbCk7CiAgICAgQ2FsbERhdGEgcmVzdWx0ID0g
Y2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShjZWxsKTsKICAgICBBU1NFUlQocmVz
dWx0LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUgfHwgY2VsbC0+aXNWYWxpZENhbGxlZSgp
KTsKQEAgLTU1OSw3ICs1NTksNyBAQCBpbmxpbmUgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShW
TSYgdm0sCiAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKLSAgICBpZiAoY2VsbC0+dHlwZSgpID09
IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxsLT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoY2VsbCk7CiAgICAgQ2FsbERhdGEg
cmVzdWx0ID0gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGNlbGwpOwog
ICAgIEFTU0VSVChyZXN1bHQudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSB8fCBjZWxsLT5p
c1ZhbGlkQ2FsbGVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuY3BwCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0MKICAgICBDQVNFKEZpbmFsT2JqZWN0VHlwZSkK
ICAgICBDQVNFKEpTQ2FsbGVlVHlwZSkKICAgICBDQVNFKEpTRnVuY3Rpb25UeXBlKQorICAgIENB
U0UoSlNCb3VuZEZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKEludGVybmFsRnVuY3Rpb25UeXBlKQog
ICAgIENBU0UoTnVsbFNldHRlckZ1bmN0aW9uVHlwZSkKICAgICBDQVNFKEJvb2xlYW5PYmplY3RU
eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9u
IDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw5ICs1OSwxMCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAg
IE9iamVjdFR5cGUsCiAgICAgRmluYWxPYmplY3RUeXBlLAogICAgIEpTQ2FsbGVlVHlwZSwKLSAg
ICBKU0Z1bmN0aW9uVHlwZSwKICAgICBJbnRlcm5hbEZ1bmN0aW9uVHlwZSwKICAgICBOdWxsU2V0
dGVyRnVuY3Rpb25UeXBlLAorICAgIEpTRnVuY3Rpb25UeXBlLAorICAgIEpTQm91bmRGdW5jdGlv
blR5cGUsCiAgICAgQm9vbGVhbk9iamVjdFR5cGUsCiAgICAgTnVtYmVyT2JqZWN0VHlwZSwKICAg
ICBFcnJvckluc3RhbmNlVHlwZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAvLyBJbmxpbmUgZmxhZ3MuCiAKIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUg
dXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0
YWJsZS4KLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0Q2Fs
bERhdGEgPSAxIDw8IDI7IC8vIE5lZWQgdGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1lbnQgW1tDYWxs
YWJsZV1dIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxsRGF0YS4gVGhl
IG9iamVjdCBtYXkgbm90IGJlIGNhbGxhYmxlIHNpbmNlIGdldENhbGxEYXRhIGNhbiBzYXkgaXQg
aXMgbm90IGNhbGxhYmxlLgogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJy
aWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8gSWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRoaXMgcmV0dXJu
cyBzb21ldGhpbmcgb3RoZXIgdGhhbiAndGhpcycuIE5vbi1vYmplY3QgY2VsbHMgdGhhdCBhcmUg
dmlzaWJsZSB0byBKUyBoYXZlIHRoaXMgc2V0IGFzIGRvIHNvbWUgZXhvdGljIG9iamVjdHMuCkBA
IC00Nyw3ICs0Niw2IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgVHlwZUluZm9QZXJDZWwK
IAogLy8gT3V0IG9mIGxpbmUgZmxhZ3MuCiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1w
bGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCA4Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzID0gMSA8PCA5Owogc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyA9IDEgPDwgMTA7CiBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwg
MTE7CkBAIC05MCw4ICs4OCw2IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZsYWdzMikgPDwgbnVtYmVyT2ZJ
bmxpbmVCaXRzKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZsYWdzKTsgfQogICAgIGJvb2wg
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZD4oKTsgfQotICAgIGJvb2wgaW1wbGVtZW50c0hhc0luc3RhbmNl
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxJbXBsZW1lbnRzSGFzSW5zdGFuY2U+KCk7
IH0KLSAgICBib29sIGltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVy
biBpc1NldE9uRmxhZ3MxPEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U+KCk7IH0KICAgICBi
b29sIG92ZXJyaWRlc0dldENhbGxEYXRhKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxP
dmVycmlkZXNHZXRDYWxsRGF0YT4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90KCkgY29uc3QgeyByZXR1cm4gb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KGlubGlu
ZVR5cGVGbGFncygpKTsgfQogICAgIGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8SGFzU3RhdGljUHJvcGVydHlUYWJsZT4oKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNz
IEdldHRlclNldHRlcjsKIGNsYXNzIE51bWJlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEhhc1N0YXRpY1Byb3Bl
cnR5VGFibGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAogICAgIHN0
YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJvdG9GdW5jVmFsdWVPZik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihv
YmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcik7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVy
KTsKQEAgLTYzLDcgKzYyLDcgQEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPnZhbHVlT2YsIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsKICAgICBKU0NfTkFUSVZF
X0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
aGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSGFzT3duUHJvcGVy
dHlJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVuY0lz
UHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG90eXBlSXNQcm90b3R5
cGVPZkNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5fX2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0
ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAy
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5fX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKQEAg
LTEyNywzMyArMTI2LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVu
YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdFByb3RvdHlwZUhh
c093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpOwogfQogCi1K
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsKLSAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7
Ci0KLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7Ci0gICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqKSkKLSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0KLSAgICBKU1ZhbHVl
IHYgPSBhc09iamVjdChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKCF2LmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwot
ICAgICAgICBpZiAodiA9PSB0aGlzT2JqKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMzIgQEAgQUxXQVlTX0lOTElO
RSBib29sIGpzVHlwZW9mSXNGdW5jdGlvbihKUwogICAgIHJldHVybiByZXN1bHQgPT0gVHJpU3Rh
dGU6OlRydWU7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBqc0lzUHJvdG90eXBlT2YoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIEpTT2JqZWN0KiB2YWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgSW5zdGFu
Y2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNPYmplY3QocHJvdG90eXBlKS0+
aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHZhbHVlKSk7Cit9CisKK0FMV0FZU19JTkxJTkUg
Ym9vbCBqc0luc3RhbmNlb2ZPcGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJp
Z2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
c09iamVjdChjb25zdHJ1Y3RvciktPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIGhh
c0luc3RhbmNlVmFsdWUpKTsKK30KKwogQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB1MSwgSlNTdHJpbmcq
IHMyKQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAyODAy
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCw2IEBAIFByb3h5T2JqZWN0OjpQcm94eU9iamVjdChW
TSYgdm0sIFN0cnVjdHUKIHsKIH0KIAotU3RydWN0dXJlKiBQcm94eU9iamVjdDo6c3RydWN0dXJl
Rm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0KQot
ewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gdGFyZ2V0Lmlz
Q2FsbGFibGUodm0pID8gZ2xvYmFsT2JqZWN0LT5jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJl
KCkgOiBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3RydWN0dXJlKCk7Ci19Ci0KIHZvaWQgUHJv
eHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MSwxMSArNjUsNiBAQCB2b2lkIFByb3h5
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sCiAgICAgSlNPYmplY3QqIHRhcmdldEFzT2Jq
ZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KTsKIAogICAgIG1faXNDYWxsYWJsZSA9IHRh
cmdldEFzT2JqZWN0LT5pc0NhbGxhYmxlKHZtKTsKLSAgICBpZiAobV9pc0NhbGxhYmxlKSB7Ci0g
ICAgICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbmZvLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpICYmIGluZm8uaW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLSAgICB9Ci0KICAgICBtX2lzQ29uc3RydWN0
aWJsZSA9IHRhcmdldEFzT2JqZWN0LT5pc0NvbnN0cnVjdG9yKHZtKTsKIAogICAgIG1fdGFyZ2V0
LnNldCh2bSwgdGhpcywgdGFyZ2V0QXNPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShyZXZpc2lvbiAyODAyMTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSwxOCArNDUsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBQcm94eU9iamVjdCogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRs
ZXIpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQo
Z2xvYmFsT2JqZWN0LCB0YXJnZXQpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKTsKICAgICAgICAgUHJveHlPYmplY3Qq
IHByb3h5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlPYmplY3Q+KHZtLmhlYXAp
KSBQcm94eU9iamVjdCh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgcHJveHktPmZpbmlzaENyZWF0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgaGFuZGxlcik7CiAgICAgICAgIHJldHVybiBw
cm94eTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9v
bCBpc0NhbGxhYmxlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSBTdHJ1Y3R1cmVGbGFnczsKLSAgICAgICAgaWYg
KGlzQ2FsbGFibGUpCi0gICAgICAgICAgICBmbGFncyB8PSAoSW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSk7Ci0gICAgICAgIFN0cnVjdHVyZSogcmVz
dWx0ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhQcm94eU9iamVjdFR5cGUsIGZsYWdzKSwgaW5mbygpLCBOb25BcnJheSB8IE1heUhhdmVJ
bmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5IHwgTWF5SGF2ZUluZGV4ZWRB
Y2Nlc3NvcnMpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0LT5jYW5BY2Nlc3NQcm9w
ZXJ0aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
cmVzdWx0LT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0pKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTc3LDcgKzc0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBKU19F
WFBPUlRfUFJJVkFURSBQcm94eU9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIHN0cnVjdHVyZUZvclRhcmdldChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
dGFyZ2V0KTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJl
dmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBTYW1w
bGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZAogICAgICAgICAgICAgICAgIG1fbGl2ZUNl
bGxQb2ludGVycy5hZGQoY2FsbGVlKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlm
IChjYWxsZWVDZWxsLT50eXBlKCkgIT0gSlNGdW5jdGlvblR5cGUpIHsKKyAgICAgICAgICAgIGlm
ICghY2FsbGVlQ2VsbC0+aXNKU0Z1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoSlNP
YmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihjYWxsZWVDZWxsLT52bSgp
LCBjYWxsZWVDZWxsKSkKICAgICAgICAgICAgICAgICAgICAgYWRkQ2FsbGVlKG9iamVjdCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTIyICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91
dCBldmFsdWF0aW5nIGluc3RhbmNlb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKwogMjAyMS0wNy0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRoZSBuZXR3b3JrIHByb2Nlc3MgZmFpbHMgdG8gdGFrZSBhIGxvY2tlZCBmaWxlIGFzc2Vy
dGlvbiB3aGVuIGV4ZWN1dGluZyBhIFNRTGl0ZVN0YXRlbWVudCBvdXRzaWRlIGEgdHJhbnNhY3Rp
b24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3RvckJhc2UuaAkocmV2aXNpb24gMjgwMjExKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RPCiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTRE9NT2JqZWN0OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgfCBKU0M6OkltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBKU0M6Ok92
ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERh
dGE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsK
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
ODAyMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjkxNCw3ICsyOTE0LDYgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRj
aHBvaW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOZXdJbXB1
cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJ
c0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdH07CiAgICAg
JHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSA9IDEgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH07Ci0g
ICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6SW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSJ9ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IjsKICAgICAgICAgCiAgICAgIyBQcm90b3R5cGUKICAgICB1bmxlc3MgKFNob3VsZFVz
ZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSB8fCAkaW50ZXJmYWNlLT5pc05hbWVz
cGFjZU9iamVjdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4MDIxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTVdpbmRvdyY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAgfQogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIHByb3RlY3RlZDoKICAgICBKU0RPTVdpbmRv
dyhKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8RE9NV2luZG93PiYmLCBKU1dpbmRvd1By
b3h5Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNXaW5kb3dQcm94eSop
OwpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL29iamVjdC1wcm90
b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MDIxMSkKKysrIExheW91
dFRlc3RzL2pzL2RvbS9vYmplY3QtcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9Mb2Nh
bGVTdHJpbmcuY2FsCiBQQVNTIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5l
ZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHVuZGVmaW5lZCknKS4K
IFBBU1MgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVuZGVmaW5lZCwgJ2hh
c093blByb3BlcnR5JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbCh1bmRlZmluZWQsICdoYXNPd25Qcm9wZXJ0eScpJykuCiBQQVNTIE9iamVjdC5wcm90b3R5
cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh1bmRlZmluZWQsICdwcm9wZXJ0eUlzRW51bWVy
YWJsZScpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNh
bGwodW5kZWZpbmVkLCAncHJvcGVydHlJc0VudW1lcmFibGUnKScpLgotUEFTUyBPYmplY3QucHJv
dG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmpl
Y3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh1bmRlZmluZWQsIHRoaXMpJykuCitQQVNT
IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKHVuZGVmaW5lZCwgdGhpcykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QuCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435108</attachid>
            <date>2021-08-06 19:57:08 -0700</date>
            <delta_ts>2021-08-06 19:57:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216816-20210807055706.patch</filename>
            <type>text/plain</type>
            <size>194654</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODA3NTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA4LTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3RhbmNl
b2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjgx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByaW1pdGl2ZS1jZWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtbm9uLWNl
bGwuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIx
LTA4LTA1ICBNaWtoYWlsIFIuIEdhZGVsaGEgIDxtaWtoYWlsQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgQXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBjaGVja2luZyBhcnJheSBpbiBERkcgKDMyIGJpdHMp
CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLWludGVybmFsLWZ1bmN0
aW9uLWR5bmFtaWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5z
dGFuY2VvZi1pbnRlcm5hbC1mdW5jdGlvbi1keW5hbWljLmpzCShub25leGlzdGVudCkKKysrIEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtaW50ZXJuYWwtZnVuY3Rpb24tZHluYW1p
Yy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK3ZhciBjb25zdHJ1Y3RvcnMgPSBb
TWFwXTsKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICB2YXIgb2JqZWN0ID0g
e307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTc7ICsraSkKKyAgICAgICAgYWNjICs9IG9i
amVjdCBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yc1swXTsKKyAgICBpZiAoYWNjKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRleDogSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1pbnRlcm5hbC1mdW5jdGlvbi5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLWludGVybmFsLWZ1bmN0aW9u
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2Yt
aW50ZXJuYWwtZnVuY3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorKGZ1
bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZuKCkge30KKyAgICB2YXIgYXJyID0gW107CisgICAg
dmFyIHJlID0gLyg/OikvOworICAgIHZhciBkYXRlID0gbmV3IERhdGU7CisgICAgdmFyIG1hcCA9
IG5ldyBNYXA7CisgICAgdmFyIHNldCA9IG5ldyBTZXQ7CisKKyAgICB2YXIgYWNjID0gMDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgICAgIGFjYyArPSBmbiBpbnN0
YW5jZW9mIEZ1bmN0aW9uCisgICAgICAgICAgICAmJiBhcnIgaW5zdGFuY2VvZiBBcnJheQorICAg
ICAgICAgICAgJiYgcmUgaW5zdGFuY2VvZiBSZWdFeHAKKyAgICAgICAgICAgICYmIGRhdGUgaW5z
dGFuY2VvZiBEYXRlCisgICAgICAgICAgICAmJiBtYXAgaW5zdGFuY2VvZiBNYXAKKyAgICAgICAg
ICAgICYmIHNldCBpbnN0YW5jZW9mIFNldDsKKyAgICB9CisgICAgaWYgKGFjYyAhPT0gaSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSkoKTsKSW5kZXg6IEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLWNlbGwuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcmltaXRpdmUtY2Vs
bC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9m
LXByaW1pdGl2ZS1jZWxsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKyhmdW5j
dGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQorICAgIGZ1bmN0aW9uIEJhcigpIHt9CisK
KyAgICB2YXIgbnVtYmVyID0gNC41OworICAgIHZhciBzdHJpbmcgPSAic3RyIjsKKyAgICB2YXIg
c3ltYm9sID0gU3ltYm9sKCk7CisgICAgdmFyIGJpZ2ludCA9IDEwbjsKKworICAgIHZhciBhY2Mg
PSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU3OyArK2kpIHsKKyAgICAgICAgYWNjICs9
IG51bWJlciBpbnN0YW5jZW9mIEZvbworICAgICAgICAgICAgfHwgc3RyaW5nIGluc3RhbmNlb2Yg
QmFyCisgICAgICAgICAgICB8fCBzeW1ib2wgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8
IGJpZ2ludCBpbnN0YW5jZW9mIEJhcjsKKyAgICB9CisgICAgaWYgKGFjYykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJpbWl0aXZlLW5vbi1jZWxs
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2Yt
cHJpbWl0aXZlLW5vbi1jZWxsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKyhm
dW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBGb28oKSB7fQorICAgIGZ1bmN0aW9uIEJhcigpIHt9
CisKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7
CisgICAgICAgIGFjYyArPSB1bmRlZmluZWQgaW5zdGFuY2VvZiBGb28KKyAgICAgICAgICAgIHx8
IG51bGwgaW5zdGFuY2VvZiBCYXIKKyAgICAgICAgICAgIHx8IHRydWUgaW5zdGFuY2VvZiBGb28K
KyAgICAgICAgICAgIHx8IGkgaW5zdGFuY2VvZiBCYXI7CisgICAgfQorICAgIGlmIChhY2MpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBK
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbnN0YW5jZW9mLXByb3h5LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luc3RhbmNlb2YtcHJveHkuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW5zdGFuY2VvZi1wcm94eS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gVGFy
Z2V0KCkge30KKyAgICB2YXIgdmFsdWUgPSBuZXcgVGFyZ2V0KCk7CisgICAgdmFyIHByb3h5ID0g
bmV3IFByb3h5KFRhcmdldCwgUmVmbGVjdCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgcHJveHkpKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworICAgIH0KK30pKCk7Cklu
ZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5qcwkobm9u
ZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1jZWxsLXdpdGgtdHlwZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGlzQXJyYXkgPSAkdm0uY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uIChjKSB7IHJldHVybiBAaXNB
cnJheShjKTsgfSkiKTsKKyAgICBub0lubGluZShpc0FycmF5KTsKKworICAgIHZhciBzeW0gPSBT
eW1ib2woKTsKKyAgICB2YXIgYXJyID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkgeworICAgICAgICBpZiAodHlwZW9mICJmb28iICE9PSAic3RyaW5nIiB8fCB0eXBlb2Yg
aSA9PT0gInN0cmluZyIgfHwKKyAgICAgICAgICAgIHR5cGVvZiBzeW0gIT09ICJzeW1ib2wiIHx8
IHR5cGVvZiBhcnIgPT09ICJzeW1ib2wiIHx8CisgICAgICAgICAgICAhaXNBcnJheShhcnIpIHx8
IGlzQXJyYXkoc3ltKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlv
biEiKTsKKyAgICB9Cit9KSgpOwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaXMtcHJv
dG90eXBlLW9mLWFsd2F5cy1oaXQtb25lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2lzLXByb3RvdHlwZS1vZi1hbHdheXMtaGl0LW9uZS5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pcy1wcm90b3R5cGUtb2YtYWx3YXlzLWhpdC1v
bmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorKGZ1bmN0aW9uKCkgeworICAg
IG5vSW5saW5lKE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZik7CisKKyAgICBmdW5jdGlv
biBGb28oKSB7fQorICAgIHZhciBmb28gPSBGb28ucHJvdG90eXBlOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNTsgKytpKQorICAgICAgICBmb28gPSBPYmplY3QuY3JlYXRlKGZvbyk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDVlNjsgKytpKSB7CisgICAgICAgIGlmICghRm9vLnByb3Rv
dHlwZS5pc1Byb3RvdHlwZU9mKGZvbykpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBhc3NlcnRpb24hIik7CisgICAgfQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2lzLXByb3RvdHlwZS1vZi1keW5hbWljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2lzLXByb3RvdHlwZS1vZi1keW5hbWljLmpzCShub25leGlzdGVudCkKKysr
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2lzLXByb3RvdHlwZS1vZi1keW5hbWljLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBub0lubGluZShP
YmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YpOworCisgICAgdmFyIHByb3RvdHlwZXMgPSBb
XTsKKyAgICB2YXIgaGVpcnMgPSBbXTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsr
aSkgeworICAgICAgICB2YXIgcHJvdG90eXBlID0ge307CisgICAgICAgIHByb3RvdHlwZXNbaV0g
PSBwcm90b3R5cGU7CisgICAgICAgIGhlaXJzW2ldID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuY3Jl
YXRlKE9iamVjdC5jcmVhdGUocHJvdG90eXBlKSkpOworICAgIH0KKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICAgICAgdmFyIHByb3RvdHlwZUluZGV4ID0gaSAlIDEw
OworICAgICAgICB2YXIgaGVpckluZGV4ID0gaSAlIDUwOworCisgICAgICAgIHZhciByZXN1bHQg
PSBwcm90b3R5cGVzW3Byb3RvdHlwZUluZGV4XS5pc1Byb3RvdHlwZU9mKGhlaXJzW2hlaXJJbmRl
eF0pOworICAgICAgICBpZiAocmVzdWx0ICE9PSAocHJvdG90eXBlSW5kZXggPT09IGhlaXJJbmRl
eCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7CisgICAg
fQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N5bWJvbC1oYXMtaW5zdGFu
Y2UtYWx3YXlzLWhpdC10d28uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFy
a3Mvc3ltYm9sLWhhcy1pbnN0YW5jZS1hbHdheXMtaGl0LXR3by5qcwkobm9uZXhpc3RlbnQpCisr
KyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zeW1ib2wtaGFzLWluc3RhbmNlLWFsd2F5cy1oaXQt
dHdvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKyhmdW5jdGlvbigpIHsKKyAg
ICBub0lubGluZShGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSk7CisKKyAg
ICBmdW5jdGlvbiBGb28oKSB7fQorICAgIHZhciBmb28gPSBuZXcgRm9vKCk7CisKKyAgICBmdW5j
dGlvbiBCYXIoKSB7fQorICAgIEJhci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEZvby5wcm90
b3R5cGUpOworICAgIHZhciBiYXIgPSBuZXcgQmFyKCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDVlNjsgKytpKSB7CisgICAgICAgIHZhciBpbnN0YW5jZSA9IGkgJiAxID8gZm9vIDogYmFy
OworICAgICAgICBpZiAoIUZvb1tTeW1ib2wuaGFzSW5zdGFuY2VdKGluc3RhbmNlKSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICB9Cit9KSgpOwpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3ltYm9sLWhhcy1pbnN0YW5jZS10cmlja3kt
ZHluYW1pYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zeW1ib2wt
aGFzLWluc3RhbmNlLXRyaWNreS1keW5hbWljLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL3N5bWJvbC1oYXMtaW5zdGFuY2UtdHJpY2t5LWR5bmFtaWMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIG5vSW5saW5l
KEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdKTsKKworICAgIHZhciBjb25z
dHJ1Y3RvcnMgPSBbXTsKKyAgICB2YXIgaW5zdGFuY2VzID0gW107CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24o
KSB7fTsKKyAgICAgICAgY29uc3RydWN0b3JzW2ldID0gY29uc3RydWN0b3I7CisgICAgICAgIGlu
c3RhbmNlc1tpXSA9IG5ldyBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDVlNTsgKytpKSB7CisgICAgICAgIHZhciBjb25zdHJ1Y3RvckluZGV4ID0gaSAlIDEw
OworICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnNbY29uc3RydWN0b3JJbmRl
eF07CisgICAgICAgIHZhciBpbnN0YW5jZUluZGV4ID0gaSAlIDUwOworICAgICAgICB2YXIgaW5z
dGFuY2UgPSBpbnN0YW5jZXNbaW5zdGFuY2VJbmRleF07CisKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCAxMDA7ICsraikgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNvbnN0cnVjdG9y
W1N5bWJvbC5oYXNJbnN0YW5jZV0oaW5zdGFuY2UpOworICAgICAgICAgICAgaWYgKHJlc3VsdCAh
PT0gKGNvbnN0cnVjdG9ySW5kZXggPT09IGluc3RhbmNlSW5kZXgpKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKKyAgICAgICAgfQorICAgIH0KK30p
KCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbnN0YW5jZW9mLXBvaXNvbmVkLXByb3RvdHlwZS1n
ZXR0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaW5zdGFuY2VvZi1wb2lzb25l
ZC1wcm90b3R5cGUtZ2V0dGVyLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2lu
c3RhbmNlb2YtcG9pc29uZWQtcHJvdG90eXBlLWdldHRlci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYxIEBACitmdW5jdGlvbiBhc3NlcnQoeCkgeworICAgIGlmICgheCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfQorCitmdW5jdGlvbiBkZWZpbmVQ
b2lzb25lZFByb3RvdHlwZShmbikgeworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgInBy
b3RvdHlwZSIsIHsKKyAgICAgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoIidwcm90b3R5cGUn
IGdldHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUhIik7IH0sCisgICAgfSk7Cit9CisKKyhmdW5j
dGlvbiBsaHNJc1ByaW1pdGl2ZTEoKSB7CisgICAgY29uc3QgcmhzID0gKCkgPT4ge307CisgICAg
ZGVmaW5lUG9pc29uZWRQcm90b3R5cGUocmhzKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MWU1OyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KCEobnVsbCBpbnN0YW5jZW9mIHJocykpOworICAg
ICAgICBhc3NlcnQoISgzLjE0IGluc3RhbmNlb2YgcmhzKSk7CisgICAgfQorfSkoKTsKKworKGZ1
bmN0aW9uIGxoc0lzUHJpbWl0aXZlMigpIHsKKyAgICBjb25zdCB7IHJocyB9ID0geyByaHMoKSB7
fSB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyaHMsIFN5bWJvbC5oYXNJbnN0YW5jZSwg
eyB2YWx1ZTogbnVsbCB9KTsKKyAgICBkZWZpbmVQb2lzb25lZFByb3RvdHlwZShyaHMpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgICAgICBhc3NlcnQoIShmYWxz
ZSBpbnN0YW5jZW9mIHJocykpOworICAgICAgICBhc3NlcnQoIShTeW1ib2woKSBpbnN0YW5jZW9m
IHJocykpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBsaHNJc1ByaW1pdGl2ZTMoKSB7Cisg
ICAgYXN5bmMgZnVuY3Rpb24gcmhzKCkge30KKyAgICBkZWZpbmVQb2lzb25lZFByb3RvdHlwZShy
aHMpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgICAgICBhc3Nl
cnQoIXJoc1tTeW1ib2wuaGFzSW5zdGFuY2VdKDApKTsKKyAgICAgICAgYXNzZXJ0KCFyaHNbU3lt
Ym9sLmhhc0luc3RhbmNlXSgiZm9vIikpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiByaHNJ
c05vbkNhbGxhYmxlV2l0aERlZmF1bHRIYXNJbnN0YW5jZTEoKSB7CisgICAgY29uc3QgcmhzID0g
eyBbU3ltYm9sLmhhc0luc3RhbmNlXTogRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0
YW5jZV0gfTsKKyAgICBkZWZpbmVQb2lzb25lZFByb3RvdHlwZShyaHMpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgICAgICBhc3NlcnQoISh1bmRlZmluZWQgaW5z
dGFuY2VvZiByaHMpKTsKKyAgICAgICAgYXNzZXJ0KCEoe30gaW5zdGFuY2VvZiByaHMpKTsKKyAg
ICB9Cit9KSgpOworCisoZnVuY3Rpb24gcmhzSXNOb25DYWxsYWJsZVdpdGhEZWZhdWx0SGFzSW5z
dGFuY2UyKCkgeworICAgIGNvbnN0IHJocyA9IE9iamVjdC5jcmVhdGUoRnVuY3Rpb24ucHJvdG90
eXBlKTsKKyAgICBkZWZpbmVQb2lzb25lZFByb3RvdHlwZShyaHMpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgICAgICBhc3NlcnQoISgxbiBpbnN0YW5jZW9mIHJo
cykpOworICAgICAgICBhc3NlcnQoISh7fSBpbnN0YW5jZW9mIHJocykpOworICAgIH0KK30pKCk7
CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCShyZXZpc2lvbiAyODA3NTEpCisrKyBK
U1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTE2MDEs
OSArMTYwMSw2IEBAIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvZ2VuZXJhdG9ycy9zY28KICAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBTeW50YXhFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKIHRlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvZ2VuZXJhdG9ycy9zY29wZS1wYXJhbS1yZXN0LWVsZW0tdmFyLW9wZW4uanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq291dHNpZGXCuywg
wqtpbnNpZGXCuykgdG8gYmUgdHJ1ZScKLXRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvaW5zdGFu
Y2VvZi9wcm90b3R5cGUtZ2V0dGVyLXdpdGgtcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAiVGVz
dDI2MkVycm9yOiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKLSAgc3RyaWN0IG1vZGU6
ICJUZXN0MjYyRXJyb3I6IGdldHRlciBmb3IgJ3Byb3RvdHlwZScgY2FsbGVkIgogdGVzdC9sYW5n
dWFnZS9leHByZXNzaW9ucy9sb2dpY2FsLWFzc2lnbm1lbnQvbGdjbC1hbmQtYXNzaWdubWVudC1v
cGVyYXRvci1ub24tc2ltcGxlLWxocy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjI6IFRoaXMgc3Rh
dGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLicKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtbnVsbGlzaC1hc3NpZ25tZW50LW9wZXJhdG9yLW5v
bi1zaW1wbGUtbGhzLmpzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjA4IEBACisyMDIxLTA4LTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbiBpc3N1ZSBhYm91dCBldmFsdWF0aW5nIGluc3Rh
bmNlb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NjgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoY29uc3RydWN0
b3JIYXNJbnN0YW5jZSk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanM6CisgICAgICAgIChvdmVycmlkZGVuTmFtZS5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zeW1ib2xIYXNJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRp
bnMvT2JqZWN0UHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGlzUHJvdG90eXBlT2YpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6CisgICAg
ICAgIChKU0M6OkNhbGxWYXJpYW50OjpkZXNwZWNpZmllZENsb3N1cmUgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtpbmRUb1N0cmlu
Zyk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0YW5jZU9mU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZlN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6
CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpk
dW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm9J
bmhlcml0YW5jZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKToK
KyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKEpTQzo6c3Bl
Y3VsYXRpb25Gcm9tU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
OgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uU3BlY3VsYXRpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfaW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnF1ZXJpZWRUeXBlKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNDZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6
YXNKU1R5cGVSYW5nZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVHlwZUlu
Zm9PcGVyYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp0eXBlSW5mb09w
ZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19E
RUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3Rh
bmNlT2ZDdXN0b20pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SXNDZWxsV2l0aFR5cGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDaGVja1R5cGVJbmZvRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmNoZWNrRm9yYmlkZGVu
UHJvdG90eXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1
ZXJ5SW5zdGFuY2VzKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6aXNDZWxsV2l0aFR5cGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2Nl
bGxfd2l0aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20pOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04p
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpy
ZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJ
bmZvLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdh
Y3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp1bndyYXBGb3JMZWdhY3lJbnRsQ29u
c3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjdXN0b21IYXNJbnN0YW5jZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2FsbGVlLmg6CisgICAgICAgICogcnVudGltZS9KU0Nhc3QuaDoKKyAgICAgICAgKEpTQzo6SlNU
eXBlUmFuZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpjdXN0b21IYXNJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjppc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cyk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnByb3h5T2JqZWN0U3RydWN0
dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhbGxhYmxlUHJveHlP
YmplY3RTdHJ1Y3R1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bWFya0F1eGlsaWFyeUFuZFZpc2l0T3V0
T2ZMaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJbnN0YW5jZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aXNQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpnZXRKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Om1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aXNKU0Z1
bmN0aW9uVHlwZSk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjppbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmpzSXNQcm90b3R5cGVPZik6
CisgICAgICAgIChKU0M6OmpzSW5zdGFuY2VvZk9wZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1l
L1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6
OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorCiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4
IG9uIERlYnVnIGJ1aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzcsNiArMTMzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9C
VUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL01vZHVs
ZUxvYWRlci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9OdW1iZXJDb25z
dHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9PYmplY3RDb25z
dHJ1Y3Rvci5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9PYmplY3RQcm90
b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZUNvbnN0
cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1Byb21pc2VPcGVy
YXRpb25zLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQCAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9NYXBQcm90b3R5cGUu
anMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwogJChQUk9KRUNUX0RJ
UikvYnVpbHRpbnMvTnVtYmVyQ29uc3RydWN0b3IuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5z
L09iamVjdENvbnN0cnVjdG9yLmpzCiskKFBST0pFQ1RfRElSKS9idWlsdGlucy9PYmplY3RQcm90
b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwog
JChQUk9KRUNUX0RJUikvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKICQoUFJPSkVDVF9E
SVIpL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYg
KzExNCw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZSkvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9OdW1iZXJDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVp
bHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvUHJvbWlzZVByb3RvdHlwZS5qcyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0NhbGxiYWNr
Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50
c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNp
b24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50PgogY2xhc3MgSlNDYWxsYmFja09iamVjdCBmaW5hbCA6IHB1YmxpYyBQYXJlbnQgewogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBQYXJlbnQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBP
dmVycmlkZXNHZXRDYWxsRGF0YSB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBHZXRPd25Qcm9wZXJ0eVNsb3RNYXlC
ZVdyb25nQWJvdXREb250RW51bTsKLSAgICBzdGF0aWNfYXNzZXJ0KCEoU3RydWN0dXJlRmxhZ3Mg
JiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgInVzaW5nIGN1c3RvbUhhc0luc3RhbmNl
Iik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVz
R2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YSB8IE92ZXJy
aWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBHZXRPd25Qcm9wZXJ0eVNs
b3RNYXlCZVdyb25nQWJvdXREb250RW51bTsKIAogICAgIH5KU0NhbGxiYWNrT2JqZWN0KCk7CiAK
QEAgLTIwMCw2ICsxOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKIAogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJiwgU3Vic3Bh
Y2VBY2Nlc3MpOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJ
QlVURVMgY3VzdG9tSGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICAg
ICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIGN1c3RvbVRv
UHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0yMTEsOCArMjExLDYgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogCi0gICAg
c3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwotCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSk7CiAKICAgICBzdGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjE2LDYgKzIxNiwxMyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0
T3duUHJvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChwcm9wZXJ0eU5h
bWUudWlkKCkgPT0gdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wuaW1wbCgpKSB7
CisgICAgICAgIEpTRnVuY3Rpb24qIGhhc0luc3RhbmNlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDEsICJbU3ltYm9sLmhhc0luc3RhbmNlXSJfcywgY3VzdG9tSGFzSW5z
dGFuY2UpOworICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwg
aGFzSW5zdGFuY2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgaGFzSW5zdGFuY2UpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTUw
MSwxNCArNTA4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+
KG9iamVjdCk7CisgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNDYWxsYmFja09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5bWJvbC5oYXNJbnN0YW5jZV0gbWV0aG9k
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlLiJfcyk7CisKICAgICBKU0NvbnRl
eHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgdGhp
c1JlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QpKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NS
ZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBq
c0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RIYXNJbnN0YW5jZUNh
bGxiYWNrIGhhc0luc3RhbmNlID0ganNDbGFzcy0+aGFzSW5zdGFuY2UpIHsKQEAgLTUyMCwxMSAr
NTMxLDExIEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjdXN0b21IYXMKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0YW5jZShleGVjUmVmLCB0aGlzUmVmLCB2YWx1ZVJl
ZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRv
SlMoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2Up
KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4
OCw3IEBAIGJvb2wgSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKEpTQ28KICAgICBKU1Zh
bHVlIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgdmFsdWUpOwogCiAgICAgSlNPYmplY3Qq
IGpzQ29uc3RydWN0b3IgPSB0b0pTKGNvbnN0cnVjdG9yKTsKLSAgICBpZiAoIWpzQ29uc3RydWN0
b3ItPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpCisg
ICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5pc0NhbGxhYmxlRm9ySGFzSW5zdGFuY2Uodm0pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJ
bnN0YW5jZShnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyAvLyBmYWxzZSBpZiBhbiBleGNlcHRpb24g
aXMgdGhyb3duCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTE3LDcgKzExNyw3IEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdG9ySGFzSW5zdGFuY2UoSlNDb24K
IAogICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gdG9KUyhjb25zdHJ1Y3RvclJlZik7
CiAgICAgSlNDOjpKU1ZhbHVlIGluc3RhbmNlID0gdG9KUyhnbG9iYWxPYmplY3QsIHBvc3NpYmxl
SW5zdGFuY2UpOwotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCBpbnN0YW5jZSwgY29uc3RydWN0b3ItPmdldChnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIHJldHVybiBjb25zdHJ1Y3Rvci0+ZGVm
YXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwogfQogCiBzdGF0aWMgSlND
OjpKU09iamVjdCogbWFrZVdyYXBwZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0Ns
YXNzLCBpZCB3cmFwcGVkT2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy90ZXN0YXBpLmMJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc1LDYgKzE3NzUsMTkg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoSlNWYWx1ZUlz
SW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHQsIHJlc3VsdCwgYXJyYXlDb25zdHJ1Y3Rvciwg
TlVMTCkpOwogICAgIEFTU0VSVCghSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRl
eHQsIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KSwgYXJyYXlDb25zdHJ1Y3RvciwgTlVMTCkpOwog
CisgICAgSlNPYmplY3RSZWYgcGxhaW5PYmplY3QgPSBKU09iamVjdE1ha2UoY29udGV4dCwgTlVM
TCwgTlVMTCk7CisgICAgQVNTRVJUKCFKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoY29u
dGV4dCwgcmVzdWx0LCBwbGFpbk9iamVjdCwgTlVMTCkpOworCisgICAgSlNPYmplY3RSZWYgcGxh
aW5PYmplY3RXaXRoU3ltYm9sSGFzSW5zdGFuY2UgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwK
KyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiKHsgW1N5bWJvbC5oYXNJbnN0YW5jZV06ICgpID0+IHRydWUgfSkiKSwgTlVMTCwg
TlVMTCwgMSwgTlVMTCksCisgICAgICAgIE5VTEwpOworICAgIEFTU0VSVCghSlNWYWx1ZUlzSW5z
dGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHQsIHJlc3VsdCwgcGxhaW5PYmplY3RXaXRoU3ltYm9s
SGFzSW5zdGFuY2UsIE5VTEwpKTsKKworICAgIEpTT2JqZWN0UmVmIGFycm93RnVuY3Rpb25XaXRo
U3ltYm9sSGFzSW5zdGFuY2UgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwKKyAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjb250ZXh0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KCgpID0+IHt9LCBTeW1ib2wuaGFzSW5zdGFuY2UsIHsgdmFsdWU6
ICgpID0+IHRydWUgfSkiKSwgTlVMTCwgTlVMTCwgMSwgTlVMTCksCisgICAgICAgIE5VTEwpOwor
ICAgIEFTU0VSVChKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoY29udGV4dCwgcmVzdWx0
LCBhcnJvd0Z1bmN0aW9uV2l0aFN5bWJvbEhhc0luc3RhbmNlLCBOVUxMKSk7CisKICAgICBvID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHJlc3VsdCwgTlVMTCk7CiAgICAgZXhjZXB0aW9uID0g
TlVMTDsKICAgICBBU1NFUlQoSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIEpTT2JqZWN0R2V0
UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIG8sIDAsICZleGNlcHRpb24pKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAyODA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE0MDIsMTIgKzE0MDIsMTQgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNB
UElNYWluKCkKICAgICAgICAgY2hlY2tSZXN1bHQoQCIhKHZhbHVlMSBpbnN0YW5jZW9mIE15T3Ro
ZXJDbGFzcykiLCAhW3ZhbHVlMSBpc0luc3RhbmNlT2Y6Y29uc3RydWN0b3IyXSk7CiAgICAgICAg
IGNoZWNrUmVzdWx0KEAiTXlDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPT09IE15Q2xhc3Mi
LCBbW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJNeUNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9PT0gTXlDbGFzcyJdIHRvQm9vbF0pOwogICAgICAgICBjaGVja1Jlc3VsdChAIk15Q2xhc3Mg
aW5zdGFuY2VvZiBGdW5jdGlvbiIsIFtbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIk15Q2xhc3Mg
aW5zdGFuY2VvZiBGdW5jdGlvbiJdIHRvQm9vbF0pOworICAgICAgICBjaGVja1Jlc3VsdChAIk15
Q2xhc3NbU3ltYm9sLmhhc0luc3RhbmNlXShuZXcgTXlDbGFzcygpKSIsIFtbY29udGV4dCBldmFs
dWF0ZVNjcmlwdDpAIk15Q2xhc3NbU3ltYm9sLmhhc0luc3RhbmNlXShuZXcgTXlDbGFzcygpKSJd
IHRvQm9vbF0pOwogCiAgICAgICAgIEpTVmFsdWUgKnZhbHVlMiA9IFtjb250ZXh0IGV2YWx1YXRl
U2NyaXB0OkAibmV3IE15T3RoZXJDbGFzcygpIl07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAidmFs
dWUyIGluc3RhbmNlb2YgTXlPdGhlckNsYXNzIiwgW3ZhbHVlMiBpc0luc3RhbmNlT2Y6Y29uc3Ry
dWN0b3IyXSk7CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiISh2YWx1ZTIgaW5zdGFuY2VvZiBNeUNs
YXNzKSIsICFbdmFsdWUyIGlzSW5zdGFuY2VPZjpjb25zdHJ1Y3RvcjFdKTsKICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJNeU90aGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID09PSBNeU90aGVy
Q2xhc3MiLCBbW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJNeU90aGVyQ2xhc3MucHJvdG90eXBl
LmNvbnN0cnVjdG9yID09PSBNeU90aGVyQ2xhc3MiXSB0b0Jvb2xdKTsKICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJNeU90aGVyQ2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbiIsIFtbY29udGV4dCBldmFs
dWF0ZVNjcmlwdDpAIk15T3RoZXJDbGFzcyBpbnN0YW5jZW9mIEZ1bmN0aW9uIl0gdG9Cb29sXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTXlPdGhlckNsYXNzW1N5bWJvbC5oYXNJbnN0YW5jZV0o
bmV3IE15Q2xhc3MoKSkiLCAhW1tjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiTXlPdGhlckNsYXNz
W1N5bWJvbC5oYXNJbnN0YW5jZV0obmV3IE15Q2xhc3MoKSkiXSB0b0Jvb2xdKTsKICAgICB9CiAK
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKQEAgLTE1NTMsNiArMTU1NSw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAgICAgICAgIH07CiAgICAgICAgIEpTVmFsdWUgKnJl
c3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiKG1ha2VPYmplY3QoKSBpbnN0YW5jZW9m
IFVuZXhwb3J0ZWRPYmplY3QpIl07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAibWFrZU9iamVjdCgp
IGluc3RhbmNlb2YgVW5leHBvcnRlZE9iamVjdCIsIHJlc3VsdC5pc0Jvb2xlYW4gJiYgW3Jlc3Vs
dCB0b0Jvb2xdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJVbmV4cG9ydGVkT2JqZWN0W1N5bWJv
bC5oYXNJbnN0YW5jZV0obWFrZU9iamVjdCgpKSIsIFtbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpA
IlVuZXhwb3J0ZWRPYmplY3RbU3ltYm9sLmhhc0luc3RhbmNlXShtYWtlT2JqZWN0KCkpIl0gdG9C
b29sXSk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpU2NyaXB0cy90ZXN0
YXBpLmpzCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGlTY3JpcHRzL3Rlc3RhcGkuanMJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsx
MTcsNyBAQCBzaG91bGRCZSgiTXlPYmplY3QudGhyb3dPblNldCA9IDUiLCAiYW4gCiBzaG91bGRC
ZSgiTXlPYmplY3QoJ3Rocm93T25DYWxsJykiLCAiYW4gZXhjZXB0aW9uIik7CiBzaG91bGRCZSgi
bmV3IE15T2JqZWN0KCd0aHJvd09uQ29uc3RydWN0JykiLCAiYW4gZXhjZXB0aW9uIik7CiBzaG91
bGRCZSgiJ3Rocm93T25IYXNJbnN0YW5jZScgaW5zdGFuY2VvZiBNeU9iamVjdCIsICJhbiBleGNl
cHRpb24iKTsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdKCd0aHJvd09u
SGFzSW5zdGFuY2UnKSIsICJhbiBleGNlcHRpb24iKTsKIAogTXlPYmplY3QubnVsbEdldEZvcndh
cmRTZXQgPSAxOwogc2hvdWxkQmUoIk15T2JqZWN0Lm51bGxHZXRGb3J3YXJkU2V0IiwgMSk7CkBA
IC0xODksNiArMTkwLDcgQEAgY29uc3RydWN0ZWRPYmplY3QgPSBuZXcgTXlDb25zdHJ1Y3Rvcigx
KQogc2hvdWxkQmUoInR5cGVvZiBjb25zdHJ1Y3RlZE9iamVjdCIsICJvYmplY3QiKTsKIHNob3Vs
ZEJlKCJjb25zdHJ1Y3RlZE9iamVjdC52YWx1ZSIsIDEpOwogc2hvdWxkQmUoIm15T2JqZWN0IGlu
c3RhbmNlb2YgTXlPYmplY3QiLCB0cnVlKTsKK3Nob3VsZEJlKCJNeU9iamVjdFtTeW1ib2wuaGFz
SW5zdGFuY2VdKG15T2JqZWN0KSIsIHRydWUpOwogc2hvdWxkQmUoIihuZXcgT2JqZWN0KCkpIGlu
c3RhbmNlb2YgTXlPYmplY3QiLCBmYWxzZSk7CiAKIHNob3VsZFRocm93KCJuZXcgTXlCYWRDb25z
dHJ1Y3RvcigpIik7CkBAIC0zNTUsNiArMzU3LDE2IEBAIHNob3VsZEJlKCJzeW1ib2xUb1N0cmlu
Z1RhZ0Rlc2NyaXB0b3IuY28KIEVtcHR5T2JqZWN0W1N5bWJvbC50b1N0cmluZ1RhZ10gPSAiRm9v
IjsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRW1wdHlPYmplY3Qp
IiwgIltvYmplY3QgRm9vXSIpOwogCitzaG91bGRCZSgiW10gaW5zdGFuY2VvZiBFbXB0eU9iamVj
dCIsIGZhbHNlKTsKK3Nob3VsZEJlKCJFbXB0eU9iamVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdKHt9
KSIsIGZhbHNlKTsKKwordmFyIHN5bWJvbEhhc0luc3RhbmNlRGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRW1wdHlPYmplY3QsIFN5bWJvbC5oYXNJbnN0YW5jZSk7
CitzaG91bGRCZSgidHlwZW9mIHN5bWJvbEhhc0luc3RhbmNlRGVzY3JpcHRvciIsICJvYmplY3Qi
KTsKK3Nob3VsZEJlKCJzeW1ib2xIYXNJbnN0YW5jZURlc2NyaXB0b3IudmFsdWUiLCBFbXB0eU9i
amVjdFtTeW1ib2wuaGFzSW5zdGFuY2VdKTsKK3Nob3VsZEJlKCJzeW1ib2xIYXNJbnN0YW5jZURl
c2NyaXB0b3Iud3JpdGFibGUiLCB0cnVlKTsKK3Nob3VsZEJlKCJzeW1ib2xIYXNJbnN0YW5jZURl
c2NyaXB0b3IuZW51bWVyYWJsZSIsIGZhbHNlKTsKK3Nob3VsZEJlKCJzeW1ib2xIYXNJbnN0YW5j
ZURlc2NyaXB0b3IuY29uZmlndXJhYmxlIiwgdHJ1ZSk7CisKIGZvciAodmFyIGkgPSAwOyBpIDwg
NjsgKytpKQogICAgIFByb3BlcnR5Q2F0Y2hhbGxzLnggPSBpOwogc2hvdWxkQmUoIlByb3BlcnR5
Q2F0Y2hhbGxzLngiLCA0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE5Miw2ICs0MTkyLDcg
QEAKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1QTlDMjJCMzBD
QzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEYxNTNGRTI2OUEwODcyMDAw
QjlDREUgLyogT2JqZWN0UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gT2JqZWN0
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFERjBGM0E4
M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4
Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3
MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg5ODksNiArODk5MCw3IEBACiAJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1v
ZHVsZUxvYWRlci5qcyAqLywKIAkJCQlBNTI3MDQ4NjFEMDI3Qzg4MDAzNTRDMzcgLyogTnVtYmVy
Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVj
dENvbnN0cnVjdG9yLmpzICovLAorCQkJCTg0RjE1M0ZFMjY5QTA4NzIwMDBCOUNERSAvKiBPYmpl
Y3RQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNUUxQjY1RDlCMTAwOURCMUVGIC8qIFByb21p
c2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5REIxRUYgLyogUHJv
bWlzZU9wZXJhdGlvbnMuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFBy
b21pc2VQcm90b3R5cGUuanMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5
ICsxMjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhpc1NoYXJlZFR5cGVkQXJyYXlW
aWV3KSBcCiAgICAgbWFjcm8oaXNEZXRhY2hlZCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlEZWZh
dWx0Q29tcGFyYXRvcikgXAotICAgIG1hY3JvKGlzQm91bmRGdW5jdGlvbikgXAogICAgIG1hY3Jv
KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikgXAotICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKKyAg
ICBtYWNybyhmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sKSBcCiAgICAgbWFjcm8o
aXNBcnJheVNsb3cpIFwKICAgICBtYWNybyhzYW1lVmFsdWUpIFwKICAgICBtYWNybyhjb25jYXRN
ZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsOSBAQCBmdW5jdGlvbiBzeW1ib2xIYXNJbnN0YW5jZSh2YWx1ZSkKICAgICBpZiAo
QGlzQm91bmRGdW5jdGlvbih0aGlzKSkKICAgICAgICAgcmV0dXJuIEBoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24odGhpcywgdmFsdWUpOwogCisgICAgaWYgKCFAaXNPYmplY3QodmFsdWUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5wcm90b3R5cGU7CiAg
ICAgcmV0dXJuIEBpbnN0YW5jZU9mKHZhbHVlLCB0YXJnZXQpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdFByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0UHJvdG90eXBlLmpzCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RQcm90b3R5cGUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
ZnVuY3Rpb24gaXNQcm90b3R5cGVPZih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAoIUBpc09iamVjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBAaW5zdGFuY2VPZih2YWx1ZSwgQHRvT2JqZWN0KHRoaXMpKTsKK30KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNiArNTQsOCBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAg
IG1hY3JvKGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldFNldEl0
ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKKyAgICBt
YWNybyhpbnN0YW5jZU9mKSBcCisgICAgbWFjcm8oaXNCb3VuZEZ1bmN0aW9uKSBcCiAgICAgbWFj
cm8oaXNPYmplY3QpIFwKICAgICBtYWNybyhpc0NhbGxhYmxlKSBcCiAgICAgbWFjcm8oaXNDb25z
dHJ1Y3RvcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiw2
IEBAIG9wIDppZGVudGl0eV93aXRoX3Byb2ZpbGUsCiAgICAgICAgIGJvdHRvbVByb2ZpbGU6IHVu
c2lnbmVkLAogICAgIH0KIAotb3AgOm92ZXJyaWRlc19oYXNfaW5zdGFuY2UsCi0gICAgYXJnczog
ewotICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgY29uc3RydWN0b3I6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgaGFzSW5zdGFuY2VWYWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAotICAgIH0KLQogb3AgOmluc3RhbmNlb2YsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKQEAgLTQzNCw3ICs0MjcsOCBAQCBvcCA6aXNfY2VsbF93aXRoX3R5cGUs
CiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgb3Bl
cmFuZDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0eXBlOiBKU1R5cGUsCisgICAgICAgIGZp
cnN0VHlwZTogSlNUeXBlLAorICAgICAgICBsYXN0VHlwZTogSlNUeXBlLAogICAgIH0KIAogb3Ag
OmluX2J5X3ZhbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0
LDcgKzIzNCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAg
ICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEhhc1ByaXZhdGVO
YW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSGFzUHJpdmF0ZUJyYW5kLCBiYXNlLCBi
cmFuZCkKLSAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJ
bnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQog
ICAgIFVTRVMoT3BBZGQsIGxocywgcmhzKQogICAgIFVTRVMoT3BNdWwsIGxocywgcmhzKQpAQCAt
NDkwLDcgKzQ4OSw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnMK
ICAgICBERUZTKE9wR2V0QnlJZFdpdGhUaGlzLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFsV2l0
aFRoaXMsIGRzdCkKICAgICBERUZTKE9wR2V0UHJvdG90eXBlT2YsIGRzdCkKLSAgICBERUZTKE9w
T3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGRzdCkKICAgICBERUZTKE9wSW5zdGFuY2VvZiwgZHN0KQog
ICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFsLCBk
c3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2
b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgPSBq
c0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yQ29kZUJsb2NrLmdldCgpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FsbGVlLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY2FsbGVlLT5pc0pTRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2Fs
bCB0byAiLApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWso
Vk0mIHZtKQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaXNEaXJlY3QoKSAmJiBoYXZlTGFz
dFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChsYXN0U2VlbkNhbGxlZSgpKSkgewot
ICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQor
ICAgICAgICBpZiAobGFzdFNlZW5DYWxsZWUoKS0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgICAg
ICBoYW5kbGVTcGVjaWZpY0NhbGxlZShqc0Nhc3Q8SlNGdW5jdGlvbio+KGxhc3RTZWVuQ2FsbGVl
KCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2
aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIElm
IHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRv
IGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZp
ZWRDbG9zdXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2NhbGxlZS0+dHlwZSgpID09
IEpTRnVuY3Rpb25UeXBlKQorICAgICAgICBpZiAobV9jYWxsZWUtPmlzSlNGdW5jdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxs
ZWUpLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAy
ODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw2IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJp
bmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJCYWRDb25zdGFudENhY2hlIjsKICAgICBj
YXNlIEJhZEluZGV4aW5nVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRJbmRleGluZ1R5cGUiOwot
ICAgIGNhc2UgQmFkVHlwZUluZm9GbGFnczoKLSAgICAgICAgcmV0dXJuICJCYWRUeXBlSW5mb0Zs
YWdzIjsKICAgICBjYXNlIE92ZXJmbG93OgogICAgICAgICByZXR1cm4gIk92ZXJmbG93IjsKICAg
ICBjYXNlIE5lZ2F0aXZlWmVybzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBlbnVt
IEV4aXRLaW5kIDogdWludDhfdCB7CiAgICAgQmFkQ2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNl
IGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCiAgICAgQmFkQ29uc3RhbnRDYWNoZSwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYSBjYWNoZSBvbiBhIHdlYWsgY29uc3RhbnQgKHVzdWFsbHkgYSBwcm90
b3R5cGUpIHdhcyB3cm9uZy4KICAgICBCYWRJbmRleGluZ1R5cGUsIC8vIFdlIGV4aXRlZCBiZWNh
dXNlIGFuIGluZGV4aW5nIHR5cGUgd2FzIHdyb25nLgotICAgIEJhZFR5cGVJbmZvRmxhZ3MsIC8v
IFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJvdXQg
d2hhdCBUeXBlSW5mbyBmbGFncyB3ZSB3b3VsZCBzZWUuCiAgICAgT3ZlcmZsb3csIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0aXZlWmVybywgLy8gV2UgZXhpdGVk
IGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVyby4KICAgICBOZWdhdGl2ZUluZGV4
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBhIG5lZ2F0aXZlIGluZGV4IGlu
IGEgcGxhY2Ugd2UgZGlkbid0IHdhbnQgdG8gc2VlIGl0LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcAkocmV2aXNpb24g
MjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0
dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw2IEBAIEluc3RhbmNlT2ZTdGF0dXMg
SW5zdGFuY2VPZlN0YXR1czo6Y29tcHUKICNpZiBFTkFCTEUoREZHX0pJVCkKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewotICAg
IC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBoYXZlIHRvIGJhaWwgZm9yIG5vbkNlbGwgaWYgd2UgdGF1
Z2h0IE1hdGNoU3RydWN0dXJlIGhvdyB0byBoYW5kbGUgbm9uCi0gICAgLy8gY2VsbHMuIElmIHdl
IGZpeGVkIHRoYXQgdGhlbiB3ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHVzZSBzdW1tYXJ5KCk7Ci0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc4NAogICAg
IFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkodm0s
IHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKICAgICAgICAgcmV0
dXJuIEluc3RhbmNlT2ZTdGF0dXMoc3VtbWFyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHJldmlzaW9uIDI4MDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
dihpc0RldGFjaGVkLCBudWxscHRyKSBcCiAgICAgdih0eXBlZEFycmF5RGVmYXVsdENvbXBhcmF0
b3IsIG51bGxwdHIpIFwKICAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgbnVsbHB0cikg
XAotICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihoYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGZ1bmN0aW9uUHJvdG90eXBlSGFzSW5zdGFu
Y2VTeW1ib2wsIG51bGxwdHIpIFwKICAgICB2KGluc3RhbmNlT2YsIG51bGxwdHIpIFwKICAgICB2
KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKICAgICB2KEJ1aWx0aW5EZXNjcmliZSwgbnVsbHB0cikg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDEx
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAgICAgICAg
ICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0lu
dGVybmFsRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJJbnRlcm5hbEZ1
bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSBTcGVj
U3RyaW5nKQpAQCAtNTE4LDEwICs1MjMsMTMgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25G
cm9tQ2xhc3NJbmZvSQogCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rp
b246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246
OmluZm8oKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb25XaXRoTm9uRGVmYXVsdEhh
c0luc3RhbmNlOwotICAgICAgICByZXR1cm4gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0
YW5jZTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjQm91bmRGdW5jdGlvbjsKKyAgICAgICAgcmV0
dXJuIFNwZWNOb25Cb3VuZEZ1bmN0aW9uOwogICAgIH0KIAorICAgIGlmIChjbGFzc0luZm8tPmlz
U3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgICAgICByZXR1cm4gU3Bl
Y0ludGVybmFsRnVuY3Rpb247CisKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNQ
cm9taXNlOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAgICAg
CkBAIC02ODYsNiArNjk0LDE2IEBAIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNw
ZWN1bGEKICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKIH0KIAorc3RkOjpvcHRpb25hbDxTcGVj
dWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlUmFuZ2UoSlNUeXBlUmFuZ2UgcmFuZ2Up
Cit7CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBTcGVjTm9uZTsKKyAgICBmb3Ig
KHVpbnQ4X3QgdHlwZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJhbmdlLmZpcnN0KTsgdHlwZSA8
PSBzdGF0aWNfY2FzdDx1aW50OF90PihyYW5nZS5sYXN0KTsgdHlwZSsrKQorICAgICAgICBzcGVj
dWxhdGlvbiB8PSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoc3RhdGljX2Nhc3Q8SlNUeXBlPih0eXBl
KSkudmFsdWVfb3IoU3BlY05vbmUpOworICAgIGlmIChzcGVjdWxhdGlvbiA9PSBTcGVjTm9uZSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3BlY3VsYXRpb247Cit9
CisKIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShK
U1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTY5NSw2ICs3MTMsMTAgQEAg
c3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpbwogICAgICAgICByZXR1cm4g
U3BlY1N5bWJvbDsKICAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICByZXR1cm4gU3Bl
Y0hlYXBCaWdJbnQ7CisgICAgY2FzZSBJbnRlcm5hbEZ1bmN0aW9uVHlwZToKKyAgICAgICAgcmV0
dXJuIFNwZWNJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNhc2UgSlNGdW5jdGlvblR5cGU6CisgICAg
ICAgIHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsKICAgICBjYXNlIEFycmF5VHlwZToKICAg
ICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC05
NjAsNiArOTgyLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgog
ICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3Vs
YXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3QiLCBzdHJsZW4oIlNwZWNEYXRhVmlld09iamVjdCIp
KSkKICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKKyAgICBpZiAoIXN0cm5jbXAo
c3BlY3VsYXRpb24sICJTcGVjSW50ZXJuYWxGdW5jdGlvbiIsIHN0cmxlbigiU3BlY0ludGVybmFs
RnVuY3Rpb24iKSkpCisgICAgICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbjsKICAgICBp
ZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0T3RoZXIiLCBzdHJsZW4oIlNwZWNP
YmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNPYmplY3RPdGhlcjsKICAgICBpZiAo
IXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0Iiwgc3RybGVuKCJTcGVjT2JqZWN0Iikp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMTUgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJ1Y3R1cmU7CitzdHJ1Y3QgSlNUeXBlUmFuZ2U7CiAK
IHR5cGVkZWYgdWludDY0X3QgU3BlY3VsYXRlZFR5cGU7CiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOyAvLyBX
ZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY0FycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwg
MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSAgICA9IDF1bGwgPDwg
MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0IGhhcyBpdHMgSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSB0eXBlIGluZm8gZmxhZ3MgYml0IHNldC4KLXN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5j
ZSA9IDF1bGwgPDwgMzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiB0aGF0IGRvZXMg
bm90IGhhdmUgaXRzIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgdHlwZSBpbmZvIGZsYWdz
IGJpdCBzZXQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3Rh
bmNlIHwgU3BlY0Z1bmN0aW9uV2l0aE5vbkRlZmF1bHRIYXNJbnN0YW5jZTsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0JvdW5kRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNCb3VuZEZ1bmN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uQm91bmRGdW5jdGlvbiAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcywg
YnV0IG5vdCBhIEpTQm91bmRGdW5jdGlvbi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb3VuZEZ1bmN0
aW9uIHwgU3BlY05vbkJvdW5kRnVuY3Rpb247IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rp
b24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjSW50MTZBcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA1
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDY7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQz
MkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KQEAgLTEwOSw4ICsxMTAsMTAgQEAgc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSQogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0hlYXBCaWdJbnQ7CiAjZW5kaWYKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDU7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnRlcm5hbEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQ2OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBJbnRlcm5hbEZ1bmN0aW9uLgogc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0
cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNC
aWdJbnQ7IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KLXN0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNw
ZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5
VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0
cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9t
aXNlT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9i
amVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRB
cnJheSB8IFNwZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1
c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNw
ZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1l
bnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVj
dCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBT
cGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwg
U3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdCB8
IFNwZWNJbnRlcm5hbEZ1bmN0aW9uOyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFu
eSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjT2JqZWN0TWF5YmVDYWxsYWJsZSAgICAgICAgICAgICAgID0gU3BlY0Z1bmN0aW9u
IHwgU3BlY0ludGVybmFsRnVuY3Rpb24gfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjT2JqZWN0T3Ro
ZXI7CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wg
fCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
Q2VsbC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVj
b2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNl
cHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29y
cmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpAQCAt
MjMxLDcgKzIzNCwxNyBAQCBpbmxpbmUgYm9vbCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRl
CiAKIGlubGluZSBib29sIGlzRnVuY3Rpb25TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Z1bmN0aW9uOworICAgIHJldHVybiAhIXZh
bHVlICYmICh2YWx1ZSAmIFNwZWNGdW5jdGlvbikgPT0gdmFsdWU7Cit9CisKK2lubGluZSBib29s
IGlzTm9uQm91bmRGdW5jdGlvblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQorewor
ICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjTm9uQm91bmRGdW5jdGlvbjsKK30KKworaW5saW5lIGJv
b2wgaXNJbnRlcm5hbEZ1bmN0aW9uU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnRlcm5hbEZ1bmN0aW9uOwogfQogCiBpbmxpbmUg
Ym9vbCBpc1Byb3h5T2JqZWN0U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC01
MTgsNiArNTMxLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYQog
Ly8gSWYgaXQncyBhbiBhbnlJbnQoKSwgaXQnbGwgcmV0dXJuIHNwZWN1bGF0ZWQgdHlwZXMgZnJv
bSB0aGUgSW50NTIgbGF0dGljZS4KIC8vIE90aGVyd2lzZSwgaXQnbGwgcmV0dXJuIHR5cGVzIGZy
b20gdGhlIEpTVmFsdWUgbGF0dGljZS4KIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBl
IGludDUyQXdhcmVTcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8
U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZVJhbmdlKEpTVHlwZVJhbmdlKTsK
IHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5
cGUpOwogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShUeXBl
ZEFycmF5VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9yIHR5cGVkIHZpZXdzLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYg
KzE0OTcsMTEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bgogICAg
IE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRy
LCBMaW5rVGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwog
fQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90TGlua1RpbWVDb25zdGFu
dChSZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50IGNvbnN0YW50LCBMYWJlbCYgdGFy
Z2V0KQoreworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25z
dGFudChudWxscHRyLCBjb25zdGFudCksIHRhcmdldC5iaW5kKHRoaXMpKTsKK30KKwogdW5zaWdu
ZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWRlSnVtcElmTm90RnVuY3Rpb25IYXNPd25Qcm9w
ZXJ0eShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogewogICAgIE9wSm5lcVB0cjo6
ZW1pdDxPcGNvZGVTaXplOjpXaWRlMzI+KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50
KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6Omhhc093blByb3BlcnR5RnVuY3Rpb24pLCB0YXJn
ZXQuYmluZCh0aGlzKSk7CkBAIC0xNzM1LDEyICsxNzQwLDEyIEBAIGJvb2wgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFcXVhbGl0eU9wSW0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAg
ICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTdHJp
bmdUeXBlKTsKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRz
dCwgb3AubV92YWx1ZSwgU3RyaW5nVHlwZSwgU3RyaW5nVHlwZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInN5
bWJvbCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElz
Q2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3ltYm9sVHlwZSk7Cisg
ICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFs
dWUsIFN5bWJvbFR5cGUsIFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJiaWdpbnQiKSB7CkBA
IC0xNzQ4LDcgKzE3NTMsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlP
cEltCiAjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQo
dGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgT3BJc0NlbGxX
aXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlKTsKKyAg
ICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1
ZSwgSGVhcEJpZ0ludFR5cGUsIEhlYXBCaWdJbnRUeXBlKTsKICNlbmRpZgogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjQyNCwxMiArMjQyOSw2IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgIH0KIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRPdmVycmlkZXNIYXNJbnN0YW5jZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBoYXNJbnN0YW5j
ZVZhbHVlKQotewotICAgIE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2U6OmVtaXQodGhpcywgZHN0LCBj
b25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogLy8g
SW5kaWNhdGVzIHRoZSBsZWFzdCB1cHBlciBib3VuZCBvZiByZXNvbHZlIHR5cGUgYmFzZWQgb24g
bG9jYWwgc2NvcGUuIFRoZSBieXRlY29kZSBsaW5rZXIKIC8vIHdpbGwgc3RhcnQgd2l0aCB0aGlz
IFJlc29sdmVUeXBlIGFuZCBjb21wdXRlIHRoZSBsZWFzdCB1cHBlciBib3VuZCBpbmNsdWRpbmcg
aW50ZXJjZXB0aW5nIHNjb3Blcy4KIFJlc29sdmVUeXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNv
bHZlVHlwZSgpCkBAIC00NjA2LDkgKzQ2MDUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb0luZAogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMsIEpTVHlwZVJhbmdlIHJhbmdlKQoreworICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVt
aXQodGhpcywgZHN0LCBzcmMsIHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0KTsKKyAgICByZXR1cm4g
ZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2VsbFdpdGhU
eXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUgdHlwZSkKIHsKLSAg
ICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKKyAgICBPcElz
Q2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlLCB0eXBlKTsKICAgICByZXR1
cm4gZHN0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5OCw3ICs3OTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE92ZXJyaWRlc0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3Ry
dWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdp
c3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNl
T2ZDdXN0b20oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCog
Y29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKQEAg
LTkxNiw2ICs5MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcElm
RmFsc2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KTsK
ICAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25k
LCBMYWJlbCYgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcElmTm90TGlua1RpbWVDb25z
dGFudChSZWdpc3RlcklEKiBjb25kLCBMaW5rVGltZUNvbnN0YW50LCBMYWJlbCYgdGFyZ2V0KTsK
ICAgICAgICAgdW5zaWduZWQgZW1pdFdpZGVKdW1wSWZOb3RGdW5jdGlvbkhhc093blByb3BlcnR5
KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpOwogICAgICAgICB2b2lkIHJlY29yZEhh
c093blN0cnVjdHVyZVByb3BlcnR5SW5Gb3JJbkxvb3AoU3RydWN0dXJlRm9ySW5Db250ZXh0Jiwg
dW5zaWduZWQgYnJhbmNoT2Zmc2V0LCBMYWJlbCYgZ2VuZXJpY1BhdGgpOwogCkBAIC05NDAsNiAr
OTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbnVtZXJh
dG9yR2VuZXJpY1Byb3BlcnR5TmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGVudW1l
cmF0b3IsIFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvSW5k
ZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpbmRleCk7CiAKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjLCBKU1R5cGVSYW5nZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0NlbGxXaXRo
VHlwZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgSlNUeXBlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTR2VuZXJhdG9yVHlw
ZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3Qs
IHNyYywgSlNBc3luY0dlbmVyYXRvclR5cGUpOyB9CkBAIC05NTMsNiArOTU0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJu
IGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBJdGVyYXRvclR5cGUpOyB9CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NldEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0SXRl
cmF0b3JUeXBlKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNCb3VuZEZ1bmN0aW9uKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5
cGUoZHN0LCBzcmMsIEpTQm91bmRGdW5jdGlvblR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc0NhbGxhYmxlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQ1LDYgKzEzNDUsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0XwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldFByb3RvdHlwZU9m
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAorUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pbnN0YW5jZU9m
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBB
cmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0g
bm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEluc3RhbmNlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgdmFsdWUuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1Byb21pc2U6
OkZpZWxkIHByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBu
b2RlKQogewogICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTE4OTksNiArMTkwOSw3IEBAIENSRUFU
RV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQXJyYXkKIENSRUFURV9JTlRSSU5TSUNfRk9S
X0JSQU5EX0NIRUNLKGlzTWFwSXRlcmF0b3IsIElzTWFwSXRlcmF0b3IpCiBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NldEl0ZXJhdG9yLCBJc1NldEl0ZXJhdG9yKQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNVbmRlZmluZWRPck51bGwsIElzVW5kZWZpbmVk
T3JOdWxsKQorQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNCb3VuZEZ1bmN0aW9u
LCBJc0JvdW5kRnVuY3Rpb24pCiAKICN1bmRlZiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSwogCkBAIC0zMTYwLDI5ICszMTcxLDI0IEBAIFJlZ2lzdGVySUQqIFRocm93YWJsZUJpbmFy
eU9wTm9kZTo6ZW1pdEIKIAogUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGhhc0luc3RhbmNlVmFsdWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGlzT2JqZWN0ID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpc0N1c3RvbSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBoYXNJbnN0YW5j
ZVZhbHVlID0gZ2VuZXJhdG9yLm1vdmVFbXB0eVZhbHVlKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5v
ZGVGb3JMZWZ0SGFuZFNpZGUobV9leHByMSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX2V4cHIy
LT5pc1B1cmUoZ2VuZXJhdG9yKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9y
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBk
c3RSZWcgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKTsKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIFJlZjxMYWJlbD4gY3VzdG9tID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgUmVmPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
Ci0gICAgUmVmPExhYmVsPiB0eXBlRXJyb3IgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdElzT2JqZWN0KGlzT2JqZWN0LmdldCgpLCBjb25z
dHJ1Y3Rvci5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShpc09iamVjdC5n
ZXQoKSwgdHlwZUVycm9yLmdldCgpKTsKKyAgICAvLyBVbmNvbmRpdGlvbmFsbHkgY2xvbmUgcmVn
aXN0ZXJzIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBmb3IgY2FzZXMgbGlrZSBgdmFyIHggPSB4IGlu
c3RhbmNlb2YgeDsgZnVuY3Rpb24geCgpIHt9YC4KKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUodmFs
dWUuZ2V0KCksIG1fZXhwcjEpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5n
ZXQoKSwgbV9leHByMik7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShnZW5lcmF0b3Iu
ZW1pdElzQ2VsbFdpdGhUeXBlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgY29uc3RydWN0b3Iu
Z2V0KCksIEpTVHlwZVJhbmdlIHsgSW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTRnVuY3Rpb25UeXBl
IH0pLCBjdXN0b20uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChoYXNJbnN0YW5jZVZhbHVlLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgZ2VuZXJhdG9y
LnZtKCkucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0T3ZlcnJpZGVzSGFzSW5zdGFuY2UoaXNDdXN0b20uZ2V0KCksIGNv
bnN0cnVjdG9yLmdldCgpLCBoYXNJbnN0YW5jZVZhbHVlLmdldCgpKTsKLQotICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoaXNDdXN0b20uZ2V0KCksIGN1c3RvbS5nZXQo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RMaW5rVGltZUNvbnN0YW50KGhhc0luc3Rh
bmNlVmFsdWUuZ2V0KCksIExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmN0aW9uUHJvdG90eXBlSGFzSW5z
dGFuY2VTeW1ib2wsIGN1c3RvbS5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxz
ZShnZW5lcmF0b3IuZW1pdElzT2JqZWN0KGRzdFJlZy5nZXQoKSwgdmFsdWUuZ2V0KCkpLCBkb25l
LmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvdG90
eXBlLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQoKSwgZ2VuZXJhdG9yLnZtKCkucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKQEAgLTMxOTEsMTAgKzMxOTcsNiBAQCBSZWdpc3RlcklEKiBJbnN0YW5j
ZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlCiAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZU9mKGRzdFJl
Zy5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXAoZG9uZS5nZXQoKSk7Ci0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHR5cGVFcnJv
ci5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiUmlnaHQgaGFuZCBz
aWRlIG9mIGluc3RhbmNlb2YgaXMgbm90IGFuIG9iamVjdCIpOwotCiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChjdXN0b20uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcxLDcgKzE0
NzEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBib29sIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZToKLSAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0NlbGwoKSAm
JiBjaGlsZC52YWx1ZSgpLmFzQ2VsbCgpLT50eXBlKCkgPT0gbm9kZS0+cXVlcmllZFR5cGUoKSkp
OworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1
ZSgpLmlzQ2VsbCgpICYmIG5vZGUtPnF1ZXJpZWRUeXBlKCkuY29udGFpbnMoY2hpbGQudmFsdWUo
KS5hc0NlbGwoKS0+dHlwZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4oCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICBjaGlsZC5tX3N0cnVjdHVyZS5mb3JF
YWNoKAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IHN0
cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbm9kZS0+cXVlcmllZFR5cGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBub2RlLT5xdWVyaWVkVHlwZSgp
LmNvbnRhaW5zKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtYXRjaGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewpA
QCAtMTYxOSw3ICsxNjE5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICAgICAgLy8gSXMgdGhlIGNoaWxkJ3MgdHlwZSBhbiBvYmplY3QgdGhhdCBp
c24ndCBhbiBvdGhlci1vYmplY3QgKGkuZS4gb2JqZWN0IHRoYXQgY291bGQKICAgICAgICAgICAg
IC8vIGhhdmUgbWFzcXVhcmVkZXMtYXMtdW5kZWZpbmVkIHRyYXBzKSBhbmQgaXNuJ3QgYSBmdW5j
dGlvbj8gVGhlbjogd2Ugc2hvdWxkIGZvbGQKICAgICAgICAgICAgIC8vIHRoaXMgdG8gdHJ1ZS4K
LSAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH4oU3BlY09iamVjdCAtIFNwZWNPYmpl
Y3RPdGhlciAtIFNwZWNGdW5jdGlvbikpKSB7CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5
cGUgJiB+KFNwZWNPYmplY3QgLSBTcGVjT2JqZWN0TWF5YmVDYWxsYWJsZSkpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAg
ICAgICBjb25zdGFudFdhc1NldCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NzMyLDcgKzE3MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIChTcGVjRnVuY3Rpb24gfCBTcGVjT2JqZWN0
T3RoZXIgfCBTcGVjUHJveHlPYmplY3QpKSkgeworICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90
eXBlICYgU3BlY09iamVjdE1heWJlQ2FsbGFibGUpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgY29uc3RhbnRX
YXNTZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgxMSw3ICsxODExLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBjb3VsZCB1c2UgdGhlIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZCB3YXRjaHBv
aW50IGhlcmUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ0NTYKLSAgICAgICAgaWYgKCEoYWJzdHJhY3RDaGlsZC5tX3R5cGUgJiB+KFNwZWNP
YmplY3QgLSBTcGVjT2JqZWN0T3RoZXIgLSBTcGVjRnVuY3Rpb24pKSkgeworICAgICAgICBpZiAo
IShhYnN0cmFjdENoaWxkLm1fdHlwZSAmIH4oU3BlY09iamVjdCAtIFNwZWNPYmplY3RNYXliZUNh
bGxhYmxlKSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6
ZShtX3ZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTQzMzQsMTAgKzQzMzQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAgICBjYXNl
IE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5z
dGFuY2U6Ci0gICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7
Ci0gICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTQ0NjQsNDMgKzQ0NjAsNiBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7Ci0gICAgICAg
IGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgdW5zaWduZWQgYml0cyA9IG5vZGUtPnR5cGVJbmZvT3BlcmFuZCgpOwot
ICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAgICAgIGlmIChiaXRzID09IEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fdHlwZSA9
PSBTcGVjRnVuY3Rpb25XaXRoRGVmYXVsdEhhc0luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoSlNWYWx1
ZSB2YWx1ZSA9IGFic3RyYWN0VmFsdWUudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHZhbHVl
LmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGlmIHdl
IHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVjdGVkCi0gICAgICAg
ICAgICAgICAgLy8gYW5kIHdlIGNhbiByZWFkIGl0cyBpbmxpbmUgdHlwZSBpbmZvIGZsYWdzLiBU
aGVzZSBmbGFncyBkb24ndCBjaGFuZ2Ugb3ZlciB0aGUKLSAgICAgICAgICAgICAgICAvLyBvYmpl
Y3QncyBsaWZldGltZS4KLSAgICAgICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxp
bmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChhYnN0cmFjdFZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKLSAg
ICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgYWJzdHJhY3RWYWx1ZS5tX3N0
cnVjdHVyZS5mb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKLSAg
ICAgICAgICAgICAgICBvayAmPSAoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFn
cygpICYgYml0cykgPT0gYml0czsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKG9r
KSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmco
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5KSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTY2LDE3ICs1OTY2LDYgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2hlY2tfdGR6KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNIYXNJbnN0YW5jZT4oKTsKLSAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihjdXJyZW50Q29kZU9yaWdpbigpKS0+
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKTsKLQotICAgICAgICAgICAg
Tm9kZSogY29uc3RydWN0b3IgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uc3Ry
dWN0b3IpKTsKLSAgICAgICAgICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZSkpOwotCi0gICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChPdmVycmlkZXNI
YXNJbnN0YW5jZSwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGRlZmF1bHRIYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKSksIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKTsKLSAgICAgICAgfQotCiAg
ICAgICAgIGNhc2Ugb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElkZW50aXR5V2l0aFByb2ZpbGU+
KCk7CiAgICAgICAgICAgICBOb2RlKiBzcmNEc3QgPSBnZXQoYnl0ZWNvZGUubV9zcmNEc3QpOwpA
QCAtNjAyNyw3ICs2MDE2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluc3RhbmNlT2YsIHZhbHVl
LCBwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFw
aChJbnN0YW5jZU9mLCBFZGdlKHZhbHVlLCBDZWxsVXNlKSwgRWRnZShwcm90b3R5cGUpKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgfQogCkBAIC02
MDk4LDcgKzYwODcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwotICAgICAg
ICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2VsbFdpdGhUeXBlLCBPcElu
Zm8oYnl0ZWNvZGUubV90eXBlKSwgdmFsdWUpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2RzdCwgYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdlIHsgYnl0
ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfSksIHZhbHVlKSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CiAgICAgICAgIH0KIApA
QCAtNzI1Nyw3ICs3MjQ2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgICAgICBnZW5lcmljQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0
YWJsZUJsb2NrKCk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogaXNLbm93bkl0ZXJGdW5j
dGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxUHRyLCBPcEluZm8oZnJvemVuU3ltYm9sSXRlcmF0
b3JGdW5jdGlvbiksIHN5bWJvbEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSog
aXNBcnJheSA9IGFkZFRvR3JhcGgoSXNDZWxsV2l0aFR5cGUsIE9wSW5mbyhBcnJheVR5cGUpLCBn
ZXQoYnl0ZWNvZGUubV9pdGVyYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBpc0Fy
cmF5ID0gYWRkVG9HcmFwaChJc0NlbGxXaXRoVHlwZSwgT3BJbmZvKEpTVHlwZVJhbmdlIHsgQXJy
YXlUeXBlLCBBcnJheVR5cGUgfSksIGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSA9IG1fZ3JhcGgubV9icmFuY2hE
YXRhLmFkZCgpOwogICAgICAgICAgICAgICAgICAgICBicmFuY2hEYXRhLT50YWtlbiA9IEJyYW5j
aFRhcmdldChmYXN0QXJyYXlCbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OCw3ICsxMzgsNiBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAg
ICAgY2FzZSBvcF9wcm9maWxlX3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxv
dzoKICAgICBjYXNlIG9wX21vdjoKLSAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6
CiAgICAgY2FzZSBvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBvcF9pbnN0YW5j
ZW9mOgogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
MCw3ICszMDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6Ci0gICAgICAgIGRlZihQ
dXJlVmFsdWUobm9kZSwgbm9kZS0+cXVlcmllZFR5cGUoKSkpOworICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUsIG5vZGUtPnF1ZXJpZWRUeXBlKCkucmF3Qml0cygpKSk7CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6CkBAIC0xMTc2LDExICsxMTc2LDYgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQ2hlY2tEZXRhY2hl
ZDoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgcmV0dXJuOyAKLSAgICAgICAg
Ci0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJ
bmZvRmxhZ3MpOwotICAgICAgICBkZWYoSGVhcExvY2F0aW9uKENoZWNrVHlwZUluZm9GbGFnc0xv
YywgSlNDZWxsX3R5cGVJbmZvRmxhZ3MsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkp
OwotICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFBhcnNlSW50OgogICAgICAgICAvLyBOb3Rl
OiBXZSB3b3VsZCBoYXZlIGVsaW1pbmF0ZWQgYSBQYXJzZUludCB0aGF0IGhhcyBqdXN0IGEgc2lu
Z2xlIGNoaWxkIGFzIGFuIEludDMyVXNlIGluc2lkZSBmaXh1cC4KQEAgLTExOTIsMTEgKzExODcs
NiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGNs
b2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0
YW5jZToKLSAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7Ci0gICAgICAgIGRlZihI
ZWFwTG9jYXRpb24oT3ZlcnJpZGVzSGFzSW5zdGFuY2VMb2MsIEpTQ2VsbF90eXBlSW5mb0ZsYWdz
LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsK
ICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNiw0NiArMTAyNiw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewotICAgICAgICAg
ICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBub2Rl
LT50eXBlSW5mb09wZXJhbmQoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYml0cyk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGJpdHMgPT0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3R5cGUgPT0gU3BlY0Z1bmN0
aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZWxp
bWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9n
cmFwaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHZh
bHVlID0gYWJzdHJhY3RWYWx1ZS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBi
ZWNhdXNlIGlmIHdlIHNlZSBhIGNlbGwgaGVyZSwgd2Uga25vdyBpdCdzIGZ1bGx5IGNvbnN0cnVj
dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgY2FuIHJlYWQgaXRzIGlubGlu
ZSB0eXBlIGluZm8gZmxhZ3MuIFRoZXNlIGZsYWdzIGRvbid0IGNoYW5nZSBvdmVyIHRoZQotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gb2JqZWN0J3MgbGlmZXRpbWUuCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKHZhbHVlLmFzQ2VsbCgpLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMp
ID09IGJpdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBhYnN0
cmFjdFZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgb2sgJj0gKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSAmIGJpdHMpID09IGJpdHM7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICBpZiAob2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+cmVtb3ZlKG1fZ3JhcGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjgw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUJlbG93RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6
CiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0
YW5jZToKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAg
ICBjYXNlIFR5cGVPZklzT2JqZWN0OgpAQCAtMTg4LDcgKzE4Nyw2IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6
CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIENoZWNrVmFyYXJnczoKLSAgICBjYXNlIENoZWNr
VHlwZUluZm9GbGFnczoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0
aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVmFsdWVSZXA6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5OTAsNyArMTk5MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBD
cmVhdGVQcm9taXNlOgpAQCAtMjA3NCwyNSArMjA3MywxNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewotICAgICAgICAg
ICAgLy8gRklYTUU6IEludHJvZHVjZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1cmUgdGhhdCBk
b2Vzbid0IGRvIGEgY2VsbCBjaGVjay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU3ODQKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6IHsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpCi0gICAgICAgICAgICAgICAgJiYgbm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKQotICAgICAgICAgICAgICAgICYmIGlz
NjRCaXQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVDZWxs
KCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKLSAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBJbkJ5SWQ6IHsKQEAgLTI4MjgsNyArMjgxOSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5vdGlm
eVdyaXRlOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6Ci0gICAgICAgIGNhc2UgQ2hlY2tUeXBl
SW5mb0ZsYWdzOgogICAgICAgICBjYXNlIFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICAgICAg
Y2FzZSBEaXJlY3RUYWlsQ2FsbElubGluZWRDYWxsZXI6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0
OgpAQCAtMzA4NSw2ICszMDc1LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKGZp
bHRlci52YWx1ZSgpICYgU3BlY05vbkJvdW5kRnVuY3Rpb24pICYmIG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVOb25Cb3VuZEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVk
Z2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBOb25Cb3VuZEZ1bmN0aW9uVXNlKSk7CisgICAgICAg
ICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkp
OworICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE5vbkJvdW5kRnVuY3Rpb25V
c2U+KG5vZGUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKChmaWx0ZXIudmFsdWUoKSAmIFNwZWNJbnRlcm5hbEZ1bmN0aW9uKSAmJiBu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50ZXJuYWxGdW5jdGlvbigpKSB7CisgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgSW50ZXJuYWxGdW5jdGlv
blVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwg
anNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxJ
bnRlcm5hbEZ1bmN0aW9uVXNlPihub2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUNlbGwoKSkgewpAQCAtMzc5NSw2ICszODAzLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgogICAgICAgICBj
YXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBjYXNlIE5vbkJvdW5kRnVuY3Rpb25Vc2U6CisgICAg
ICAgIGNhc2UgSW50ZXJuYWxGdW5jdGlvblVzZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAg
ICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAkocmV2
aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTUgKzEwOSw3IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2MKICAgICBjYXNlIEJ1dHRlcmZseUxvYzoKICAgICAg
ICAgb3V0LnByaW50KCJCdXR0ZXJmbHlMb2MiKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
LSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnc0xvYzoKLSAgICAgICAgb3V0LnByaW50KCJDaGVj
a1R5cGVJbmZvRmxhZ3NMb2MiKTsKLSAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZUxvYzoKLSAgICAgICAgb3V0LnByaW50KCJPdmVycmlkZXNIYXNJbnN0YW5j
ZUxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIGNhc2UgQ2xvc3VyZVZhcmlh
YmxlTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJpYWJsZUxvYyIpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0
aW9uLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDYgQEAgZW51bSBMb2Nh
dGlvbktpbmQgewogICAgIEFycmF5TWFza0xvYywKICAgICBWZWN0b3JMZW5ndGhMb2MsCiAgICAg
QnV0dGVyZmx5TG9jLAotICAgIENoZWNrVHlwZUluZm9GbGFnc0xvYywKLSAgICBPdmVycmlkZXNI
YXNJbnN0YW5jZUxvYywKICAgICBDbG9zdXJlVmFyaWFibGVMb2MsCiAgICAgRGlyZWN0QXJndW1l
bnRzTG9jLAogICAgIEdldHRlckxvYywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzNiwxMCArMTQzNiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBvcCgpID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0KIAotICAgIEpTVHlwZSBx
dWVyaWVkVHlwZSgpCisgICAgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGUoKQogICAgIHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dWludDhfdCwgc3RkOjp1bmRlcmx5aW5nX3R5
cGU8SlNUeXBlPjo6dHlwZT46OnZhbHVlLCAiRW5zdXJlIHRoYXQgdWludDhfdCBpcyB0aGUgdW5k
ZXJseWluZyB0eXBlIGZvciBKU1R5cGUuIik7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U1R5cGU+KG1fb3BJbmZvLmFzPHVpbnQzMl90PigpKTsKKyAgICAgICAgQVNTRVJUKGhhc1F1ZXJp
ZWRUeXBlKCkpOworICAgICAgICByZXR1cm4gSlNUeXBlUmFuZ2U6OmZyb21CaXRzKG1fb3BJbmZv
LmFzPHVpbnQzMl90PigpKTsKICAgICB9CiAKICAgICBib29sIGhhc1NwZWN1bGF0ZWRUeXBlRm9y
UXVlcnkoKQpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25h
bDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkpOworICAgICAgICBy
ZXR1cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlUmFuZ2UocXVlcmllZFR5cGUoKSk7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgaGFzUmVzdWx0KCkKQEAgLTE4NzcsNyArMTg3Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgQ2hlY2tJc0NvbnN0YW50Ogog
ICAgICAgICAgICAgcmV0dXJuIGlzQ2VsbChjaGlsZDEoKS51c2VLaW5kKCkpOwotICAgICAgICBj
YXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0FzeW5jRnVu
Y3Rpb246CkBAIC0xOTUyLDE3ICsxOTUxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8VW5pcXVlZFN0cmluZ0ltcGwqPigpOwogICAgIH0KIAotICAgIGJvb2wgaGFzVHlw
ZUluZm9PcGVyYW5kKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IENoZWNrVHlwZUlu
Zm9GbGFnczsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCB0eXBlSW5mb09wZXJhbmQoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGhhc1R5cGVJbmZvT3BlcmFuZCgpICYmIG1fb3BJbmZvLmFzPHVpbnQz
Ml90PigpIDw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihVQ0hBUl9NQVgpKTsKLSAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOwotICAgIH0KLQogICAgIGJvb2wgaGFzVHJhbnNp
dGlvbigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKQEAgLTI2OTgsNiArMjY4Niwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uU3BlY3VsYXRpb24ocHJlZGlj
dGlvbigpKTsKICAgICB9CiAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vbkJvdW5kRnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm9uQm91bmRGdW5jdGlvblNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnRlcm5h
bEZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0ludGVybmFsRnVuY3Rpb25TcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRl
UHJveHlPYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzUHJveHlPYmplY3RTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEFzc2VydEluQm91bmRzLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRh
a2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBzZXQgKi9c
CiAgICAgbWFjcm8oQ2hlY2tKU0Nhc3QsIE5vZGVNdXN0R2VuZXJhdGUpIC8qIFRoaXMgaXMgdGhl
IHNhbWUgYXMganNDYXN0IGJ1dCBhcyBhIHNwZWN1bGF0aW9uIHJhdGhlciB0aGFuIGFzc2VydGlv
biAqL1wKICAgICBtYWNybyhDaGVja05vdEpTQ2FzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCkBAIC0z
OTUsNyArMzk0LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KFBoYW50b21OZXdSZWdleHAsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBcCiAgICAgLyogTm9kZXMgZm9yIG1pc2Mgb3BlcmF0aW9ucy4gKi9cCi0gICAgbWFjcm8oT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAogICAgIG1hY3JvKEluc3RhbmNlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKEluc3RhbmNlT2ZDdXN0b20sIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKE1hdGNoU3RydWN0dXJlLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcEluZm8uaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3Qg
T3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygp
KSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUo
ZWNtYU1vZGUudmFsdWUoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkgOiBtX3ZhbHVlKHB1dEtpbmQudmFsdWUoKSkgeyB9CisgICAgZXhwbGlj
aXQgT3BJbmZvKEpTVHlwZVJhbmdlIHJhbmdlKSA6IG1fdmFsdWUocmFuZ2UucmF3Qml0cygpKSB7
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBw
dHIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlv
blR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRp
b25Qcm9maWxlKCkpIHsKKyAgICBpZiAoY29uc3RydWN0b3ItPmlzSlNGdW5jdGlvbigpICYmIGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgp
KSB7CiAgICAgICAgIERlZmVyVGVybWluYXRpb24gZGVmZXJTY29wZSh2bSk7CiAgICAgICAgIGF1
dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFy
ZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5KTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMzcsNyArMTAzNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgY2FzZSBTYW1lVmFsdWU6Ci0g
ICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VP
ZjoKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgogICAgICAgICBjYXNlIElzRW1wdHk6
CkBAIC0xMzE0LDcgKzEzMTMsNiBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgotICAgICAgICBjYXNlIENoZWNrVHlw
ZUluZm9GbGFnczoKICAgICAgICAgY2FzZSBBcnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI4
MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBPYmpl
Y3RVc2U6CiAgICAgICAgIGNhc2UgQXJyYXlVc2U6CiAgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6
CisgICAgICAgIGNhc2UgTm9uQm91bmRGdW5jdGlvblVzZToKKyAgICAgICAgY2FzZSBJbnRlcm5h
bEZ1bmN0aW9uVXNlOgogICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICBjYXNl
IFJlZ0V4cE9iamVjdFVzZToKICAgICAgICAgY2FzZSBQcm9taXNlT2JqZWN0VXNlOgpAQCAtMjU0
LDkgKzI1Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAg
ICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKICAgICBjYXNl
IFNhbWVWYWx1ZToKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICBjYXNlIFBhcnNl
SW50OgotICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJc0VtcHR5Ogog
ICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBUeXBlT2ZJc09iamVjdDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0MywxNiAr
MzY0Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKLSAgICAg
ICAgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZTogewotICAgICAgICBjb21waWxlT3Zl
cnJpZGVzSGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNh
c2UgSW5zdGFuY2VPZjogewogICAgICAgICBjb21waWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MzIs
MjEgKzQ0MzIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczogewot
ICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKG5vZGUpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KICAgICBjYXNlIFBhcnNlSW50OiB7CiAgICAgICAgIGNvbXBpbGVQYXJzZUludChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0
YW5jZTogewotICAgICAgICBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2Uobm9kZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2UgSW5zdGFuY2VPZjogewogICAgICAgICBjb21w
aWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjgwNzUx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwODMsMjAgKzQwODMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlU2V0UHJpdmF0ZUJyCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkKLXsKLSAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLQotICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgd29y
a3MgZm9yIGNoZWNraW5nIGlmIGEgc2luZ2xlIGJpdCBpcyBzZXQuIElmIHdlIHdhbnQgdG8gY2hl
Y2sgbW9yZQotICAgIC8vIHRoYW4gb25lIGJpdCBhdCBvbmNlLCB3ZSdsbCBuZWVkIHRvIGZpeCB0
aGlzOgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU3
MDUKLSAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGVJbmZvRmxhZ3MsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7
Ci0KLSAgICBub1Jlc3VsdChub2RlKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBhcnNlSW50KE5vZGUqIG5vZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSk7CkBAIC00MTU0LDEzNiArNDE0MCw3MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGFyc2VJbnQoTm9kCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNl
KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2Rl
KiBub2RlKQogewotICAgIE5vZGUqIGhhc0luc3RhbmNlVmFsdWVOb2RlID0gbm9kZS0+Y2hpbGQy
KCkubm9kZSgpOwotICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0g
anNDYXN0PEpTRnVuY3Rpb24qPihub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RGVmYXVsdDsKLSAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCBoYXNJbnN0YW5jZVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKKyNlbmRpZgogCi0gICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0
dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgIH0KKworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwog
Ci0gICAgLy8gSXQgd291bGQgYmUgZ3JlYXQgaWYgY29uc3RhbnQgZm9sZGluZyBoYW5kbGVkIGF1
dG9tYXRpY2FsbHkgdGhlIGNhc2Ugd2hlcmUgd2Uga25ldyB0aGUgaGFzSW5zdGFuY2UgZnVuY3Rp
b24KLSAgICAvLyB3YXMgYSBjb25zdGFudC4gVW5mb3J0dW5hdGVseSwgdGhlIGZvbGRpbmcgcnVs
ZSBmb3IgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgaXMgaW4gdGhlIHN0cmVuZ3RoIHJlZHVjdGlvbiBw
aGFzZQotICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKLSAgICBpZiAoIWhhc0luc3Rh
bmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0
aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewotICAgICAgICBKU1ZhbHVl
UmVncyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzOworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CisKKyAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5j
ZVZhbHVlUmVncy5ncHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwor
ICAgICAgICBwcm90b3R5cGVSZWdzID0gSlNWYWx1ZVJlZ3MocHJvdG90eXBlLmdwcigpKTsKICNl
bHNlCi0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJ
bnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXls
b2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHNjcmF0Y2gzLmdwcigp
KTsKKyAgICAgICAgcHJvdG90eXBlUmVncyA9IEpTVmFsdWVSZWdzKHNjcmF0Y2gzLmdwcigpLCBw
cm90b3R5cGUuZ3ByKCkpOwogI2VuZGlmCi0gICAgfQotCi0gICAgLy8gQ2hlY2sgdGhhdCBiYXNl
ICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICBtX2ppdC50ZXN0OChNYWNyb0Fz
c2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZXN1bHRHUFIpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREZHX0FT
U0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CiAKLSAgICBpZiAoIW5vdERlZmF1bHQuZW1wdHkoKSkgewotICAgICAgICBub3RE
ZWZhdWx0LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSks
IHJlc3VsdEdQUik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJl
Z3MoKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocHJv
dG90eXBlUmVncykpOwogICAgIH0KIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCi17CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAK
ICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
LCBzY3JhdGNoMkdQUiwKKyAgICAgICAgdmFsdWVHUFIsIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQ
UigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCiAgICAgICAgIG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNPYmplY3QgfCB+U3BlY0NlbGwp
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0g
ICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1Yklu
Zm9HUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVH
UFIsIHByb3RvdHlwZVJlZ3MpOwogICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5jZU9m
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKLX0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSogbm9kZSkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZQotICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDIodGhpcyk7Ci0gICAgICAgIAotICAgICAgICBHUFJSZWcgc3R1YkluZm9H
UFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Ci0gICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKLSAgICAgICAgfQotICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHByb3RvdHlw
ZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAgICAgCi0gICAg
ICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIAotICAgICAgICBibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0g
ICAgCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgCi0gICAg
c3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwotICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBwcm90b3R5
cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIAotICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgCi0gICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKLSAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKLSAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Ci0gICAgfQotICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgcHJv
dG90eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygpOwotICAgIAotICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5j
aElmQ2VsbCh2YWx1ZVJlZ3MpOwotICAgIG1vdmVGYWxzZVRvKHJlc3VsdEdQUik7Ci0gICAgCi0g
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc0Nl
bGwubGluaygmbV9qaXQpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwotICAgIAotICAgIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRH
UFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7Ci0g
ICAgCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICByZXR1cm47CiB9CkBAIC01MTE4LDE4ICs1MDQwLDE4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3UKICAgICAvLyBTeW1ib2wuaGFz
SW5zdGFuY2UgYmVjb21lcyBwb3B1bGFyIHdpbGwgbGlrZWx5IHJlbWFpbiB0aGF0IHdheS4KIAog
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
SlNWYWx1ZU9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpT
VmFsdWVPcGVyYW5kIGhhc0luc3RhbmNlVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Mg
PSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyBjb25zdHJ1Y3RvckdQUiA9IGNvbnN0
cnVjdG9yLmdwcigpOworICAgIEpTVmFsdWVSZWdzIGNvbnN0cnVjdG9yUmVncyA9IGNvbnN0cnVj
dG9yLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VSZWdzID0gaGFz
SW5zdGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0Lmp1
bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwg
dGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQUiwgaGFzSW5zdGFuY2VSZWdz
KSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlz
LCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yUmVncywgaGFzSW5zdGFuY2VSZWdzKSk7
CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC01
MTQ2LDEwICs1MDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2VsbFdpdGhU
eQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbCh2YWx1ZVJlZ3MpOwogCi0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVy
OjpFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXls
b2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgVHJ1
c3RlZEltbTMyKG5vZGUtPnF1ZXJpZWRUeXBlKCkpLAotICAgICAgICAgICAgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQuaXNDZWxsV2l0aFR5cGUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgbm9k
ZS0+cXVlcmllZFR5cGUoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYmxlc3NCb29sZWFuKHJlc3Vs
dEdQUik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAK
QEAgLTUxNjgsMTAgKzUwODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDZWxs
V2l0aFR5CiAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBtX2ppdC5jb21wYXJlOChK
SVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihub2RlLT5xdWVyaWVkVHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0LmlzQ2VsbFdpdGhUeXBlKGNlbGxHUFIsIG5vZGUtPnF1ZXJpZWRUeXBlKCksIHJl
c3VsdEdQUik7CiAgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1bHRHUFIpOwogICAgICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0x
MTMyOSw3ICsxMTI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChF
ZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24oRWRnZSBlZGdlLCBH
UFJSZWcgY2VsbCkKIHsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRnVu
Y3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY0Z1bmN0aW9uLCBtX2ppdC5icmFuY2hJZk5v
dEZ1bmN0aW9uKGNlbGwpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVu
Y3Rpb24oRWRnZSBlZGdlKQpAQCAtMTEzNDEsNiArMTEyNTcsMzQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24oRQogICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UsIG9w
ZXJhbmQuZ3ByKCkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb25Cb3Vu
ZEZ1bmN0aW9uKEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5
cGUoZWRnZSwgY2VsbCwgU3BlY05vbkJvdW5kRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm9uQm91bmRGdW5jdGlvbihFZGdlIGVk
Z2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTm9uQm91bmRGdW5jdGlv
bikpCisgICAgICAgIHJldHVybjsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQo
dGhpcywgZWRnZSk7CisgICAgc3BlY3VsYXRlTm9uQm91bmRGdW5jdGlvbihlZGdlLCBvcGVyYW5k
LmdwcigpKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSW50ZXJuYWxGdW5j
dGlvbihFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQoreworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVk
Z2UsIGNlbGwsIFNwZWNJbnRlcm5hbEZ1bmN0aW9uLCBJbnRlcm5hbEZ1bmN0aW9uVHlwZSk7Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludGVybmFsRnVuY3Rpb24oRWRnZSBl
ZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludGVybmFsRnVuY3Rp
b24pKQorICAgICAgICByZXR1cm47CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIGVkZ2UpOworICAgIHNwZWN1bGF0ZUludGVybmFsRnVuY3Rpb24oZWRnZSwgb3BlcmFu
ZC5ncHIoKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0
KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7CiAgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwg
Y2VsbCwgU3BlY0ZpbmFsT2JqZWN0LCBGaW5hbE9iamVjdFR5cGUpOwpAQCAtMTE5MTIsNiArMTE4
NTYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNh
c2UgRnVuY3Rpb25Vc2U6CiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE5vbkJvdW5kRnVuY3Rpb25Vc2U6CisgICAgICAgIHNwZWN1bGF0
ZU5vbkJvdW5kRnVuY3Rpb24oZWRnZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJu
YWxGdW5jdGlvblVzZToKKyAgICAgICAgc3BlY3VsYXRlSW50ZXJuYWxGdW5jdGlvbihlZGdlKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheVVzZToKICAgICAgICAgc3BlY3VsYXRlQXJy
YXkoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NTMsMTAgKzc1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhv
bGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBnZW5lcmlj
SlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BS
LCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5v
ZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CiAKICAg
ICB2b2lkIGNvbXBpbGVJc0NlbGxXaXRoVHlwZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSXNU
eXBlZEFycmF5VmlldyhOb2RlKik7CkBAIC0xMzYzLDcgKzEzNjEsNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAKLSAgICB2b2lkIGNvbXBpbGVD
aGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9k
ZSopOwogCiAgICAgdm9pZCBjb21waWxlUGFyc2VJbnQoTm9kZSopOwpAQCAtMTY4OSw2ICsxNjg2
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UpOwogICAgIHZvaWQg
c3BlY3VsYXRlRnVuY3Rpb24oRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRl
RnVuY3Rpb24oRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVOb25Cb3VuZEZ1bmN0aW9uKEVkZ2Us
IEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5vbkJvdW5kRnVuY3Rpb24oRWRnZSk7
CisgICAgdm9pZCBzcGVjdWxhdGVJbnRlcm5hbEZ1bmN0aW9uKEVkZ2UsIEdQUlJlZyBjZWxsKTsK
KyAgICB2b2lkIHNwZWN1bGF0ZUludGVybmFsRnVuY3Rpb24oRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVGaW5hbE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVG
aW5hbE9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChFZGdlLCBH
UFJSZWcgY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxMSwyNiArMzExLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSBk
byB0aGlzIGluIGNvbnN0YW50IGZvbGRpbmcgYnV0IHRoaXMgY3VycmVudGx5IHJlbGllcyBvbiBP
U1IgZXhpdCBoaXN0b3J5OgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU0ODMyCi0gICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6IHsK
LSAgICAgICAgICAgIGlmICghbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCktPmlzQ2VsbENvbnN0YW50
KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGlmIChtX25vZGUtPmNo
aWxkMigpLm5vZGUoKS0+YXNDZWxsKCkgIT0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bigpKSB7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUs
IGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgfSBlbHNlIGlmICghbV9ncmFwaC5oYXNFeGl0U2l0ZShtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYywgQmFkVHlwZUluZm9GbGFncykpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBv
cHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCB3ZSB3aWxsIG5vdCBzZWUgYSBmdW5jdGlvbiB0aGF0
IGhhcyBhIGN1c3RvbSBpbnN0YW5jZW9mIG9wZXJhdGlvbiBhcyB0aGV5IHNob3VsZCBiZSByYXJl
LgotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9ub2RlSW5kZXgs
IFNwZWNOb25lLCBDaGVja1R5cGVJbmZvRmxhZ3MsIG1fbm9kZS0+b3JpZ2luLCBPcEluZm8oSW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIEVkZ2UobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCks
IENlbGxVc2UpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1f
bm9kZSwganNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAg
ICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGxvdCBvZiBzdHJpbmcgY29uc3RhbnQtZm9sZGluZyBy
dWxlcyBoZXJlLiBJdCB3b3VsZCBiZSBncmVhdCB0bwogICAgICAgICAvLyBtb3ZlIHRoZXNlIHRv
IHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlciBvbmNlIEFic3RyYWN0VmFsdWUgY2FuIHN1cHBvcnQg
TGF6eUpTVmFsdWUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTUyMDQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTIgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgRnVuY3Rpb25Vc2U6CiAgICAg
ICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTm9u
Qm91bmRGdW5jdGlvblVzZToKKyAgICAgICAgb3V0LnByaW50KCJOb25Cb3VuZEZ1bmN0aW9uIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEludGVybmFsRnVuY3Rpb25Vc2U6CisgICAgICAg
IG91dC5wcmludCgiSW50ZXJuYWxGdW5jdGlvbiIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGaW5hbE9iamVjdFVzZToKICAgICAgICAgb3V0LnByaW50KCJGaW5hbE9iamVjdCIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAko
cmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgZW51bSBVc2VLaW5kIHsKICAgICBP
YmplY3RVc2UsCiAgICAgQXJyYXlVc2UsCiAgICAgRnVuY3Rpb25Vc2UsCisgICAgTm9uQm91bmRG
dW5jdGlvblVzZSwKKyAgICBJbnRlcm5hbEZ1bmN0aW9uVXNlLAogICAgIEZpbmFsT2JqZWN0VXNl
LAogICAgIFByb21pc2VPYmplY3RVc2UsCiAgICAgUmVnRXhwT2JqZWN0VXNlLApAQCAtMTM2LDYg
KzEzOCwxMCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAg
ICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAgY2FzZSBGdW5jdGlvblVzZToKICAgICAgICAgcmV0
dXJuIFNwZWNGdW5jdGlvbjsKKyAgICBjYXNlIE5vbkJvdW5kRnVuY3Rpb25Vc2U6CisgICAgICAg
IHJldHVybiBTcGVjTm9uQm91bmRGdW5jdGlvbjsKKyAgICBjYXNlIEludGVybmFsRnVuY3Rpb25V
c2U6CisgICAgICAgIHJldHVybiBTcGVjSW50ZXJuYWxGdW5jdGlvbjsKICAgICBjYXNlIEZpbmFs
T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY0ZpbmFsT2JqZWN0OwogICAgIGNhc2UgUmVn
RXhwT2JqZWN0VXNlOgpAQCAtMjQ5LDYgKzI1NSw4IEBAIGlubGluZSBib29sIGlzQ2VsbChVc2VL
aW5kIGtpbmQpCiAgICAgY2FzZSBPYmplY3RVc2U6CiAgICAgY2FzZSBBcnJheVVzZToKICAgICBj
YXNlIEZ1bmN0aW9uVXNlOgorICAgIGNhc2UgTm9uQm91bmRGdW5jdGlvblVzZToKKyAgICBjYXNl
IEludGVybmFsRnVuY3Rpb25Vc2U6CiAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKICAgICBjYXNl
IFJlZ0V4cE9iamVjdFVzZToKICAgICBjYXNlIFByb21pc2VPYmplY3RVc2U6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAy
ODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3NSw4ICsyNzUsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBJc0NhbGxhYmxlOgogICAgIGNhc2UgSXNDb25z
dHJ1Y3RvcjoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6Ci0gICAgY2FzZSBDaGVja1R5cGVJ
bmZvRmxhZ3M6Ci0gICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICBjYXNlIEluc3Rh
bmNlT2Y6CiAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgogICAgIGNhc2UgRG91YmxlUmVwOgpA
QCAtNDk3LDYgKzQ5NSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFw
aCkKICAgICAgICAgICAgICAgICBjYXNlIE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IEFycmF5VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgICAg
ICAgICAgY2FzZSBOb25Cb3VuZEZ1bmN0aW9uVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgSW50
ZXJuYWxGdW5jdGlvblVzZToKICAgICAgICAgICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBT
dHJpbmdPck90aGVyVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDEyICsx
NDk3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICBjb21w
aWxlVHlwZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja1R5cGVJ
bmZvRmxhZ3M6Ci0gICAgICAgICAgICBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKLSAgICAg
ICAgICAgIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9m
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyNzEzLDY1ICsxMjcwNywyMyBAQCBwcml2YXRl
OgogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxl
T3ZlcnJpZGVzSGFzSW5zdGFuY2UoKQotICAgIHsKLSAgICAgICAgRnJvemVuVmFsdWUqIGRlZmF1
bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxsT3BlcmFuZCgpOwotICAgICAgICBB
U1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNlbGwoKS0+aW5oZXJpdHM8SlNGdW5j
dGlvbj4odm0oKSkpOwotCi0gICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgZGVmYXVsdEhhc0luc3Rh
bmNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICAvLyBVbmxpa2UgaW4gdGhlIERGRywgd2Ug
ZG9uJ3Qgd29ycnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVwIGZvciB0aGUgY2FzZSB3aGVy
ZSB3ZSBoYXZlIHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBpcyBhIGNvbnN0YW50IGFzIEIz
IHNob3VsZCBmaXggaXQgZm9yIHVzLgotCi0gICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdERlZmF1
bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Ci0g
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJbnN0YW5jZSwgZnJvemVuUG9p
bnRlcihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwg
dW5zdXJlKGRlZmF1bHRIYXNJbnN0YW5jZSkpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oZGVmYXVsdEhhc0luc3RhbmNlLCBjb250aW51YXRpb24pOwot
ICAgICAgICBWYWx1ZUZyb21CbG9jayBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgIG1fb3V0Lmxv
YWQ4WmVyb0V4dDMyKGNvbnN0cnVjdG9yLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwK
LSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSkpKTsKLSAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1f
b3V0LnBoaShJbnQzMiwgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVm
YXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlQ2hlY2tU
eXBlSW5mb0ZsYWdzKCkKLSAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJh
ZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwgbnVsbHB0ciwKLSAgICAgICAgICAgIG1fb3V0LnRl
c3RJc1plcm8zMigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7
Ci0gICAgfQotICAgIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoKQogICAgIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CisKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVl
OworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBMVmFsdWUgcHJvdG90eXBlOwotICAgICAgICBib29sIHZhbHVlSXNDZWxsOwogICAgICAg
ICBib29sIHByb3RvdHlwZUlzQ2VsbDsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IENlbGxVc2UKLSAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgICAgIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxV
c2UpIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlSXNDZWxsID0gdHJ1ZTsKICAgICAgICAg
ICAgIHByb3RvdHlwZUlzQ2VsbCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIHByb3RvdHlwZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHZhbHVlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAgICAgICAgcHJvdG90eXBlSXNDZWxsID0g
YWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0NlbGwpOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMTI4MDEsMTQgKzEyNzUzLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwot
ICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGlzQ2VsbCA9IGppdC5icmFuY2hJZkNlbGwodmFsdWVHUFIpOwot
ICAgICAgICAgICAgICAgICAgICBqaXQuYm94Qm9vbGVhblBheWxvYWQoZmFsc2UsIHJlc3VsdEdQ
Uik7Ci0gICAgICAgICAgICAgICAgICAgIGRvbmVKdW1wID0gaml0Lmp1bXAoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaXNDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlSXNDZWxsKQogICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlR1BS
KSk7CkBAIC0xMjgzMywxNCArMTI3NzcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9H
U3NpSkogb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXph
dGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IHJlc3VsdEdQUiwKQEAgLTEyODUwLDcgKzEyNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVP
cmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwg
cmVzdWx0R1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgdmFsdWVHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3RvdHlwZUdQUikuY2FsbCgpOwpAQCAtMTI4NjQsOSArMTI4MDYsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZm
ZXIsIGxpbmtCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
ZG9uZUp1bXAuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZG9uZUp1bXAubGluaygmaml0
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgLy8gVGhpcyByZXR1cm5zIGEg
Ym94ZWQgYm9vbGVhbi4KQEAgLTEyODc3LDcgKzEyODE2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpOwpA
QCAtMTcyMTAsNyArMTcxNDksNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obm90RnVuY3Rpb25DYXNlLCByZWFsbHlPYmplY3RDYXNlKTsKICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgaXNFeG90aWNGb3JUeXBlb2YodmFsdWUsIHByb3ZlblR5
cGUoY2hpbGQpICYgKFNwZWNPYmplY3QgLSBTcGVjRnVuY3Rpb24pKSwKKyAgICAgICAgICAgIGlz
RXhvdGljRm9yVHlwZW9mKHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSksCiAgICAgICAgICAgICBy
YXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KHJlYWxseU9iamVjdENhc2UpKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHJlYWxseU9iamVjdENhc2UsIHNsb3dQYXRoKTsKQEAgLTE4
NDg1LDYgKzE4NDI0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CiAg
ICAgICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE5vbkJvdW5kRnVuY3Rpb25Vc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVO
b25Cb3VuZEZ1bmN0aW9uKGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SW50ZXJuYWxGdW5jdGlvblVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUludGVybmFsRnVuY3Rp
b24oZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVy
VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihlZGdlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTg5ODgsMjAgKzE4OTMzLDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
TFZhbHVlIGlzRnVuY3Rpb24oTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVj
RnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1
ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNGdW5jdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gcHJv
dmVuOwotICAgICAgICByZXR1cm4gaXNUeXBlKGNlbGwsIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAg
ICAgcmV0dXJuIGlzQ2VsbFdpdGhUeXBlKGNlbGwsIEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5
cGUsIEpTQm91bmRGdW5jdGlvblR5cGUgfSwgU3BlY0Z1bmN0aW9uLCB0eXBlKTsKICAgICB9CiAg
ICAgTFZhbHVlIGlzTm90RnVuY3Rpb24oTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjRnVuY3Rpb24pKQotICAgICAgICAgICAgcmV0
dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIGlzTm90VHlwZShjZWxsLCBKU0Z1bmN0aW9uVHlw
ZSk7CisgICAgICAgIHJldHVybiBtX291dC5sb2dpY2FsTm90KGlzRnVuY3Rpb24oY2VsbCwgdHlw
ZSkpOwogICAgIH0KICAgICAgICAgICAgIAogICAgIExWYWx1ZSBpc0V4b3RpY0ZvclR5cGVvZihM
VmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAg
ICAgICAgaWYgKCEodHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCisgICAgICAgIGlmICghKHR5cGUg
JiAoU3BlY09iamVjdE1heWJlQ2FsbGFibGUgLSBTcGVjRnVuY3Rpb24pKSkKICAgICAgICAgICAg
IHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9u
WmVybzMyKAogICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIoY2VsbCwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9GbGFncyksCkBAIC0xOTA2Miw2ICsxOTAwMywyOCBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24oZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAg
ICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVOb25Cb3VuZEZ1bmN0aW9uKEVkZ2UgZWRnZSwgTFZh
bHVlIGNlbGwpCisgICAgeworICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpz
VmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY05vbkJvdW5kRnVuY3Rpb24sIGlzTm90VHlwZShj
ZWxsLCBKU0Z1bmN0aW9uVHlwZSkpOworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlTm9uQm91
bmRGdW5jdGlvbihFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBzcGVjdWxhdGVOb25Cb3VuZEZ1
bmN0aW9uKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRl
SW50ZXJuYWxGdW5jdGlvbihFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNw
ZWNJbnRlcm5hbEZ1bmN0aW9uLCBpc05vdFR5cGUoY2VsbCwgSW50ZXJuYWxGdW5jdGlvblR5cGUp
KTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUludGVybmFsRnVuY3Rpb24oRWRnZSBlZGdl
KQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRlSW50ZXJuYWxGdW5jdGlvbihlZGdlLCBsb3dDZWxs
KGVkZ2UpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVPYmplY3RPck90aGVyKEVk
Z2UgZWRnZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjgwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMSwxMyArNjIxLDEzIEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW4KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLXN0YXRpYyBi
b29sIGNoZWNrRm9yYmlkZGVuUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCitzdGF0aWMgYm9vbCBjaGVja0ZvcmJpZGRl
blByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdmFsdWUs
IEpTT2JqZWN0KiBwcm90bykKIHsKICAgICBpZiAodmFsdWUgPT0gcHJvdG8pCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHBy
b3RvIGhhc24ndCBiZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgdmFsdWUuCi0gICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCBwcm90bywgdmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvKTsKIH0K
IAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC02OTQsNyArNjk0
LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogICAgICAgICAg
ICAgaWYgKHZhbHVlLmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvdHlwZSkp
CisgICAgICAgICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSAmJiBvYmplY3QtPmlzUHJvdG90eXBl
T2YoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh2YWx1ZSkpKQogICAgICAgICAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGFycmF5LT5sZW5ndGgoKSwgdmFsdWUpOwog
CiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjgw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtOTMyLDggKzkzMiwyMiBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hJ
Zk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxH
UFIsIFN5bWJvbFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0K
ICAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4g
YnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJh
bmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxH
UFIsIEpTRnVuY3Rpb25UeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25U
eXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTVHlwZVJhbmdlIHsgSlNGdW5jdGlvblR5cGUsIEpT
Qm91bmRGdW5jdGlvblR5cGUgfSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU1R5cGVSYW5n
ZSB7IEpTRnVuY3Rpb25UeXBlLCBKU0JvdW5kRnVuY3Rpb25UeXBlIH0pOyB9CisKKyAgICB2b2lk
IGlzQ2VsbFdpdGhUeXBlKEdQUlJlZyBjZWxsR1BSLCBKU1R5cGVSYW5nZSByYW5nZSwgR1BSUmVn
IGRzdCkKKyAgICB7CisgICAgICAgIGlmIChyYW5nZS5sYXN0ID09IHJhbmdlLmZpcnN0KSB7Cisg
ICAgICAgICAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0KSwgZHN0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChyYW5nZS5sYXN0ID4g
cmFuZ2UuZmlyc3QpOworICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHNjcmF0Y2hSZWdpc3Rlcigp
OworICAgICAgICBsb2FkOChBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0
KSwgc2NyYXRjaCk7CisgICAgICAgIGNvbXBhcmUzMihCZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMihyYW5nZS5sYXN0IC0gcmFuZ2UuZmlyc3QpLCBkc3QpOworICAgIH0KICAgICAK
ICAgICB2b2lkIGlzRW1wdHkoR1BSUmVnIGdwciwgR1BSUmVnIGRzdCkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3ICszNjksNiBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9zZXRfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3ByaXZhdGVf
YnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJvdG90eXBlX29mKQotICAgICAgICBE
RUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9w
X2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2lzX2VtcHR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NzQsNyArNTc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2VtcHR5KGNvbnN0IEluc3RydWN0aW9u
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNywzNCArMTE3LDYgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNlbGwoZHN0
LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAg
IFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5j
ZVZhbHVlOwotCi0gICAgZW1pdExvYWRQYXlsb2FkKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QwKTsK
LSAgICAvLyBXZSBkb24ndCBqdW1wIGlmIHdlIGtub3cgd2hhdCBTeW1ib2wuaGFzSW5zdGFuY2Ug
d291bGQgZG8uCi0gICAgSnVtcCBoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbCA9IGVtaXRKdW1wSWZO
b3RKU0NlbGwoaGFzSW5zdGFuY2VWYWx1ZSk7Ci0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZh
bHVlID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
KCkpKTsKLQotICAgIC8vIFdlIGtub3cgdGhhdCBjb25zdHJ1Y3RvciBpcyBhbiBvYmplY3QgZnJv
bSB0aGUgd2F5IGJ5dGVjb2RlIGlzIGVtaXR0ZWQgZm9yIGluc3RhbmNlb2YgZXhwcmVzc2lvbnMu
Ci0gICAgZW1pdExvYWRQYXlsb2FkKGNvbnN0cnVjdG9yLCByZWdUMCk7Ci0KLSAgICAvLyBDaGVj
ayB0aGF0IGNvbnN0cnVjdG9yICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJyBpLmUuIHRo
ZSBvYmplY3QgaXMgbm90IGEgQy1BUEkgdXNlciBub3IgYSBib3VuZCBmdW5jdGlvbi4KLSAgICB0
ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVnVDApOwotICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsKLQotICAgIGhhc0luc3RhbmNlVmFsdWVOb3RDZWxsLmxpbmso
dGhpcyk7Ci0gICAgY3VzdG9taGFzSW5zdGFuY2VWYWx1ZS5saW5rKHRoaXMpOwotICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1p
dFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKLQotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0YW5jZW9mPigpOwpAQCAtMTU3
LDggKzEyOSw2IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHIKICAg
ICBlbWl0TG9hZFBheWxvYWQodmFsdWUsIHJlZ1QyKTsKICAgICBlbWl0TG9hZFBheWxvYWQocHJv
dG8sIHJlZ1QxKTsKIAotICAgIC8vIENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiBiYXNlVmFs
IG11c3QgYmUgYSBjZWxsIC0gdGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBnZXRfYnlfaWQgZm9yIFN5
bWJvbC5oYXNJbnN0YW5jZS4KLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodmFsdWUp
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCkBAIC0xOTQsOSArMTY0LDggQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSQogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3Im
IGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAgICAgCiAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1Qw
KTsKICAgICBlbWl0TG9hZFRhZyhwcm90bywgcmVnVDMpOwotICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBkc3QsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QwLCByZWdUMiks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMSkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDEp
KTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQog
CkBAIC0yMTEsOSArMTgwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3Vz
dG9tKAogICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9o
YXNJbnN0YW5jZVZhbHVlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgZW1pdExvYWRQYXlsb2FkKGNvbnN0cnVjdG9yLCByZWdUMik7Ci0gICAgZW1pdExvYWQoaGFz
SW5zdGFuY2VWYWx1ZSwgcmVnVDQsIHJlZ1QzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkluc3RhbmNlT2ZDdXN0b20sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgcmVnVDIsIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAg
IGVtaXRMb2FkKGNvbnN0cnVjdG9yLCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGhhc0lu
c3RhbmNlVmFsdWUsIHJlZ1Q1LCByZWdUNCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25J
bnN0YW5jZU9mQ3VzdG9tLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJl
Z1Q1LCByZWdUNCkpOwogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9
CiAgICAgCkBAIC0zMDQsMTIgKzI3MywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dp
dGhfdHlwZShjb25zCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOwot
ICAgIGludCB0eXBlID0gYnl0ZWNvZGUubV90eXBlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJl
Z1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDEp
OwogCi0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSksIHJlZ1QwKTsKKyAgICBpc0NlbGxXaXRo
VHlwZShyZWdUMCwgSlNUeXBlUmFuZ2UgeyBieXRlY29kZS5tX2ZpcnN0VHlwZSwgYnl0ZWNvZGUu
bV9sYXN0VHlwZSB9LCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCiAgICAgaXNO
b3RDZWxsLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSwzMiArMTIxLDYgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoY29uc3QgSQogICAgIGVtaXRTdG9yZUNlbGwoZHN0
LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2NvbnN0cnVjdG9yOwotICAg
IFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNvZGUubV9oYXNJbnN0YW5j
ZVZhbHVlOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihoYXNJbnN0YW5jZVZhbHVlLCBy
ZWdUMCk7Ci0KLSAgICAvLyBXZSBkb24ndCBqdW1wIGlmIHdlIGtub3cgd2hhdCBTeW1ib2wuaGFz
SW5zdGFuY2Ugd291bGQgZG8uCi0gICAgSnVtcCBjdXN0b21oYXNJbnN0YW5jZVZhbHVlID0gYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpKTsKLQot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY29uc3RydWN0b3IsIHJlZ1QwKTsKLQotICAgIC8v
IENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGku
ZS4gdGhlIG9iamVjdCBpcyBub3QgYSBDLUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgot
ICAgIHRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7
Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKLSAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7Ci0KLSAgICBjdXN0b21oYXNJbnN0YW5jZVZhbHVlLmxpbmsodGhpcyk7
Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDApOwotCi0g
ICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKLX0K
LQogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5zdGFuY2VvZj4oKTsKQEAgLTE1OSw4ICsxMzMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKGNvbnN0IEluc3RyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHJlZ1QxKTsKICAg
ICAKLSAgICAvLyBDaGVjayB0aGF0IHByb3RvIGFyZSBjZWxscy4gYmFzZVZhbCBtdXN0IGJlIGEg
Y2VsbCAtIHRoaXMgaXMgY2hlY2tlZCBieSB0aGUgZ2V0X2J5X2lkIGZvciBTeW1ib2wuaGFzSW5z
dGFuY2UuCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QyLCB2YWx1ZSk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKQEAgLTMyNiwxMiArMjk4LDExIEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRl
Y29kZS5tX29wZXJhbmQ7Ci0gICAgaW50IHR5cGUgPSBieXRlY29kZS5tX3R5cGU7CiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwg
PSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCi0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSks
IHJlZ1QwKTsKKyAgICBpc0NlbGxXaXRoVHlwZShyZWdUMCwgSlNUeXBlUmFuZ2UgeyBieXRlY29k
ZS5tX2ZpcnN0VHlwZSwgYnl0ZWNvZGUubV9sYXN0VHlwZSB9LCByZWdUMCk7CiAgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyNCwxOCArMjMyNCwxNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0R2V0CiB9CiAjZW5kaWYKIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNP
YmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVf
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZENvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZENvbnN0cnVj
dG9yKTsKICAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEhhc0luc3RhbmNlKTsKIAotICAgIGlmIChjb25zdHJ1Y3Rvci0+aGFzSW5zdGFuY2UoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgaGFzSW5zdGFuY2VWYWx1ZSkpCi0gICAgICAgIHJldHVybiAxOwot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBDb21tb25TbG93UGF0aHM6Omluc3RhbmNlT2ZDdXN0
b20oZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpOwog
fQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQpAQCAtMjg2Nywz
NCArMjg2NiwzMiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpCiAg
ICAgcmV0dXJuIEpTV2l0aFNjb3BlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNj
b3BlLCBvYmplY3QpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5z
dGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0Nl
bGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG8pKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRQcm90byk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAg
ICAgCi0gICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsIHByb3RvKTsKKyAgICBib29sIHJlc3VsdCA9IENvbW1vblNsb3dQYXRo
czo6aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1KU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvdG8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTQ2VsbCogdmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm90bykpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIHByb3Rv
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm90byk7CiAgICAgCi0gICAgYm9vbCByZXN1bHQg
PSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3Rv
KTsKKyAgICBib29sIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6aXNQcm90b3R5cGVPZihnbG9i
YWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJsb2NrLCB2YWx1ZS5zdHJ1Y3R1
cmVPck51bGwodm0pKSkKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWMo
dm0sIGNvZGVCbG9jaywgdmFsdWUtPnN0cnVjdHVyZSh2bSkpKQogICAgICAgICByZXBhdGNoSW5z
dGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWUsIHByb3RvLCAqc3R1YkluZm8s
IHJlc3VsdCk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVz
dWx0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAko
cmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw4ICsyNzEsOSBAQCBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCwg
RUNNQU1vZGUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHVzaFdpdGhT
Y29wZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxs
LCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYywgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUs
IEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkluc3RhbmNlT2ZHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqIHZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm90bykp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpT
Q2VsbCogdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQ29u
c3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzLCBp
bnQzMl90LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMy
X3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgaW50MzJf
dCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IG51
bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lLCBDYWxs
RnJhbWUqLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCwgaW50MzJfdCBsZW5ndGgpKTsKQEAgLTMwMyw3ICszMDQsNiBAQCBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkV4Y2VwCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkV4Y2VwdGlvbkZ1enpXaXRoQ2FsbEZyYW1lLCB2b2lkLCAoVk0qKSk7CiAKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmV0cmlldmVBbmRDbGVhckV4Y2VwdGlvbklm
Q2F0Y2hhYmxlLCBKU0NlbGwqLCAoVk0qKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRIYXNJbnN0YW5jZSkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblZhbHVlQWRkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE5LDIx
ICsxMjE5LDE4IEBAIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamUKIH0K
IAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2
YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdhc0ZvdW5kKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAg
ICAKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZVZhbHVlLmlzQ2VsbCgpKTsgLy8gc2hvdWxkQ29u
c2lkZXJDYWNoaW5nIHJlamVjdHMgbm9uLWNlbGxzLgotICAgIAogICAgIGlmIChmb3JjZUlDRmFp
bHVyZShnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAK
ICAgICB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICAKLSAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZh
bHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUt
PnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAg
ICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBw
cm90b3R5cGVWYWx1ZSk7CkBAIC0xMjc5LDExICsxMjc2LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluc3RhbmMKIH0KIAogdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNW
YWx1ZSB2YWx1ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9vbCB3YXNGb3VuZCkKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHRyeUNhY2hlSW5zdGFu
Y2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUs
IHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICBpZiAodHJ5Q2FjaGVJ
bnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZSwgcHJvdG90eXBlLCBzdHVi
SW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCiAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkocmV2aXNpb24gMjgwNzUx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVC
bAogdm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCAgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwordm9pZCByZXBhdGNoSW5zdGFuY2VPZihK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTQ2VsbCogdmFsdWUsIEpTVmFsdWUgcHJvdG90
eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rTW9ub21v
cnBoaWNDYWxsKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNP
YmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZv
aWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua1Nsb3dGb3Io
Q2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwMywyOSArNjAzLDM2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
cmVnZXgKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwogfQogCisjaWYgQ09NUElMRVIoTVNW
QykKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19jZWxsX3dpdGhfdHlwZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJc0NlbGxX
aXRoVHlwZT4oKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihmYWxzZSkpOworICAgIEpTVHlwZVJhbmdlIHJhbmdlIHsgYnl0
ZWNvZGUubV9maXJzdFR5cGUsIGJ5dGVjb2RlLm1fbGFzdFR5cGUgfTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKHJhbmdlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkpKSk7Cit9
CisjZW5kaWYKKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpCiB7
CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5zdGFu
Y2VvZj4oKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm90b3R5cGUpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNPYmpl
Y3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBwcm90bykpKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6aXNQcm90b3R5cGVPZihn
bG9iYWxPYmplY3QsIHByb3RvLCBhc09iamVjdCh2YWx1ZSkpKSk7CiB9CiAKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluc3RhbmNlb2ZDdXN0b20+KCk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Zh
bHVlKTsKICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fY29uc3RydWN0b3IpOwogICAgIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2hhc0luc3RhbmNlVmFsdWUpOwotCi0gICAg
QVNTRVJUKGNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVChoYXNJbnN0YW5jZVZh
bHVlICE9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24oKSB8fCAhY29uc3RydWN0b3IuZ2V0T2JqZWN0KCktPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZv
KCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKGNvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5oYXNJbnN0YW5jZShnbG9iYWxP
YmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSk7Ci0gICAgTExJTlRfUkVUVVJOKHJlc3Vs
dCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Omluc3RhbmNl
T2ZDdXN0b20oZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFs
dWUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lk
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5IEBAIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FycmF5KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV3X2FycmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19yZWdleHApOworI2lmIENPTVBJTEVSKE1TVkMpCitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2NlbGxfd2l0aF90eXBlKTsKKyNlbmRpZgogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4Niwz
NSArMTI4Niw2IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAg
ICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50T3Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSwg
T3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAg
Z2V0KG1fZHN0LCB0MykKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCi0KLSAgICAjIEZpcnN0IGNoZWNrIGlmIGhhc0luc3RhbmNlVmFsdWUgaXMgdGhlIG9uZSBv
biBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXQotICAgIGdldChtX2hhc0lu
c3RhbmNlVmFsdWUsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQwLCBDZWxsVGFnLCB0MiwgLm9wT3ZlcnJpZGVzaGFzSW5zdGFuY2VWYWx1ZU5vdENlbGwpCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BPdmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90Q2VsbAotCi0gICAgIyBX
ZSBkb24ndCBuZWVkIGhhc0luc3RhbmNlVmFsdWUncyB0YWcgcmVnaXN0ZXIgYW55bW9yZS4KLSAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QxXSwgdDEKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9mdW5jdGlvblByb3Rv
SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0MV0sIHQxCi0gICAgYmluZXEgdDEsIHQyLCAub3BP
dmVycmlkZXNoYXNJbnN0YW5jZVZhbHVlTm90RGVmYXVsdAotCi0gICAgIyBXZSBrbm93IHRoZSBj
b25zdHJ1Y3RvciBpcyBhIGNlbGwuCi0gICAgZ2V0KG1fY29uc3RydWN0b3IsIHQwKQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHNpemUsIHQwLCB0MSkKLSAgICB0
YnogSlNDZWxsOjptX2ZsYWdzW3QxXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgdDAK
LSAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgp
Ci0KLS5vcE92ZXJyaWRlc2hhc0luc3RhbmNlVmFsdWVOb3RDZWxsOgotLm9wT3ZlcnJpZGVzaGFz
SW5zdGFuY2VWYWx1ZU5vdERlZmF1bHQ6Ci0gICAgc3RvcmVpIDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KLSAgICBkaXNwYXRjaCgpCi1lbmQpCi0KIAogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfZW1wdHksIE9wSXNFbXB0eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
ICAgICBnZXQobV9vcGVyYW5kLCB0MSkKQEAgLTEzNjYsMTQgKzEzMzcsMjEgQEAgZW5kKQogCiAK
IGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBl
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQoraWYgWDg2X1dJTgorICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX2NlbGxfd2l0aF90eXBlKQorICAgIGRpc3Bh
dGNoKCkKK2Vsc2UKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQxLCB0MCwgdDMpCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5ub3RDZWxs
Q2FzZQotICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKLSAgICBj
YmVxIEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCi0gICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQx
KQorICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV9maXJzdFR5cGUsIHQwKQorICAg
IGJiYiBKU0NlbGw6Om1fdHlwZVt0M10sIHQwLCAubm90Q2VsbENhc2UKKyAgICBnZXR1KHNpemUs
IE9wSXNDZWxsV2l0aFR5cGUsIG1fbGFzdFR5cGUsIHQyKQorICAgIGJiYSBKU0NlbGw6Om1fdHlw
ZVt0M10sIHQyLCAubm90Q2VsbENhc2UKKyAgICByZXR1cm4oQm9vbGVhblRhZywgMSkKIC5ub3RD
ZWxsQ2FzZToKICAgICByZXR1cm4oQm9vbGVhblRhZywgMCkKK2VuZAogZW5kKQogCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTM0NiwyOSAr
MTM0Niw2IEBAIGxsaW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKIGVuZCkK
IAogCi1sbGludE9wKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIE9wT3ZlcnJpZGVzSGFzSW5z
dGFuY2UsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX2RzdCwgdDMpCi0K
LSAgICBnZXQobV9oYXNJbnN0YW5jZVZhbHVlLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9i
amVjdDo6bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvblt0Ml0sIHQyCi0g
ICAgYnFuZXEgdDAsIHQyLCAub3BPdmVycmlkZXNIYXNJbnN0YW5jZU5vdERlZmF1bHRTeW1ib2wK
LQotICAgIGdldChtX2NvbnN0cnVjdG9yLCB0MSkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKLSAgICB0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICBzdG9yZXEg
dDEsIFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKCkKLQotLm9wT3ZlcnJpZGVzSGFzSW5zdGFu
Y2VOb3REZWZhdWx0U3ltYm9sOgotICAgIHN0b3JlcSBWYWx1ZVRydWUsIFtjZnIsIHQzLCA4XQot
ICAgIGRpc3BhdGNoKCkKLWVuZCkKLQotCiBsbGludE9wV2l0aFJldHVybihvcF9pc19lbXB0eSwg
T3BJc0VtcHR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldCht
X29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQpA
QCAtMTQzOSwxNSArMTQxNiwyMSBAQCBlbHNlCiBlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCi0gICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUs
IHQwKQoraWYgWDg2XzY0X1dJTgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lz
X2NlbGxfd2l0aF90eXBlKQorICAgIGRpc3BhdGNoKCkKK2Vsc2UKICAgICBnZXQobV9vcGVyYW5k
LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MykKICAgICBidHFu
eiB0Mywgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQotICAgIGNiZXEgSlNDZWxsOjptX3R5cGVb
dDNdLCB0MCwgdDEKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDEKLSAgICByZXR1cm4odDEpCisgICAg
Z2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX2ZpcnN0VHlwZSwgdDApCisgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QzXSwgdDAsIC5ub3RDZWxsQ2FzZQorICAgIGdldHUoc2l6ZSwgT3BJc0Nl
bGxXaXRoVHlwZSwgbV9sYXN0VHlwZSwgdDIpCisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QzXSwg
dDIsIC5ub3RDZWxsQ2FzZQorICAgIHJldHVybihWYWx1ZVRydWUpCiAubm90Q2VsbENhc2U6CiAg
ICAgcmV0dXJuKFZhbHVlRmFsc2UpCitlbmQKIGVuZCkKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNiBAQCBjb25zdCBOdW1iZXJP
ZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0JpCiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBj
b25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gY29uc3RleHByIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKLWNvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSBjb25zdGV4cHIgSW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZQogY29uc3QgT3ZlcnJpZGVzR2V0UHJvdG90eXBlT3V0
T2ZMaW5lID0gY29uc3RleHByIE92ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZQogCiAjIEJ5
dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw2IEBA
IHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9w
ZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9w
ZXJ0eU5hbWVzKTsKIAotICAgIHVzaW5nIEN1c3RvbUhhc0luc3RhbmNlRnVuY3Rpb25QdHIgPSBi
b29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Ci0gICAgQ3VzdG9t
SGFzSW5zdGFuY2VGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoY3VzdG9tSGFzSW5zdGFu
Y2UpOwotCiAgICAgdXNpbmcgRGVmaW5lT3duUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCop
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wpOwogICAgIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIgTUVU
SE9EX1RBQkxFX0VOVFJZKGRlZmluZU93blByb3BlcnR5KTsKIApAQCAtMTU1LDcgKzE1Miw2IEBA
IHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05h
bWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCi0gICAgICAgICZDbGFzc05hbWU6OmN1
c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5
LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmlzRXh0ZW5zaWJsZSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTQsNiArMTk0LDMyIEBAIGlubGluZSBKU0FycmF5KiBhbGxvY2F0ZU5ld0FycmF5QnVm
ZmVyKFYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgQUxXQVlTX0lOTElORSBib29s
IGlzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUsIEpTT2JqZWN0KiB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlm
ICghcHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgSW5zdGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YXNPYmplY3QocHJvdG90eXBlKS0+aXNQcm90b3R5cGVPZihnbG9iYWxPYmplY3QsIHZhbHVlKSk7
Cit9CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaW5zdGFuY2VPZkN1c3RvbShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGNvbnN0cnVjdG9y
LCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJpZ2h0IGhhbmQgc2lkZSBvZiBpbnN0YW5jZW9mIGlzIG5v
dCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc09iamVjdChjb25zdHJ1Y3RvciktPmhhc0luc3RhbmNl
KGdsb2JhbE9iamVjdCwgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgQ29tbW9uU2xvd1BhdGhzCiAKIGNsYXNzIENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9u
IDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBJbnRlcm5hbEZ1bmN0
aW9uIDogcHVibGljIEpTTm9uRmluCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlIHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0Q2Fs
bERhdGE7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgJKHJl
dmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEwICs3Nyw3IEBAIEpTVmFsdWUgY29u
c3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm8KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkgewogICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1
ZSk7Ci0gICAgICAgIEFTU0VSVCghY2FsbGVlLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVu
Y3Rpb24+KHZtKSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3Rv
cnMgYWx3YXlzIGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCi0gICAg
ICAgIEFTU0VSVChwcm90b3R5cGUpOwotICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmpl
Y3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3RvdHlw
ZSk7CisgICAgICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBjYWxsZWUtPmRlZmF1bHRIYXNJbnN0YW5j
ZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzSW5zdGFuY2UpIHsKICAgICAgICAg
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yKGluc3RhbmNlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSk7CkBAIC0xMDYsMTAgKzEwMyw3IEBAIEluc3RhbmNlVHlwZSog
dW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnUKICAgICBpZiAoTElLRUxZKGluc3RhbmNlKSkKICAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOwogCi0gICAgQVNTRVJUKCFjb25zdHJ1Y3Rvci0+dGVtcGxh
dGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOwotICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gY29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
KTsgLy8gUGFzc2VkIGNvbnN0cnVjdG9ycyBhbHdheXMgaGF2ZSBgcHJvdG90eXBlYCB3aGljaCBj
YW5ub3QgYmUgZGVsZXRlZC4KLSAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBib29sIGhhc0lu
c3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIHByb3RvdHlwZSk7CisgICAgYm9vbCBoYXNJbnN0YW5jZSA9IGNvbnN0cnVjdG9yLT5k
ZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBpZiAoIWhhc0luc3RhbmNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDExICsxNDQsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5j
dGlvbkNvCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0KGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEsIGFyZ3Ms
IG5ld1RhcmdldCkpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlzQm91bmRGdW5j
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoc3RhdGljX2Nhc3Q8Ym9v
bD4oanNEeW5hbWljQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPnZtKCksIGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSkpOwotfQotCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRPYmplY3QgPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CkBAIC0yMTAsMTEgKzIwNSw2IEBAIEpTQm91bmRGdW5jdGlvbiogSlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLWJvb2wgSlNC
b3VuZEZ1bmN0aW9uOjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiBqc0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4ob2JqZWN0KS0+bV90YXJnZXRGdW5jdGlvbi0+aGFzSW5zdGFu
Y2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci19Ci0KIEpTQm91bmRGdW5jdGlvbjo6SlNCb3VuZEZ1
bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXRG
dW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFy
Z3MsIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsLCBkb3VibGUgbGVuZ3RoKQogICAgIDogQmFzZSh2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3RhcmdldEZ1
bmN0aW9uKHZtLCB0aGlzLCB0YXJnZXRGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCShyZXZpc2lvbiAyODA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDEyIEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91
bmRUaGlzTm9BcmcKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwp
OwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0
cnVjdCk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3Qp
OwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpc0JvdW5kRnVuY3Rpb24pOwogSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pOwogCiBjbGFzcyBKU0Jv
dW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzICYgfkltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2U7Ci0gICAgc3RhdGljX2Fzc2VydChTdHJ1Y3R1cmVGbGFncyAmIEltcGxlbWVudHNI
YXNJbnN0YW5jZSwgIiIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQpAQCAtNDksOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
c3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogYm91bmRBcmdzLCBkb3VibGUgbGVuZ3RoLCBKU1N0cmluZyogbmFtZU1heUJlTnVsbCk7
Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKCkg
eyByZXR1cm4gbV90YXJnZXRGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTVmFsdWUgYm91bmRUaGlz
KCkgeyByZXR1cm4gbV9ib3VuZFRoaXMuZ2V0KCk7IH0KQEAgLTcxLDcgKzY3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0JvdW5kRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mVGFyZ2V0RnVuY3Rpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNCb3VuZEZ1bmN0aW9uLCBtX3RhcmdldEZ1bmN0aW9uKTsgfQpAQCAtOTMsOSArODksNCBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSBtX2xlbmd0aDsKIH07CiAKLUpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oYm91bmRGdW5jdGlvbkNhbGwpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihib3Vu
ZEZ1bmN0aW9uQ29uc3RydWN0KTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25DYWxsKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjgwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0CiAKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCShyZXZpc2lvbiAyODA3
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNiArNjAsMTAgQEAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20pCiAv
LyBUaGUgZmlyc3QgYW5kIGxhc3QgSlNUeXBlIGFyZSBpbmNsdXNpdmUKIHN0cnVjdCBKU1R5cGVS
YW5nZSB7CiAgICAgYm9vbCBjb250YWlucyhKU1R5cGUgdHlwZSkgY29uc3QgeyByZXR1cm4gZmly
c3QgPD0gdHlwZSAmJiB0eXBlIDw9IGxhc3Q7IH0KKyAgICB1aW50MTZfdCByYXdCaXRzKCkgY29u
c3QgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZpcnN0KSA8PCA4KSB8IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGxhc3QpOyB9CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0IHsgb3V0LnByaW50KCJKU1R5cGVSYW5nZSB7ICIsIGZpcnN0LCAiLCAiLCBsYXN0LCAiIH0i
KTsgfQorCisgICAgc3RhdGljIEpTVHlwZVJhbmdlIGZyb21CaXRzKHVpbnQxNl90IGJpdHMpIHsg
cmV0dXJuIEpTVHlwZVJhbmdlIHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihiaXRzID4+IDgpLCBzdGF0
aWNfY2FzdDxKU1R5cGU+KGJpdHMgJiAweGZmKSB9OyB9CiAKICAgICBKU1R5cGUgZmlyc3Q7CiAg
ICAgSlNUeXBlIGxhc3Q7CkBAIC03MSw3ICs3NSw3IEBAIHN0cnVjdCBKU1R5cGVSYW5nZSB7CiAg
ICAgbWFjcm8oSlNTdHJpbmdJdGVyYXRvciwgSlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSwg
SlNUeXBlOjpKU1N0cmluZ0l0ZXJhdG9yVHlwZSkgXAogICAgIG1hY3JvKEpTT2JqZWN0LCBGaXJz
dE9iamVjdFR5cGUsIExhc3RPYmplY3RUeXBlKSBcCiAgICAgbWFjcm8oSlNGaW5hbE9iamVjdCwg
SlNUeXBlOjpGaW5hbE9iamVjdFR5cGUsIEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSBcCi0gICAg
bWFjcm8oSlNGdW5jdGlvbiwgSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSwgSlNUeXBlOjpKU0Z1bmN0
aW9uVHlwZSkgXAorICAgIG1hY3JvKEpTRnVuY3Rpb24sIEpTVHlwZTo6SlNGdW5jdGlvblR5cGUs
IEpTVHlwZTo6SlNCb3VuZEZ1bmN0aW9uVHlwZSkgXAogICAgIG1hY3JvKEludGVybmFsRnVuY3Rp
b24sIEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0
aW9uVHlwZSkgXAogICAgIG1hY3JvKE51bGxTZXR0ZXJGdW5jdGlvbiwgSlNUeXBlOjpOdWxsU2V0
dGVyRnVuY3Rpb25UeXBlLCBKU1R5cGU6Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIFwKICAgICBt
YWNybyhKU0FycmF5LCBKU1R5cGU6OkFycmF5VHlwZSwgSlNUeXBlOjpEZXJpdmVkQXJyYXlUeXBl
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlz
aW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNSwxMiArMjE1LDYgQEAgY29uc3QgY2hhciogSlNDZWxsOjpj
bGFzc05hbWUoVk0mIHZtKSBjbwogICAgIHJldHVybiBjbGFzc0luZm8odm0pLT5jbGFzc05hbWU7
CiB9CiAKLWJvb2wgSlNDZWxsOjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyODA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm94eSgpIGNvbnN0OworICAgIGJvb2wgaXNKU0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0NhbGxhYmxlKFZNJik7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJik7CiAgICAgdGVt
cGxhdGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0m
KTsKQEAgLTI1Myw3ICsyNTQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUsIGJvb2wpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEpTVmFs
dWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0NywxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0g
UHVyZUZvcndhcmRpbmdQcm94eVR5cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0VHlwZTsKIH0K
IAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0pTRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtX3R5cGUgPT0gSlNGdW5jdGlvblR5cGUgfHwgbV90eXBlID09IEpTQm91bmRGdW5jdGlvblR5
cGU7Cit9CisKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgZ2V0Q2FsbERhdGEgY29uY3VycmVu
Y3ktc2FmZSBvbmNlIE5QQVBJIHN1cHBvcnQgaXMgcmVtb3ZlZC4KIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MDEKIHRlbXBsYXRlPENvbmN1cnJlbmN5IGNv
bmN1cnJlbmN5PgpAQCAtMjU0LDcgKzI1OSw3IEBAIEFMV0FZU19JTkxJTkUgVHJpU3RhdGUgSlND
ZWxsOjppc0NhbGxhYmwKIHsKICAgICBpZiAoIWlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6RmFsc2U7Ci0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBp
ZiAoaXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBp
ZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgewogICAgICAgICBp
ZiBjb25zdGV4cHIgKGNvbmN1cnJlbmN5ID09IENvbmN1cnJlbmN5OjpNYWluVGhyZWFkKQpAQCAt
Mjc3LDcgKzI4Miw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXQK
ICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcyku
dHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRl
OjpGYWxzZTsKICAgICAvLyBXZSBrbm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3REYXRhIG9mIGJv
dGggdHlwZXMgYXJlIGNvbmN1cnJlbmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNsYXNzZXMgb2Yg
SlNGdW5jdGlvbiBhbmQgSW50ZXJuYWxGdW5jdGlvbgogICAgIC8vIG5ldmVyIG92ZXJyaWRlIGdl
dENvbnN0cnVjdERhdGEgKHRoaXMgaXMgZW5zdXJlZCBieSBBU1NFUlQgaW4gSlNGdW5jdGlvbiBh
bmQgSW50ZXJuYWxGdW5jdGlvbikuCi0gICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSB8
fCB0eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUpCisgICAgaWYgKGlzSlNGdW5jdGlvbigp
IHx8IHR5cGUoKSA9PSBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIChtZXRo
b2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4g
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDcgKzk5LDYgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZQogICAg
IDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGVP
clJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQogewotICAgIGFz
c2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9i
YWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QpOwogfQogCkBAIC0xMDgsNyArMTA3LDcgQEAgdm9p
ZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwg
dGhpcykpOwotICAgIEFTU0VSVCh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpOworICAgIEFTU0VS
VChpc0pTRnVuY3Rpb24oKSk7CiAgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERhdGEsZ2V0Q29uc3Ry
dWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4KICAgICBBU1NFUlQo
bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25z
dHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAm
SlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwpAQCAtNjkzLDE2ICs2OTIsNCBAQCBKU0Z1bmN0aW9u
OjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyCiAgICAgcmV0dXJuIFByb3BlcnR5U3RhdHVz
OjpSZWlmaWVkOwogfQogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLXZvaWQgSlNGdW5jdGlvbjo6YXNz
ZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpCi17Ci0gICAgLy8gSWYgeW91IGNoYW5nZSB0aGlz
LCB5b3UnbGwgbmVlZCB0byB1cGRhdGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFu
Y2UuCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJbmZvKHZtKCkpOwotICAgIGlm
ICghKGlubGluZVR5cGVGbGFncygpICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8gPT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mbyAhPSBKU0JvdW5kRnVuY3Rpb246
OmluZm8oKSk7Ci19Ci0jZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShy
ZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxMiArMjEyLDYgQEAgcHJpdmF0ZToKICAgICBQ
cm9wZXJ0eVN0YXR1cyByZWlmeUxhenlOYW1lSWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5Qm91bmROYW1lSWZO
ZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOwotI2Vsc2UK
LSAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKSB7IH0KLSNlbmRpZgotCiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHVpbnRwdHJfdCBt
X2V4ZWN1dGFibGVPclJhcmVEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw2IEBAIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2
bSwgRnUKICAgICA6IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFi
bGVPclJhcmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQogewotICAg
IGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMoKTsKIH0KIAogaW5saW5lIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDYgKzc4MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9KTsKIAogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0
aW9uKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpmdW5jdGlvblByb3RvdHlwZUhhc0luc3RhbmNlU3ltYm9sKV0uc2V0KHZt
LCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKIAogICAgIG1fbnVsbEdldHRlckZ1
bmN0aW9uLnNldCh2bSwgdGhpcywgTnVsbEdldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIE51bGxH
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSkpOwogICAgIFN0cnVjdHVyZSogbnVsbFNldHRlckZ1bmN0aW9uU3RydWN0dXJl
ID0gTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpOwpAQCAtOTI0LDEzICs5MjUsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgfSk7CiAgICAgbV9wcm94eU9iamVjdFN0cnVjdHVy
ZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBp
bml0KSB7Ci0gICAgICAgICAgICBib29sIGlzQ2FsbGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAg
IGluaXQuc2V0KFByb3h5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25l
ciwganNOdWxsKCksIGlzQ2FsbGFibGUpKTsKLSAgICAgICAgfSk7Ci0gICAgbV9jYWxsYWJsZVBy
b3h5T2JqZWN0U3RydWN0dXJlLmluaXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPFN0cnVjdHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAgIGJvb2wgaXNDYWxsYWJsZSA9IHRy
dWU7Ci0gICAgICAgICAgICBpbml0LnNldChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQub3duZXIsIGpzTnVsbCgpLCBpc0NhbGxhYmxlKSk7CisgICAgICAgICAgICBp
bml0LnNldChQcm94eU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIs
IGpzTnVsbCgpKSk7CiAgICAgICAgIH0pOwogICAgIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuaW5p
dExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkg
ewpAQCAtMTM0OCwxNSArMTM0Myw5IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dl
ck5hbWUgIyMKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZSkpOwogICAgICAgICB9KTsKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKLSAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGlzQm91bmRGdW5jdGlvbikpOwotICAgICAgICB9KTsK
ICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikpOwogICAgICAgICB9KTsKLSAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjppbnN0YW5jZU9mKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmpl
Y3RQcml2YXRlRnVuY0luc3RhbmNlT2YpKTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxv
ZyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5M
b2cpKTsKICAgICAgICAgfSk7CkBAIC0yMTc3LDcgKzIxNjYsNiBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKCiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94
eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX2NhbGxh
YmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9wcm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9u
IDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNCw3ICs0MjQsNiBAQCBwdWJsaWM6CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5UmV2b2tl
U3RydWN0dXJlOwogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3Ry
dWN0dXJlOwogCkBAIC04NDMsNyArODQyLDYgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogbW9k
dWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3h5T2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm94eU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBTdHJ1Y3R1
cmUqIGNhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxh
YmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm94
eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9CiAgICAgU3RydWN0dXJlKiBvcmlnaW5hbFJlc3RQYXJh
bWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVh
cEFuYWx5emVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09i
amVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgpAQCAtNjQs
NiArNjgsNyBAQCBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0CiBjb25z
dCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0
eUVycm9yIHsgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07CiBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25m
aWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
X3MgfTsKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlV3Jp
dGFiaWxpdHlFcnJvciB7ICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zIH07Citjb25zdCBBU0NJSUxpdGVyYWwgSW5z
dGFuY2VvZlByb3RvdHlwZU5vdE9iamVjdEVycm9yIHsgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFu
IG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyB9OwogCiBjb25z
dCBDbGFzc0luZm8gSlNPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNPYmplY3QpIH07CiAKQEAgLTIzNzYs
MTIgKzIzODEsMzcgQEAgc3RkOjpvcHRpb25hbDxTdHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudAog
ICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlO
YW1lKTsKIH0KIAorLy8gRklYTUU6IEl0IG1ha2VzIHRoZSBtb3N0IHNlbnNlIGZvciB0aGVzZSBv
YmplY3RzIHRvIGhhdmUgW1tDYWxsXV0gdGhhdCB0aHJvd3MgdW5jb25kaXRpb25hbGx5LCBtaW1p
Y2tpbmcgSlMgYnVpbHQtaW5zLgorLy8gR3VhcmQgaXQgYnkgTlNWZXJzaW9uT2ZMaW5rVGltZUxp
YnJhcnkgY2hlY2sgdG8gYXZvaWQgYnJlYWtpbmcgaU9TIGFwcHMgdGhhdCBkZXBlbmQgb24gdGhl
aXIgYHR5cGVvZmAgYmVpbmcgIm9iamVjdCIuCitib29sIEpTT2JqZWN0Ojppc05vbkNhbGxhYmxl
QVBJT2JqZWN0VGhhdFBlcmZvcm1zRGVmYXVsdEhhc0luc3RhbmNlKFZNJiB2bSkKK3sKKyNpZiBK
U0NfT0JKQ19BUElfRU5BQkxFRAorICAgIGlmIChpbmhlcml0czxKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlck9iamVjdD4+KHZtKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAg
ICByZXR1cm4gaW5oZXJpdHM8SlNDYWxsYmFja0NvbnN0cnVjdG9yPih2bSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaW5zdGFuY2VvZm9wZXJhdG9yCiBib29sIEpTT2Jq
ZWN0OjpoYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGhhc0luc3Rh
bmNlVmFsdWUgIT0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbigpKSB7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkp
KSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFoYXNJbnN0YW5jZVZh
bHVlKSB7CisgICAgICAgIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBpZiAoaGFzSW5zdGFuY2VWYWx1ZSA9PSBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkpCisg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRlZmF1bHRIYXNJbnN0YW5jZShn
bG9iYWxPYmplY3QsIHZhbHVlKSk7CisKICAgICAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0
Q2FsbERhdGEodm0sIGhhc0luc3RhbmNlVmFsdWUpOwogICAgICAgICBpZiAoY2FsbERhdGEudHlw
ZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJv
ckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIHRoaXMpKTsKQEAgLTIz
OTYsNjggKzI0MjYsNTYgQEAgYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmpl
YwogICAgICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgIH0K
IAotICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwotICAgIGlm
IChpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSkgewotICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IGdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgcHJvdG90eXBlKSk7Ci0gICAgfQotICAgIGlmIChpbmZvLmltcGxlbWVudHNIYXNJ
bnN0YW5jZSgpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3Rh
bmNlKHRoaXMsIGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKLSAgICB9CisgICAgaWYgKExJS0VMWShp
c0NhbGxhYmxlRm9ySGFzSW5zdGFuY2Uodm0pKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBkZWZhdWx0SGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogCiAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNl
b2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgdGhpcykpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtb3JkaW5hcnloYXNpbnN0YW5jZQorYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0lu
c3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBnZXQoZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXNJbnN0YW5jZVN5bWJvbCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBoYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVl
KSk7Ci19CisgICAgaWYgKCFpc0NhbGxhYmxlRm9ySGFzSW5zdGFuY2Uodm0pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvKQotewot
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKHR5cGUoKSA9PSBKU0JvdW5kRnVuY3Rpb25UeXBl
KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxKU0JvdW5kRnVuY3Rp
b24qPih0aGlzKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2UoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSkpOwogCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBKU1ZhbHVlIHByb3RvID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CisKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRo
IGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmplY3RFcnJv
cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QodmFsdWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNPYmpl
Y3QocHJvdG8pLT5pc1Byb3RvdHlwZU9mKGdsb2JhbE9iamVjdCwgYXNPYmplY3QodmFsdWUpKSk7
Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmlzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IG9iamVjdC0+Z2V0
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghb2JqZWN0VmFsdWUuaXNPYmplY3QoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3Qob2JqZWN0
VmFsdWUpOwotICAgICAgICBpZiAocHJvdG8gPT0gb2JqZWN0KQorICAgICAgICBpZiAob2JqZWN0
ID09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcml2YXRl
RnVuY0luc3RhbmNlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihKU09iamVj
dDo6ZGVmYXVsdEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHByb3RvKSkpOwotfQot
CiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBEb250RW51bVByb3BlcnRp
ZXNNb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyODA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFNpZ25hdHVyZTsKIAogaW5saW5lIEpTQ2VsbCog
Z2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAm
JiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCisgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpICYmIHZhbHVlLmFzQ2VsbCgpLT5pc0pTRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtODIsNiAr
ODIsNyBAQCBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlCiBleHRlcm4g
SlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVy
dHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcjsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxp
dHlFcnJvcjsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRhYmlsaXR5RXJyb3I7CitleHRlcm4gSlNfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIEluc3RhbmNlb2ZQcm90b3R5cGVOb3RPYmpl
Y3RFcnJvcjsKIAogY2xhc3MgSlNGaW5hbE9iamVjdDsKIApAQCAtNjc0LDkgKzY3NSwxMCBAQCBw
dWJsaWM6CiAKICAgICBKU1ZhbHVlIG9yZGluYXJ5VG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3Qq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVl
IGhhc0luc3RhbmNlVmFsdWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0SGFz
SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3Bl
cnR5KTsKKyAgICBib29sIGlzQ2FsbGFibGVGb3JIYXNJbnN0YW5jZShWTSYgdm0pIHsgcmV0dXJu
IGlzQ2FsbGFibGUodm0pIHx8IGlzTm9uQ2FsbGFibGVBUElPYmplY3RUaGF0UGVyZm9ybXNEZWZh
dWx0SGFzSW5zdGFuY2Uodm0pOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9
IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWZhdWx0SGFzSW5zdGFu
Y2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGlzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtUHJvdG90eXBlQ2hhaW5EZXB0aCA9IDQwMDAwOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CkBAIC0xMTEy
LDYgKzExMTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpOwogICAgIHZvaWQgaXNPYmplY3QoKTsKICAgICB2b2lkIGlzU3RyaW5n
KCk7CisKKyAgICBib29sIGlzTm9uQ2FsbGFibGVBUElPYmplY3RUaGF0UGVyZm9ybXNEZWZhdWx0
SGFzSW5zdGFuY2UoVk0mKTsKICAgICAgICAgCiAgICAgQnV0dGVyZmx5KiBjcmVhdGVJbml0aWFs
SW5kZXhlZFN0b3JhZ2UoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICAKQEAgLTEyNDYs
OCArMTI1MCw2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOwotCiBp
bmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlV2l0aEJ1dHRlcmZseShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKICAg
ICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjgwNzUx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1MSw3ICs1NTEsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
T3duRGF0YVByb3BlcnR5CiAKIEFMV0FZU19JTkxJTkUgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoVk0m
IHZtLCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9u
VHlwZSkKKyAgICBpZiAoY2VsbC0+aXNKU0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU0Z1
bmN0aW9uOjpnZXRDYWxsRGF0YShjZWxsKTsKICAgICBDYWxsRGF0YSByZXN1bHQgPSBjZWxsLT5t
ZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwpOwogICAgIEFTU0VSVChyZXN1bHQudHlw
ZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSB8fCBjZWxsLT5pc1ZhbGlkQ2FsbGVlKCkpOwpAQCAt
NTcwLDcgKzU3MCw3IEBAIGlubGluZSBDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKFZNJiB2bSwK
ICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIEpTQ2Vs
bCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwotICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCisgICAgaWYgKGNlbGwtPmlzSlNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsKICAgICBDYWxsRGF0YSByZXN1bHQg
PSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2VsbCk7CiAgICAgQVNT
RVJUKHJlc3VsdC50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lIHx8IGNlbGwtPmlzVmFsaWRD
YWxsZWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJ
KHJldmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQwogICAgIENBU0UoRmluYWxPYmplY3RUeXBlKQogICAgIENB
U0UoSlNDYWxsZWVUeXBlKQogICAgIENBU0UoSlNGdW5jdGlvblR5cGUpCisgICAgQ0FTRShKU0Jv
dW5kRnVuY3Rpb25UeXBlKQogICAgIENBU0UoSW50ZXJuYWxGdW5jdGlvblR5cGUpCiAgICAgQ0FT
RShOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKQogICAgIENBU0UoQm9vbGVhbk9iamVjdFR5cGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjgwNzUx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDkgKzU5LDEwIEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgT2JqZWN0
VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCiAgICAgSlNDYWxsZWVUeXBlLAotICAgIEpTRnVu
Y3Rpb25UeXBlLAogICAgIEludGVybmFsRnVuY3Rpb25UeXBlLAogICAgIE51bGxTZXR0ZXJGdW5j
dGlvblR5cGUsCisgICAgSlNGdW5jdGlvblR5cGUsCisgICAgSlNCb3VuZEZ1bmN0aW9uVHlwZSwK
ICAgICBCb29sZWFuT2JqZWN0VHlwZSwKICAgICBOdW1iZXJPYmplY3RUeXBlLAogICAgIEVycm9y
SW5zdGFuY2VUeXBlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIC8vIElubGluZSBmbGFncy4KIAogc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgot
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0g
MSA8PCAxOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRDYWxsRGF0YSA9
IDEgPDwgMjsgLy8gTmVlZCB0aGlzIGZsYWcgaWYgeW91IGltcGxlbWVudCBbW0NhbGxhYmxlXV0g
aW50ZXJmYWNlLCB3aGljaCBtZWFucyBvdmVycmlkaW5nIGdldENhbGxEYXRhLiBUaGUgb2JqZWN0
IG1heSBub3QgYmUgY2FsbGFibGUgc2luY2UgZ2V0Q2FsbERhdGEgY2FuIHNheSBpdCBpcyBub3Qg
Y2FsbGFibGUuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCA9IDEgPDwgMzsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzVG9U
aGlzID0gMSA8PCA0OyAvLyBJZiB0aGlzIGlzIGZhbHNlIHRoZW4gdGhpcyByZXR1cm5zIHNvbWV0
aGluZyBvdGhlciB0aGFuICd0aGlzJy4gTm9uLW9iamVjdCBjZWxscyB0aGF0IGFyZSB2aXNpYmxl
IHRvIEpTIGhhdmUgdGhpcyBzZXQgYXMgZG8gc29tZSBleG90aWMgb2JqZWN0cy4KQEAgLTQ3LDcg
KzQ2LDYgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBUeXBlSW5mb1BlckNlbAogCiAvLyBP
dXQgb2YgbGluZSBmbGFncy4KIAotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgPSAxIDw8IDg7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRl
c0dldE93blByb3BlcnR5TmFtZXMgPSAxIDw8IDk7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzID0gMSA8PCAxMDsKIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCAxMTsKQEAg
LTkwLDggKzg4LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZmxhZ3MoKSBjb25zdCB7IHJl
dHVybiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZmxhZ3MyKSA8PCBudW1iZXJPZklubGluZUJp
dHMpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZmxhZ3MpOyB9CiAgICAgYm9vbCBtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkPigpOyB9Ci0gICAgYm9vbCBpbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSBjb25z
dCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEltcGxlbWVudHNIYXNJbnN0YW5jZT4oKTsgfQotICAg
IGJvb2wgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczE8SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZT4oKTsgfQogICAgIGJvb2wgb3Zl
cnJpZGVzR2V0Q2FsbERhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE92ZXJyaWRl
c0dldENhbGxEYXRhPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qo
KSBjb25zdCB7IHJldHVybiBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoaW5saW5lVHlwZUZs
YWdzKCkpOyB9CiAgICAgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMTxIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlPigpOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDI4MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogY2xhc3MgTnVtYmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCiAgICAgc3RhdGljIE51
bWJlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVt
YmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG9iamVjdFBy
b3RvRnVuY0hhc093blByb3BlcnR5KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOwpAQCAt
NjMsNyArNjIsNyBAQCB2b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+dmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOwogICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Q
cm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBIYXNPd25Qcm9wZXJ0eUludHJp
bnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+cHJvcGVydHlJc0VudW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5
SXNFbnVtZXJhYmxlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+aXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5
cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5pc1Byb3RvdHlwZU9mLCBvYmplY3RQcm90b3R5cGVJc1Byb3RvdHlwZU9mQ29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPl9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRl
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIp
OwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPl9fZGVmaW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pl9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwpAQCAtMTI3LDMz
ICsxMjYsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0UHJvdG90eXBlSGFzT3duUHJv
cGVydHkoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLQotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKLSAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmop
KQotICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLQotICAgIEpTVmFsdWUgdiA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoIXYuaXNPYmplY3QoKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAg
IGlmICh2ID09IHRoaXNPYmopCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB9Ci19Ci0KIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmpl
Y3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNw
cAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMiArNDgsNiBAQCBQcm94eU9iamVj
dDo6UHJveHlPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1CiB7CiB9CiAKLVN0cnVjdHVyZSogUHJveHlP
YmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHRhcmdldCkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
cmV0dXJuIHRhcmdldC5pc0NhbGxhYmxlKHZtKSA/IGdsb2JhbE9iamVjdC0+Y2FsbGFibGVQcm94
eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm94eU9iamVjdFN0cnVjdHVyZSgp
OwotfQotCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0LCBKU1ZhbHVlIGhhbmRsZXIpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzEsMTEgKzY1
LDYgQEAgdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLAogICAgIEpTT2Jq
ZWN0KiB0YXJnZXRBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCk7CiAKICAgICBt
X2lzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDYWxsYWJsZSh2bSk7Ci0gICAgaWYgKG1f
aXNDYWxsYWJsZSkgewotICAgICAgICBUeXBlSW5mbyBpbmZvID0gc3RydWN0dXJlKHZtKS0+dHlw
ZUluZm8oKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSAmJiBpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAgfQotCiAg
ICAgbV9pc0NvbnN0cnVjdGlibGUgPSB0YXJnZXRBc09iamVjdC0+aXNDb25zdHJ1Y3Rvcih2bSk7
CiAKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIHRhcmdldEFzT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkocmV2aXNpb24gMjgw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJveHlP
YmplY3QqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhcmdl
dCwgSlNWYWx1ZSBoYW5kbGVyKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBQcm94eU9iamVjdDo6c3Ry
dWN0dXJlRm9yVGFyZ2V0KGdsb2JhbE9iamVjdCwgdGFyZ2V0KTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3RydWN0dXJlKCk7CiAgICAg
ICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5
T2JqZWN0Pih2bS5oZWFwKSkgUHJveHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIHBy
b3h5LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhhbmRsZXIpOwog
ICAgICAgICByZXR1cm4gcHJveHk7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUsIGJvb2wgaXNDYWxsYWJsZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gU3RydWN0dXJlRmxh
Z3M7Ci0gICAgICAgIGlmIChpc0NhbGxhYmxlKQotICAgICAgICAgICAgZmxhZ3MgfD0gKEltcGxl
bWVudHNIYXNJbnN0YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpOwotICAgICAg
ICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oUHJveHlPYmplY3RUeXBlLCBmbGFncyksIGluZm8oKSwgTm9u
QXJyYXkgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIFN0cnVjdHVyZSogcmVz
dWx0ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhQcm94eU9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSB8
IE1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3Vs
dC0+Y2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZt
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03Nyw3ICs3NCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJveHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUq
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHRhcmdldCk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUz
NSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWQKICAgICAgICAg
ICAgICAgICBtX2xpdmVDZWxsUG9pbnRlcnMuYWRkKGNhbGxlZSk7CiAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICBpZiAoY2FsbGVlQ2VsbC0+dHlwZSgpICE9IEpTRnVuY3Rpb25UeXBlKSB7
CisgICAgICAgICAgICBpZiAoIWNhbGxlZUNlbGwtPmlzSlNGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
Y2FsbGVlQ2VsbC0+dm0oKSwgY2FsbGVlQ2VsbCkpCiAgICAgICAgICAgICAgICAgICAgIGFkZENh
bGxlZShvYmplY3QpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAy
MS0wOC0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgQW4gaXNzdWUgYWJvdXQgZXZhbHVhdGluZyBpbnN0YW5jZW9mCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisKIDIwMjEtMDgtMDYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuV2ViQ29yZTogV2ViQ29yZTo6Q3J5cHRvS2V5UlNB
OjpleHBvcnRKd2sgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3JCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkocmV2aXNpb24gMjgwNzUxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yQmFzZSA6IHB1YmxpYyBKU0RP
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NT2JqZWN0OwogCi0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6OkltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3Zl
cnJpZGVzR2V0Q2FsbERhdGE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSBmYWxzZTsKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCShyZXZpc2lvbiAyODA3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjkxNCw3ICsyOTE0LDYgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1
cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3Rp
Y09iamVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZH07Ci0gICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IEpTQzo6SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSJ9ID0gMSBpZiAkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IjsKICAgICAgICAgCiAgICAgIyBQcm90b3R5cGUKICAgICB1
bmxlc3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSB8fCAkaW50
ZXJmYWNlLT5pc05hbWVzcGFjZU9iamVjdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4
MDc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTVdpbmRvdyY+KEJhc2U6OndyYXBwZWQoKSk7CiAgICAgfQog
cHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIHByb3RlY3RlZDoK
ICAgICBKU0RPTVdpbmRvdyhKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWY8RE9NV2luZG93
PiYmLCBKU1dpbmRvd1Byb3h5Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwg
SlNXaW5kb3dQcm94eSopOwpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC1p
cy1jYWxsYWJsZS1idWlsdGlucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvZG9tL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI4MDc1MSkKKysrIExheW91dFRlc3RzL2pzL2RvbS9kb2N1bWVudC1hbGwtaXMt
Y2FsbGFibGUtYnVpbHRpbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcs
NyBAQCBQQVNTIHRlc3RBcnJheSgpIGlzIHRydWUKIFBBU1MgdGVzdFR5cGVkQXJyYXkoKSBpcyB0
cnVlCiBQQVNTIHRlc3RSZWdFeHAoKSBpcyB0cnVlCiBQQVNTIHRlc3RPdGhlckJ1aWx0aW5zKCkg
aXMgdHJ1ZQorUEFTUyB0ZXN0SW5zdGFuY2VvZk9wZXJhdG9yKCkgaXMgdHJ1ZQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9kb20vb2JqZWN0LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vb2JqZWN0LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjgwNzUxKQorKysgTGF5b3V0VGVzdHMvanMvZG9tL29iamVj
dC1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTks
NyArOSw3IEBAIFBBU1MgT2JqZWN0LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWwKIFBBU1Mg
T2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0
LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwodW5kZWZpbmVkLCAnaGFzT3duUHJvcGVydHknKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVuZGVmaW5lZCwgJ2hh
c093blByb3BlcnR5JyknKS4KIFBBU1MgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVy
YWJsZS5jYWxsKHVuZGVmaW5lZCwgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09i
amVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh1bmRlZmluZWQsICdwcm9w
ZXJ0eUlzRW51bWVyYWJsZScpJykuCi1QQVNTIE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVP
Zi5jYWxsKHVuZGVmaW5lZCwgdGhpcykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUuaXNQcm90
b3R5cGVPZi5jYWxsKHVuZGVmaW5lZCwgdGhpcyknKS4KK1BBU1MgT2JqZWN0LnByb3RvdHlwZS5p
c1Byb3RvdHlwZU9mLmNhbGwodW5kZWZpbmVkLCB0aGlzKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3Njcmlw
dC10ZXN0cy9kb2N1bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9kb2N1bWVudC1hbGwtaXMtY2FsbGFi
bGUtYnVpbHRpbnMuanMJKHJldmlzaW9uIDI4MDc1MSkKKysrIExheW91dFRlc3RzL2pzL2RvbS9z
Y3JpcHQtdGVzdHMvZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCwyMSBAQCBmdW5jdGlvbiB0ZXN0T3RoZXJCdWlsdGlucygpIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorZnVuY3Rpb24gdGVzdEluc3RhbmNlb2ZPcGVyYXRvcigp
IHsKKyAgICBkb2N1bWVudEFsbC5wcm90b3R5cGUgPSB7fTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgaWYgKCEoT2JqZWN0LmNyZWF0ZShkb2N1bWVudEFs
bC5wcm90b3R5cGUpIGluc3RhbmNlb2YgZG9jdW1lbnRBbGwpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGlmICh7fSBpbnN0YW5jZW9mIGRvY3VtZW50QWxsKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc2hvdWxk
QmVUcnVlKCJ0ZXN0QXJyYXkoKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0VHlwZWRBcnJheSgpIik7
CiBzaG91bGRCZVRydWUoInRlc3RSZWdFeHAoKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0T3RoZXJC
dWlsdGlucygpIik7CitzaG91bGRCZVRydWUoInRlc3RJbnN0YW5jZW9mT3BlcmF0b3IoKSIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>