<?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>112191</bug_id>
          
          <creation_ts>2013-03-12 14:46:05 -0700</creation_ts>
          <short_desc>[v8] [meta] Binding Integrity should move off of vtable checks.</short_desc>
          <delta_ts>2014-12-16 00:48:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112613</dependson>
    
    <dependson>112848</dependson>
    
    <dependson>113247</dependson>
          <blocked>107168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cevans</cc>
    
    <cc>haraken</cc>
    
    <cc>inferno</cc>
    
    <cc>jschuh</cc>
    
    <cc>morrita</cc>
    
    <cc>pdr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853790</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-12 14:46:05 -0700</bug_when>
    <thetext>Tracking bug for forthcoming effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853791</commentid>
    <comment_count>1</comment_count>
      <attachid>192811</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-12 14:47:19 -0700</bug_when>
    <thetext>Created attachment 192811
WIP.

Patch for discussion of direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853842</commentid>
    <comment_count>2</comment_count>
      <attachid>192811</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-12 15:23:16 -0700</bug_when>
    <thetext>Comment on attachment 192811
WIP.

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

&gt; WebCore/page/History.idl:36
&gt; +    IsScriptWrappable

We tried to avoid having an IDL attribute for script wrappable.  Instead we used C++ tricks to automatically detect a ScriptWrappable base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853849</commentid>
    <comment_count>3</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-12 15:27:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192811 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192811&amp;action=review
&gt; 
&gt; &gt; WebCore/page/History.idl:36
&gt; &gt; +    IsScriptWrappable
&gt; 
&gt; We tried to avoid having an IDL attribute for script wrappable.  Instead we used C++ tricks to automatically detect a ScriptWrappable base class.

Yeah.  It&apos;s hard, though, because the info is used to change the initialization of a const POD struct.  The bright side is only the classes that directly depend on scriptwrappable need to mention this, the rest is inferred via inherited IDL attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853857</commentid>
    <comment_count>4</comment_count>
      <attachid>192811</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-12 15:38:54 -0700</bug_when>
    <thetext>Comment on attachment 192811
WIP.

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

&gt; WebCore/bindings/v8/ScriptWrappable.h:133
&gt; +template &lt;typename T&gt;void initWrappable(T* object);

I thought we were going to do this in adoptPtr so that we wouldn&apos;t have to write this boilerplate code in every class...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853868</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-12 15:43:46 -0700</bug_when>
    <thetext>&gt; Yeah.  It&apos;s hard, though, because the info is used to change the initialization of a const POD struct.  The bright side is only the classes that directly depend on scriptwrappable need to mention this, the rest is inferred via inherited IDL attributes.

That should be doable with template specialization, which is the trick we use elsewhere to autodetect ScriptWrappable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854367</commentid>
    <comment_count>6</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-13 09:40:23 -0700</bug_when>
    <thetext>&gt; I thought we were going to do this in adoptPtr so that we wouldn&apos;t have to write this boilerplate code in every class...

Apart from being counter-intuitive that adoptPtr would do this, it creates the need to have a single centralized file generated from the .idl that lists all of the possible entry adoptPtr varieties in one place.  This then gets included everywhere, such that a small perturbation in any idl file triggers a large rebuild.  Seemed opposite to the decentralized approach we seem to favor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854531</commentid>
    <comment_count>7</comment_count>
      <attachid>192977</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-13 13:10:57 -0700</bug_when>
    <thetext>Created attachment 192977
WIP.

Patch resolves the need for IsScriptWrappable IDL attribute.  We always generate the initWrappable() code; some of these will compile into nothingness.  Thing to note is that I moved some of the static methods from DOMDataStore.h to scriptwrapable and minor name changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854550</commentid>
    <comment_count>8</comment_count>
      <attachid>192977</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 13:18:51 -0700</bug_when>
    <thetext>Comment on attachment 192977
WIP.

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2020
&gt; -    V8DOMWrapper::associateObjectWithWrapper(impl.release(), &amp;V8${interfaceName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);
&gt; +    V8DOMWrapper::associateObjectWithWrapper(impl.release().get(), &amp;V8${interfaceName}::info, wrapper, args.GetIsolate(), WrapperConfiguration::Dependent);

impl.release().get()   &lt;---  This is the same as impl.get()

&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:54
&gt; -    static WrapperTypeInfo typeInfo = { 0, 0, 0, 0, 0, 0, 0, WrapperTypeObjectPrototype };
&gt; +  static WrapperTypeInfo typeInfo = { 0, 0, 0, 0, 0, 0, 0, WrapperTypeObjectPrototype, 0 };

bad indent?

&gt; Source/WebCore/bindings/v8/ScriptWrappable.h:71
&gt; +   void setTypeInfo(const WrapperTypeInfo* info)

bad indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854556</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 13:20:44 -0700</bug_when>
    <thetext>Ok, this looks workable.  Can you break this patch into smaller, reviewable pieces?  Maybe...

1) Move functions to ScriptWrappable.h
2) Generate any empty initScriptWrappable function and add callers
3) The rest

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854674</commentid>
    <comment_count>10</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-13 14:52:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Ok, this looks workable.  Can you break this patch into smaller, reviewable pieces?  Maybe...
&gt; 
&gt; 1) Move functions to ScriptWrappable.h
&gt; 2) Generate any empty initScriptWrappable function and add callers
Strikes me this should be templated static method ScriptWrappable::init().

&gt; 3) The rest
&gt; 
&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855592</commentid>
    <comment_count>11</comment_count>
      <attachid>193207</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-14 17:12:16 -0700</bug_when>
    <thetext>Created attachment 193207
WIP.

ScriptWrappable: note use of function template to call external function in place of function template with no body (c++ standard violation corrected).  Also note retrieval of typeinfo from wrapper when wrapper replaces typeinfo in slot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856264</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 13:59:32 -0700</bug_when>
    <thetext>&gt; Strikes me this should be templated static method ScriptWrappable::init().

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857594</commentid>
    <comment_count>13</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-18 14:57:10 -0700</bug_when>
    <thetext>Making this a meta bug.  Will be adding one last WIP set, then break this into smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857595</commentid>
    <comment_count>14</comment_count>
      <attachid>193663</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-18 14:59:24 -0700</bug_when>
    <thetext>Created attachment 193663
WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857771</commentid>
    <comment_count>15</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-18 17:21:09 -0700</bug_when>
    <thetext>Latest hangup: wrapping custom elements.  There is no HTMLCustomElement class from which to initialize a wrapper, which makes it hard to cover the special case for it that formerly existed in HTMLElementWrapperFactory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858366</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 09:46:36 -0700</bug_when>
    <thetext>Maybe morrita has ideas for how to address the custom element issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859950</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-20 19:22:18 -0700</bug_when>
    <thetext>&gt; Latest hangup: wrapping custom elements.  There is no HTMLCustomElement class from which to initialize a wrapper, which makes it hard to cover the special case for it that formerly existed in HTMLElementWrapperFactory.

In my understanding, you&apos;re telling WrapperTypeInfo to each C++ wrapable objects, right?
In that case, I don&apos;t think you need any extra work for custom elements.

As you mentioned, there is no C++ HTMLCustomElement class, 
There is no WrapperTypeInfo for custom element either. 
Each custom element is backed by one of either HTMLElement class or its subclasses,
both of which you already instrumented in the latest WIP patch.
So any custom element should already have a WrapperTypeInfo installed with the patch.

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860555</commentid>
    <comment_count>18</comment_count>
      <attachid>194314</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-21 12:17:42 -0700</bug_when>
    <thetext>Created attachment 194314
WIP.

Fix custom elements by upgrading cached wrapper type info when is=xxx attribute is parsed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860917</commentid>
    <comment_count>19</comment_count>
      <attachid>194314</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 17:23:25 -0700</bug_when>
    <thetext>Comment on attachment 194314
WIP.

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

&gt; third_party/WebKit/Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp:56
&gt; +    object-&gt;setTypeInfo(&amp;V8CustomElement::info);

It looks you are working on an old version. There is no V8CustomElement::info anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860923</commentid>
    <comment_count>20</comment_count>
      <attachid>194314</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 17:28:12 -0700</bug_when>
    <thetext>Comment on attachment 194314
WIP.

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

&gt; third_party/WebKit/Source/WebCore/bindings/v8/V8CustomElement.cpp:47
&gt; +WrapperTypeInfo V8CustomElement::info = { 0, 0, 0, 0, 0, 0, 0, WrapperTypeObjectPrototype, reinterpret_cast&lt;WrapObjectFunction&gt;(V8CustomElement::createWrapper) };

This is confusing. We have no CustomElement C++ class to be wrapped.
Custom elements are rather mechanism, not a single class.

I admit that name V8CustomElement was misleading.
This should&apos;ve been named CustomElementConstructorInjector or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860930</commentid>
    <comment_count>21</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-21 17:37:43 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 194314 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194314&amp;action=review
&gt; 
&gt; &gt; third_party/WebKit/Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp:56
&gt; &gt; +    object-&gt;setTypeInfo(&amp;V8CustomElement::info);
&gt; 
&gt; It looks you are working on an old version. There is no V8CustomElement::info anymore.
Actually, I re-introduced it.  I need a WrapperTypeInfo to hold a pointer to the createWrapper function that will invoke your constructor mechanism.  You&apos;re right that it should be named something else.

In the new world, custom elements, being elements and hence scriptwrappables, need to get a pointer to a wrappertypeinfo assigned at creation time.  It needs to be different based upon whether it&apos;s an ordinary or custom element (the latter invoking you constructor mechanism).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861882</commentid>
    <comment_count>22</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-22 15:07:26 -0700</bug_when>
    <thetext>Hajime, would it make sense to rename class V8CustomElement to V8CustomElementConstructorCaller (which seems closest to me to the actual intention)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862463</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-24 18:50:49 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; 
&gt; In the new world, custom elements, being elements and hence scriptwrappables, need to get a pointer to a wrappertypeinfo assigned at creation time.  It needs to be different based upon whether it&apos;s an ordinary or custom element (the latter invoking you constructor mechanism).

I&apos;m sorry but I don&apos;t quite understand.
Currently we don&apos;t use WrapperTypeInfo to determine whether the element is custom element or not.
Why this change makes it required?

(In reply to comment #22)
&gt; Hajime, would it make sense to rename class V8CustomElement to V8CustomElementConstructorCaller (which seems closest to me to the actual intention)?

Or we can just merge it CustomElementHelper.
File bug 113165 for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862843</commentid>
    <comment_count>24</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-25 09:33:22 -0700</bug_when>
    <thetext>&gt; I&apos;m sorry but I don&apos;t quite understand.
&gt; Currently we don&apos;t use WrapperTypeInfo to determine whether the element is custom element or not.
&gt; Why this change makes it required?
&gt; 
Ah.  We want to harden the binding system against certain types of deliberate tampering, with the result that the wrapper factories, with their introspection, need to go away.  As such, a scriptwrappable will always get wrapped in the new world via indirection off of its pointer to a WrapperTypeInfo as set at object creation time (the wrapper type info is then amended to include the wrapper creation function pointer).

So, we need to have a stubb WrapperTypeInfo just to allow us to transfer control to the wrapper function  in the exact same manner as any other scriptwrappable without invoking additional logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866238</commentid>
    <comment_count>25</comment_count>
      <attachid>195765</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2013-03-29 11:00:29 -0700</bug_when>
    <thetext>Created attachment 195765
WIP.

Keeping pace with changes to custom element helpers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866629</commentid>
    <comment_count>26</comment_count>
      <attachid>195765</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-30 10:57:04 -0700</bug_when>
    <thetext>Comment on attachment 195765
WIP.

This patch is too large.  I thought we talked about splitting this patch into smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055936</commentid>
    <comment_count>27</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-16 00:48:13 -0800</bug_when>
    <thetext>Closing some V8-related work items.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192811</attachid>
            <date>2013-03-12 14:47:19 -0700</date>
            <delta_ts>2013-03-13 13:10:57 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>awesome_2.txt</filename>
            <type>text/plain</type>
            <size>153144</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBACiAg
ICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKLSAg
ICAgIFsnT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiJywgeworICAgICAgWydPUz09Im1hYyInLCB7
CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAgICAgIyA4Qml0IHRleHQgcnVu
cyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgYWxsIHBsYXRmb3JtcyB3ZWJraXQub3JnL2IvMTExMzQ4
CiAgICAgICAgICAgJ0VOQUJMRV84QklUX1RFWFRSVU49MScsCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
Q29uc29sZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDYgKzY4LDcgQEAKIENvbnNvbGU6OkNvbnNvbGUoRnJhbWUqIGZyYW1lKQogICAgIDog
RE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogQ29uc29sZTo6fkNvbnNvbGUoKQpJbmRleDogV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw4
IEBACiAgICAgSlNHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxGcmFtZSwKICAgICBDdXN0b21EZWxl
dGVQcm9wZXJ0eSwKICAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwKLSAgICBPbWl0Q29uc3Ry
dWN0b3IKKyAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgSXNTY3JpcHRXcmFwcGFibGUKIF0gaW50
ZXJmYWNlIEhpc3RvcnkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKICAgICBbQ2FjaGVkQXR0cmlidXRlLCBDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgc3RhdGU7CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDggQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfVElNSU5HLAogICAg
IEV2ZW50VGFyZ2V0LAotICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIE9taXRDb25zdHJ1Y3RvciwK
KyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgUGVyZm9ybWFuY2UgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZU5hdmlnYXRpb24gbmF2aWdhdGlvbjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2VUaW1pbmcgdGltaW5nOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkK
ICAgICAsIG1fbGFzdFN0YXRlT2JqZWN0UmVxdWVzdGVkKDApCiB7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogdW5zaWduZWQgSGlzdG9yeTo6bGVuZ3RoKCkgY29uc3QKSW5kZXg6IFdl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogICAgICwgbV91c2VyVGlt
aW5nKDApCiAjZW5kaWYgLy8gRU5BQkxFKFVTRVJfVElNSU5HKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBlcmZvcm1hbmNlOjp+UGVyZm9ybWFuY2UoKQpJbmRleDogV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5pZGwJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw4IEBACiAKIFsKICAgICBKU0dlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbEZyYW1lLAotICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIE9taXRDb25zdHJ1Y3Rv
ciwKKyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFwcENvZGVOYW1lOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgYXBwTmFtZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsNyBAQAogTmF2aWdhdG9yOjpOYXZpZ2F0b3IoRnJhbWUqIGZyYW1lKQogICAgIDog
RE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogTmF2aWdhdG9yOjp+TmF2aWdhdG9yKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsOCBAQAogICAgIEpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHksCiAgICAgSlNDdXN0b21O
YW1lZEdldHRlck9uUHJvdG90eXBlLAogICAgIEpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblBy
b3RvdHlwZSwKLSAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBPbWl0Q29uc3RydWN0b3IsCisgICAg
SXNTY3JpcHRXcmFwcGFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICNpZiAhZGVmaW5lZChM
QU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAKICAgICAgICAgICAgICBbRG9Ob3RDaGVja1Nl
Y3VyaXR5T25TZXR0ZXIsIEN1c3RvbVNldHRlciwgVjhVbmZvcmdlYWJsZV0gYXR0cmlidXRlIERP
TVN0cmluZyBocmVmOwpJbmRleDogV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL3BhZ2UvTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBM
b2NhdGlvbjo6TG9jYXRpb24oRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHko
ZnJhbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogaW5saW5lIGNvbnN0IEtV
UkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdApJbmRleDogV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw4
IEBACiAKIFsKICAgICBPbWl0Q29uc3RydWN0b3IsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZQorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSXNTY3JpcHRXcmFwcGFi
bGUKIF0gaW50ZXJmYWNlIENyeXB0byB7CiAgICAgW0N1c3RvbV0gQXJyYXlCdWZmZXJWaWV3IGdl
dFJhbmRvbVZhbHVlcyhpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogfTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DcnlwdG8uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3BhZ2Uv
Q3J5cHRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogCiBDcnlwdG86OkNy
eXB0bygpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogdm9pZCBDcnlwdG86Omdl
dFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCBFeGNlcHRpb25Db2RlJiBlYykK
SW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQ29uc29sZS5pZGwJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOCBAQAogCiBbCiAgICAgSlNHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxGcmFtZSwKLSAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBPbWl0Q29u
c3RydWN0b3IsCisgICAgSXNTY3JpcHRXcmFwcGFibGUKIF0gaW50ZXJmYWNlIENvbnNvbGUgewog
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCBkZWJ1Zygp
OwpJbmRleDogV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ29tbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxpbmUgQ29tbWVudDo6Q29t
bWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICA6IENoYXJh
Y3RlckRhdGEoZG9jdW1lbnQsIHRleHQsIENyZWF0ZU90aGVyKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQpJbmRleDogV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgOiBtX2RlbHRhTW9kZShET01fREVMVEFfUElYRUwp
CiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgV2hlZWxFdmVudEluaXQmIGluaXRpYWxpemVyKQpJbmRleDog
V2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5pZGwJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw4IEBACiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpT
SW5saW5lR2V0T3duUHJvcGVydHlTbG90LAogICAgIE9iakNQb2x5bW9ycGhpYywKLSAgICBWOERl
cGVuZGVudExpZmV0aW1lCisgICAgVjhEZXBlbmRlbnRMaWZldGltZSwKKyAgICBJc1NjcmlwdFdy
YXBwYWJsZQogXSBpbnRlcmZhY2UgTm9kZQogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZF
X0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgOiBPYmplY3QsIEV2ZW50VGFyZ2V0Cklu
ZGV4OiBXZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Gb2N1c0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRm9jdXNF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwyMSBAQAogCiBGb2N1c0V2ZW50
OjpGb2N1c0V2ZW50KCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBGb2N1c0V2
ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBkZXRh
aWwsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCiAgICAgOiBVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQogICAgICwgbV9yZWxh
dGVkVGFyZ2V0KHJlbGF0ZWRUYXJnZXQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEZvY3VzRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoaW5pdGlhbGl6ZXIucmVsYXRlZFRhcmdldCkK
IHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEZvY3VzRXZlbnRE
aXNwYXRjaE1lZGlhdG9yPiBGb2N1c0V2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFBhc3NS
ZWZQdHI8Rm9jdXNFdmVudD4gZm9jdXNFdmVudCkKSW5kZXg6IFdlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgOiBtX2tleUxvY2F0aW9uKERPTUtleUxv
Y2F0aW9uU3RhbmRhcmQpCiAgICAgLCBtX2FsdEdyYXBoS2V5KGZhbHNlKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3Qg
UGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIEFic3RyYWN0VmlldyogdmlldykKQEAgLTExNSw2
ICsxMTYsNyBAQAogICAgICwgbV9rZXlMb2NhdGlvbihrZXlMb2NhdGlvbkNvZGUoa2V5KSkKICAg
ICAsIG1fYWx0R3JhcGhLZXkoZmFsc2UpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgY29uc3QgS2V5Ym9hcmRFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtMTIzLDYgKzEy
NSw3IEBACiAgICAgLCBtX2tleUxvY2F0aW9uKGluaXRpYWxpemVyLmtleUxvY2F0aW9uKQogICAg
ICwgbV9hbHRHcmFwaEtleShmYWxzZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBBYnN0cmFjdFZpZXcgKnZpZXcs
CkBAIC0xMzMsNiArMTM2LDcgQEAKICAgICAsIG1fa2V5TG9jYXRpb24oa2V5TG9jYXRpb24pCiAg
ICAgLCBtX2FsdEdyYXBoS2V5KGFsdEdyYXBoS2V5KQogeworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkKSW5kZXg6IFdlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5pZGwJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOCBAQAogCiBbCiAg
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1lbnQsCi0gICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZQorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSXNTY3JpcHRX
cmFwcGFibGUKIF0gaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIHsKIAogICAgIC8vIERPTSBM
ZXZlbCAxCkluZGV4OiBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNiw2ICsyMzYsNyBAQAogRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKSW5kZXg6IFdl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTIgKzM4LDE0IEBACiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZpY2VPcmllbnRhdGlv
bkV2ZW50KCkKICAgICA6IG1fb3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVh
dGUoKSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBEZXZpY2VPcmllbnRhdGlv
bkV2ZW50OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG9yaWVudGF0aW9uKQogICAgIDogRXZlbnQoZXZl
bnRUeXBlLCBmYWxzZSwgZmFsc2UpIC8vIENhbid0IGJ1YmJsZSwgbm90IGNhbmNlbGFibGUKICAg
ICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKIH0KIAogdm9pZCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5j
ZWxhYmxlLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG9yaWVudGF0aW9uKQpJbmRleDogV2ViQ29y
ZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vT3ZlcmZs
b3dFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL092ZXJmbG93RXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgLCBtX2hvcml6b250
YWxPdmVyZmxvdyhmYWxzZSkKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhmYWxzZSkKIHsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBPdmVyZmxvd0V2ZW50OjpPdmVyZmxvd0V2ZW50
KGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwgYm9vbCBob3Jpem9udGFsT3ZlcmZsb3cs
IGJvb2wgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIGJvb2wgdmVydGljYWxPdmVyZmxvdykKQEAg
LTUxLDYgKzUyLDcgQEAKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyh2ZXJ0aWNhbE92ZXJmbG93
KQogewogICAgIEFTU0VSVChob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkIHx8IHZlcnRpY2FsT3Zl
cmZsb3dDaGFuZ2VkKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogCiAgICAgaWYgKGhvcml6
b250YWxPdmVyZmxvd0NoYW5nZWQgJiYgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQpCiAgICAgICAg
IG1fb3JpZW50ID0gQk9USDsKQEAgLTY2LDYgKzY4LDcgQEAKICAgICAsIG1faG9yaXpvbnRhbE92
ZXJmbG93KGluaXRpYWxpemVyLmhvcml6b250YWxPdmVyZmxvdykKICAgICAsIG1fdmVydGljYWxP
dmVyZmxvdyhpbml0aWFsaXplci52ZXJ0aWNhbE92ZXJmbG93KQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgT3ZlcmZsb3dFdmVudDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAsIG1faXNYU0woZmFsc2Up
CiAjZW5kaWYKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJ
bmRleDogV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQogICAgICwgbV9lbnRpdHlOYW1lKGVudGl0
eU5hbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxFbnRp
dHlSZWZlcmVuY2U+IEVudGl0eVJlZmVyZW5jZTo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKQpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9kb20vRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBACiAg
ICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCwKICAgICBKU05vU3RhdGljVGFibGVzLAogICAg
IE9iakNQb2x5bW9ycGhpYywKLSAgICBWOFNraXBWVGFibGVWYWxpZGF0aW9uCisgICAgVjhTa2lw
VlRhYmxlVmFsaWRhdGlvbiwKKyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgRXZl
bnQgewogCiAgICAgLy8gRE9NIFBoYXNlVHlwZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnRU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgLCBtX3B1YmxpY0lkKHB1YmxpY0lkKQogICAgICwg
bV9zeXN0ZW1JZChzeXN0ZW1JZCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBL
VVJMIERvY3VtZW50VHlwZTo6YmFzZVVSSSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CisgICAgaW5pdFdyYXBw
YWJsZSh0aGlzKTsKIH0KIAogRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnKQpAQCAtNjcsNiArNjgs
NyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUoY29udmVy
dFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogfQogCiBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04Miw2ICs4NCw3IEBACiAgICAg
LCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1Rv
RE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiB9CiAKIEV2ZW50Ojp+RXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAKIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCkBAIC01OSw2ICs2MCw3IEBACiAgICAgLCBtX2Rv
dWJsZVRhcChmYWxzZSkKICNlbmRpZgogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAK
IFRvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogICAgIDog
bV9kYXRhVHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQogeworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MSw2ICs1Miw3
IEBACiAgICAgLCBtX3NvdXJjZShpbml0aWFsaXplci5zb3VyY2UpCiAgICAgLCBtX3BvcnRzKGFk
b3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KGluaXRpYWxpemVyLnBvcnRzKSkpCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29u
c3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQpAQCAtNjIsNiArNjQsNyBAQAogICAgICwgbV9zb3VyY2Uo
c291cmNlKQogICAgICwgbV9wb3J0cyhwb3J0cykKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMpCkBAIC03Nyw2ICs4MCw3IEBACiAgICAgaWYgKG1fZGF0YUFzU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKQogICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS0+cmVnaXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKICNl
bmRpZgorICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC04Niw2
ICs5MCw3IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIi
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC05
NSw2ICsxMDAsNyBAQAogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJ
ZCgiIikKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbikKQEAgLTEwNCw2ICsxMTAsNyBAQAogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwg
bV9sYXN0RXZlbnRJZCgiIikKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZXNz
YWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBACiAgICAgLCBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdChmYWxz
ZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAodHlwZSA9PSBTaGFkb3dSb290OjpBdXRo
b3JTaGFkb3dSb290KSB7CkluZGV4OiBXZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyMSBAQAogUGFnZVRyYW5zaXRpb25FdmVudDo6UGFn
ZVRyYW5zaXRpb25FdmVudCgpCiAgICAgOiBtX3BlcnNpc3RlZChmYWxzZSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlv
bkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBwZXJzaXN0ZWQpCiAgICAgOiBF
dmVudCh0eXBlLCB0cnVlLCB0cnVlKQogICAgICwgbV9wZXJzaXN0ZWQocGVyc2lzdGVkKQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OlBhZ2VU
cmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQYWdlVHJhbnNp
dGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXpl
cikKICAgICAsIG1fcGVyc2lzdGVkKGluaXRpYWxpemVyLnBlcnNpc3RlZCkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlvbkV2ZW50Ojp+UGFnZVRyYW5zaXRp
b25FdmVudCgpCkluZGV4OiBXZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCw3IEBA
CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAogcHJvdGVjdGVkOgotICAgIENoYXJhY3RlckRhdGEoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRleHQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBO
b2RlKGRvY3VtZW50LCB0eXBlKQotICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwoKSA/IHRl
eHQgOiBlbXB0eVN0cmluZygpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUgPT0gQ3JlYXRl
T3RoZXIgfHwgdHlwZSA9PSBDcmVhdGVUZXh0IHx8IHR5cGUgPT0gQ3JlYXRlRWRpdGluZ1RleHQp
OwotICAgIH0KKyAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpOwogCiAgICAgdm9pZCBzZXREYXRhV2l0
aG91dFVwZGF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgewpJbmRleDogV2ViQ29yZS9kb20v
UHJvcGVydHlOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUHJvcGVydHlO
b2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1Byb3BlcnR5Tm9k
ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgOiBMaXZlTm9k
ZUxpc3Qocm9vdE5vZGUsIFByb3BlcnR5Tm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlT25JdGVtQXR0
ckNoYW5nZSwgTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnRJZk93bmVySGFzSXRlbXJlZkF0dHIp
CiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQ
cm9wZXJ0eU5vZGVMaXN0Ojp+UHJvcGVydHlOb2RlTGlzdCgpCkluZGV4OiBXZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogRXJyb3JFdmVudDo6RXJyb3JFdmVudCgpCiB7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogRXJyb3JFdmVudDo6RXJyb3JFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEVycm9yRXZlbnRJbml0JiBpbml0aWFsaXplcikK
QEAgLTUyLDYgKzUzLDcgQEAKICAgICAsIG1fZmlsZU5hbWUoaW5pdGlhbGl6ZXIuZmlsZW5hbWUp
CiAgICAgLCBtX2xpbmVOdW1iZXIoaW5pdGlhbGl6ZXIubGluZW5vKQogeworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiB9CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQpAQCAt
NjAsNiArNjIsNyBAQAogICAgICwgbV9maWxlTmFtZShmaWxlTmFtZSkKICAgICAsIG1fbGluZU51
bWJlcihsaW5lTnVtYmVyKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEVycm9y
RXZlbnQ6On5FcnJvckV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogICAgICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lzdGVtSWQp
CiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3RyaW5nIE5vdGF0aW9uOjpub2Rl
TmFtZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9BdHRyLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vQXR0
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1faW5DaGlsZHJl
bkNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX3NwZWNpZmllZCh0cnVlKQogeworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiB9CiAKIEF0dHI6OkF0dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYWxvbmVWYWx1ZSkK
QEAgLTU3LDYgKzU4LDcgQEAKICAgICAsIG1faW5DaGlsZHJlbkNoYW5nZWQoZmFsc2UpCiAgICAg
LCBtX3NwZWNpZmllZCh0cnVlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsMTMgQEAKICAg
ICByZXR1cm4gMDsKIH0KIAorRWxlbWVudDo6RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICA6
IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCisgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkK
K3sKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBDcmVhdGVFbGVtZW50KSk7CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIFdlYktpdFRyYW5zaXRp
b25FdmVudDo6V2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkK
IHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6
OldlYktpdFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNl
dWRvRWxlbWVudCkKSW5kZXg6IFdlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDE0
IEBACiAKIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogQ3VzdG9tRXZlbnQ6OkN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5
cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9kZXRhaWwoaW5pdGlhbGl6ZXIuZGV0YWlsKQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQo
KQpJbmRleDogV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9UZXh0
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgLCBtX3Nob3Vs
ZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKIHsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNz
UmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQpAQCAtNzcsNiArNzgsNyBAQAogICAgICwgbV9zaG91bGRTbWFy
dFJlcGxhY2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoZmFsc2UpCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0
cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsCkBAIC04OCw2ICs5MCw3IEBACiAgICAgLCBt
X3Nob3VsZFNtYXJ0UmVwbGFjZShzaG91bGRTbWFydFJlcGxhY2UpCiAgICAgLCBtX3Nob3VsZE1h
dGNoU3R5bGUoc2hvdWxkTWF0Y2hTdHlsZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpCkBAIC05OCw2ICsxMDEsNyBAQAogICAgICwgbV9zaG91bGRN
YXRjaFN0eWxlKGZhbHNlKQogICAgICwgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFRleHRFdmVu
dDo6flRleHRFdmVudCgpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKIERvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCiAg
ICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogeworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbXBv
c2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Db21wb3Np
dGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTggKzM3LDIxIEBACiAKIENvbXBv
c2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhKQogICAgIDogVUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwg
bV9kYXRhKGRhdGEpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQ29tcG9zaXRp
b25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IENvbXBvc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIpCiAgICAgLCBtX2RhdGEoaW5pdGlhbGl6ZXIuZGF0YSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBDb21wb3NpdGlvbkV2ZW50Ojp+Q29tcG9zaXRpb25FdmVu
dCgpCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTm9kZUxpc3QuaWRsCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Ob2Rl
TGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDggQEAKICAgICBJbmRleGVkR2V0
dGVyLAogICAgIE5hbWVkR2V0dGVyLAogICAgIFY4RGVwZW5kZW50TGlmZXRpbWUsCi0gICAgVjhT
a2lwVlRhYmxlVmFsaWRhdGlvbgorICAgIFY4U2tpcFZUYWJsZVZhbGlkYXRpb24sCisgICAgSXNT
Y3JpcHRXcmFwcGFibGUKIF0gaW50ZXJmYWNlIE5vZGVMaXN0IHsKIAogICAgIE5vZGUgaXRlbShp
biBbSXNJbmRleCxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDcgQEAKICAgICAsIG1fdGVt
cGxhdGVEb2N1bWVudEhvc3QoMCkKICNlbmRpZgogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiAgICAgbV9wcmludGluZyA9IGZhbHNlOwogICAgIG1fcGFnaW5hdGVkRm9yU2NyZWVuID0gZmFs
c2U7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Ob2RlTGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Ob2RlTGlz
dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2Rl
TGlzdDo6Tm9kZUxpc3QoKQoreworICAgIGluaXRXcmFwcGFibGUodGhpcyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL05vZGVM
aXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBX
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Q
cm9ncmVzc0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vUHJvZ3Jl
c3NFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fbG9h
ZGVkKDApCiAgICAgLCBtX3RvdGFsKDApCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFByb2dyZXNzRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTUwLDYgKzUxLDcgQEAK
ICAgICAsIG1fbG9hZGVkKGluaXRpYWxpemVyLmxvYWRlZCkKICAgICAsIG1fdG90YWwoaW5pdGlh
bGl6ZXIudG90YWwpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUHJvZ3Jlc3NF
dmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3Ro
Q29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsKQpAQCAtNTgsNiArNjAsNyBAQAogICAgICwgbV9sb2FkZWQobG9hZGVkKQogICAgICwg
bV90b3RhbCh0b3RhbCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogICAgIAogY29u
c3QgQXRvbWljU3RyaW5nJiBQcm9ncmVzc0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1VJ
RXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogVUlFdmVudDo6VUlFdmVudCgpCiAgICAg
OiBtX2RldGFpbCgwKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFVJRXZlbnQ6
OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJn
LCBib29sIGNhbmNlbGFibGVBcmcsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3QXJnLCBp
bnQgZGV0YWlsQXJnKQpJbmRleDogV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NoYXJhY3RlckRhdGE6OkNoYXJh
Y3RlckRhdGEoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIENvbnN0cnVj
dGlvblR5cGUgdHlwZSkKKyAgICA6IE5vZGUoZG9jdW1lbnQsIHR5cGUpCisgICAgLCBtX2RhdGEo
IXRleHQuaXNOdWxsKCkgPyB0ZXh0IDogZW1wdHlTdHJpbmcoKSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA9PSBDcmVhdGVPdGhlciB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwgdHlwZSA9PSBDcmVhdGVF
ZGl0aW5nVGV4dCk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKK30KKwogdm9pZCBDaGFyYWN0
ZXJEYXRhOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgY29uc3QgU3RyaW5nJiBub25OdWxsRGF0YSA9ICFkYXRhLmlzTnVsbCgpID8gZGF0YSA6IGVt
cHR5U3RyaW5nKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9kb20vVHJlZVdhbGtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDggQEAK
IC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CiBbCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24sCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCisgICAgSXNTY3JpcHRXcmFwcGFibGUKIF0gaW50ZXJmYWNlIFRyZWVXYWxrZXIg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIHJvb3Q7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdzsKSW5kZXg6IFdlYkNvcmUvZG9tL1RyZWVXYWxr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogICAgIDogVHJhdmVyc2FsKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBm
aWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCiAgICAgLCBtX2N1cnJlbnQocm9vdCgpKQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIHZvaWQgVHJlZVdhbGtlcjo6c2V0Q3Vy
cmVudE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTk4LDExICs1OTgsNyBAQAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAg
ICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1l
bnQsIHR5cGUpCi0gICAgICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCi0gICAgewotICAgIH0KKyAg
ICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKTsKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CkluZGV4
OiBXZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwx
NCBAQAogRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2ZW50KCkKICAgICA6IG1fZGV2
aWNlTW90aW9uRGF0YShEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBEZXZpY2VNb3Rpb25FdmVudDo6RGV2aWNlTW90aW9uRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlvbkRhdGEqIGRldmljZU1v
dGlvbkRhdGEpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkgLy8gQ2FuJ3Qg
YnViYmxlLCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9kZXZpY2VNb3Rpb25EYXRhKGRldmljZU1v
dGlvbkRhdGEpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogdm9pZCBEZXZpY2VN
b3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIERldmljZU1vdGlvbkRhdGEqIGRldmlj
ZU1vdGlvbkRhdGEpCkluZGV4OiBXZWJDb3JlL2RvbS9UZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vVGV4dC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9UZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSw3IEBACiAgICAgdmlydHVhbCBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgQ29uc3Ry
dWN0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEs
IHR5cGUpCi0gICAgewotICAgIH0KKyAgICBUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9UcmFuc2l0
aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNp
dGlvbkV2ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkKIHsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBUcmFuc2l0aW9uRXZlbnQ6OlRyYW5zaXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNl
ZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKSW5kZXg6IFdlYkNvcmUvZG9tL1Bv
cFN0YXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgICwgbV9zZXJpYWxpemVkU3RhdGUo
MCkKICAgICAsIG1faGlzdG9yeSgwKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAK
IFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBACiAg
ICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQogICAgICwgbV9oaXN0b3J5KDApCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRy
PEhpc3Rvcnk+IGhpc3RvcnkpCkBAIC01Nyw2ICs1OSw3IEBACiAgICAgLCBtX3NlcmlhbGl6ZWRT
dGF0ZShzZXJpYWxpemVkU3RhdGUpCiAgICAgLCBtX2hpc3RvcnkoaGlzdG9yeSkKIHsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2ZW50Ojp+UG9wU3RhdGVFdmVudCgp
CkluZGV4OiBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9t
L0NEQVRBU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIGlubGlu
ZSBDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgZGF0YSkKICAgICA6IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQpCiB7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IENE
QVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRh
KQpJbmRleDogV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
ZG9tL011dGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiBN
dXRhdGlvbkV2ZW50OjpNdXRhdGlvbkV2ZW50KCkKICAgICA6IG1fYXR0ckNoYW5nZSgwKQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWROb2RlLApJbmRleDogV2ViQ29yZS9kb20vVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVGV4dC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvZG9tL1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Mywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHQ6OlRleHQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICA6IENo
YXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIHR5cGUpCit7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKK30KKwogUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0
KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVMaXN0LmgJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvZG9tL05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKIAogICAgIGNsYXNzIE5vZGVMaXN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8Tm9kZUxpc3Q+IHsKICAgICBwdWJsaWM6CisgICAgICAgIE5vZGVMaXN0
KCk7CiAgICAgICAgIHZpcnR1YWwgfk5vZGVMaXN0KCkgeyB9CiAKICAgICAgICAgLy8gRE9NIG1l
dGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBOb2RlTGlzdApJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEFuaW1h
dGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiBXZWJLaXRB
bmltYXRpb25FdmVudDo6V2ViS2l0QW5pbWF0aW9uRXZlbnQoKQogICAgIDogbV9lbGFwc2VkVGlt
ZSgwLjApCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogV2ViS2l0QW5pbWF0aW9u
RXZlbnQ6OldlYktpdEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgV2ViS2l0QW5pbWF0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKSW5kZXg6IFdlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01vdXNlRXZlbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQocmVs
YXRlZFRhcmdldCkKICAgICAsIG1fY2xpcGJvYXJkKGNsaXBib2FyZCkKIHsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC0x
NDAsNiArMTQxLDcgQEAKICAgICAsIG1fcmVsYXRlZFRhcmdldChpbml0aWFsaXplci5yZWxhdGVk
VGFyZ2V0KQogICAgICwgbV9jbGlwYm9hcmQoMCAvKiBjbGlwYm9hcmQgKi8pCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKICAgICBpbml0Q29vcmRpbmF0ZXMoSW50UG9pbnQoaW5pdGlhbGl6
ZXIuY2xpZW50WCwgaW5pdGlhbGl6ZXIuY2xpZW50WSkpOwogfQogCkluZGV4OiBXZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIERPTVBs
dWdpbkFycmF5OjpET01QbHVnaW5BcnJheShGcmFtZSogZnJhbWUpCiAgICAgOiBET01XaW5kb3dQ
cm9wZXJ0eShmcmFtZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBET01QbHVn
aW5BcnJheTo6fkRPTVBsdWdpbkFycmF5KCkKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9ET01QbHVn
aW5BcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsOCBAQAogICAgIEpTR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgTmFtZWRHZXR0ZXIsCiAgICAgSW5kZXhlZEdldHRlciwK
LSAgICBJbnRlcmZhY2VOYW1lPVBsdWdpbkFycmF5CisgICAgSW50ZXJmYWNlTmFtZT1QbHVnaW5B
cnJheSwKKyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgRE9NUGx1Z2luQXJyYXkg
ewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBET01Q
bHVnaW4gaXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25lZCBsb25n
IGluZGV4KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogSW5pdGlhbGl6ZWRC
eUV2ZW50Q29uc3RydWN0b3IKIEludGVyZmFjZU5hbWU9KgogSXNJbmRleAorSXNTY3JpcHRXcmFw
cGFibGUKIElzV29ya2VyQ29udGV4dAogSlNDdXN0b20KIEpTQ3VzdG9tQ29uc3RydWN0b3IKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQkod29ya2luZyBjb3B5KQpAQCAtNTA0LDEzICs1MDQsMTEgQEAKIAogICAgIG15ICRub1RvVjgg
PSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcHJlc3NUb0pTT2JqZWN0In07
CiAgICAgbXkgJG5vV3JhcCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE5v
V3JhcHBlckNhY2hlIn0gfHwgJG5vVG9WODsKLSAgICBpZiAoISRub1dyYXApIHsKLSAgICAgICAg
bXkgJGNyZWF0ZVdyYXBwZXJBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0aXZl
VHlwZSk7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKSBpZiAhJG5vV3JhcDsKICAgICBmcmllbmQgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKCR7Y3JlYXRlV3JhcHBlckFyZ3VtZW50VHlwZX0sIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoJHtuYXRpdmVUeXBl
fSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogRU5ECi0gICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKQEAg
LTUzMywxNyArNTMxLDI3IEBACiB9CiBFTkQKICAgICB9IGVsc2UgewotCiAgICAgICAgIG15ICRj
cmVhdGVXcmFwcGVyQ2FsbCA9ICRjdXN0b21XcmFwID8gIiR7djhJbnRlcmZhY2VOYW1lfTo6d3Jh
cCIgOiAiJHt2OEludGVyZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyIjsKICAgICAgICAgbXkgJHJl
dHVybmluZ1dyYXBwZXIgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFw
QXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6dG9GdW5jdGlvbih3cmFwcGVyKSIgOiAid3Jh
cHBlciI7CiAgICAgICAgIG15ICRyZXR1cm5pbmdDcmVhdGVkV3JhcHBlck9wZW5pbmcgPSAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9N
V3JhcHBlcjo6dG9GdW5jdGlvbigiIDogIiI7CiAgICAgICAgIG15ICRyZXR1cm5pbmdDcmVhdGVk
V3JhcHBlckNsb3NpbmcgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFw
QXNGdW5jdGlvbiJ9ID8gIiwgXCIke2ludGVyZmFjZU5hbWV9XCIsIGlzb2xhdGUpIiA6ICIiOwor
ICAgICAgICBteSAkaXNTY3JpcHRXcmFwcGFibGUgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiSXNTY3JpcHRXcmFwcGFibGUiKTsKIAogICAg
ICAgICBpZiAoJGN1c3RvbVdyYXApIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
IDw8RU5EKTsKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogRU5ECisgICAgICAgIH0gZWxzaWYgKCRpc1NjcmlwdFdyYXBwYWJsZSkgeworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBjb25zdCBXcmFw
cGVyVHlwZUluZm8qIGluZm8gPSBpbXBsLT50eXBlSW5mbygpOworICAgIHJldHVybiBpbmZvLT53
cmFwT2JqZWN0RnVuY3Rpb24oaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KK0VO
RAorCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8
PEVORCk7CiAKQEAgLTIwMTYsNyArMjAyNCw3IEBACiAKICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwor
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNl
KCkuZ2V0KCksICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIEVORAogCkBAIC0yMDg2LDcgKzIwOTQsNyBAQAogICAgIFJlZlB0cjwke2ludGVyZmFj
ZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0eXBlLCBldmVudEluaXQp
OwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJlbGVh
c2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgpLmdldCgpLCAmVjgke2lu
dGVyZmFjZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiBFTkQKQEAg
LTIxNzIsNyArMjE4MCw3IEBACiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVyVHlwZUluZm8gJHt2OEludGVy
ZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0
aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6
OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgJHt2
OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVu
dFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlw
ZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewpAQCAtMjIzMCw3ICsyMjM4LDcgQEAK
IAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmJHt2OEludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLmdldCgpLCAmJHt2OEludGVyZmFjZU5hbWV9
Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0y
NzIzLDE2ICsyNzMxLDMyIEBACiAKIEVORAogCi0KICAgICBteSAkcGFyZW50Q2xhc3NJbmZvID0g
JHBhcmVudENsYXNzID8gIiYke3BhcmVudENsYXNzfTo6aW5mbyIgOiAiMCI7Ci0KICAgICBteSAk
V3JhcHBlclR5cGVQcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2VwdGlvbiA/ICJXcmFwcGVy
VHlwZUVycm9yUHJvdG90eXBlIiA6ICJXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSI7CisgICAg
bXkgJGlzU2NyaXB0V3JhcHBhYmxlID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIklzU2NyaXB0V3JhcHBhYmxlIik7CisgICAgbXkgJHdyYXBw
ZXJGdW5jdGlvbiA9ICAkaXNTY3JpcHRXcmFwcGFibGUgPyAicmVpbnRlcnByZXRfY2FzdDxXcmFw
T2JqZWN0RnVuY3Rpb24+KCR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlcikiIDogIjAi
OwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJXcmFwcGVyVHlwZUluZm8gJHt2
OEludGVyZmFjZU5hbWV9OjppbmZvID0geyAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRl
LCAke3Y4SW50ZXJmYWNlTmFtZX06OmRlcmVmT2JqZWN0LCAkdG9BY3RpdmVET01PYmplY3QsICR0
b0V2ZW50VGFyZ2V0LCAkcm9vdEZvckdDLCAke3Y4SW50ZXJmYWNlTmFtZX06Omluc3RhbGxQZXJD
b250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgJHBhcmVudENsYXNzSW5mbywgJFdyYXBwZXJUeXBl
UHJvdG90eXBlIH07XG5cbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAibmFt
ZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsIHtcblxuIik7CisgICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKTsKK1dyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNl
TmFtZX06OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUsICR7djhJbnRl
cmZhY2VOYW1lfTo6ZGVyZWZPYmplY3QsICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJn
ZXQsICRyb290Rm9yR0MsICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzLCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUs
ICR7d3JhcHBlckZ1bmN0aW9ufSB9OwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICJ0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9XG5cbiIpOworRU5ECiAK
KyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpIGlmICR7aXNTY3JpcHRXcmFw
cGFibGV9OwordGVtcGxhdGU8PiB2b2lkIGluaXRXcmFwcGFibGU8JHtpbnRlcmZhY2VOYW1lfT4o
JHtpbnRlcmZhY2VOYW1lfSogb2JqZWN0KQoreworICAgIG9iamVjdC0+c2V0VHlwZUluZm8oJiR7
djhJbnRlcmZhY2VOYW1lfTo6aW5mbyk7Cit9Cit0ZW1wbGF0ZSB2b2lkIGluaXRXcmFwcGFibGU8
JHtpbnRlcmZhY2VOYW1lfT4oJHtpbnRlcmZhY2VOYW1lfSopOyAvLyBFeHBsaWNpdCBpbnN0YW50
aWF0aW9uLgorCitFTkQKKworICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCA8PEVORCk7
CituYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWwgeworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCitFTkQKKwogICAgIG15ICRoYXNDb25z
dHJ1Y3RvcnMgPSAwOwogICAgIG15ICRoYXNSZXBsYWNlYWJsZSA9IDA7CiAKQEAgLTM1NDYsMTAg
KzM1NzAsMTAgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gJHt2OEludGVyZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyKCR7Y3JlYXRl
V3JhcHBlckFyZ3VtZW50VHlwZX0gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAk
e3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIEFTU0VSVChpbXBsLmdldCgpKTsKLSAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyKGltcGwuZ2V0KCksIGlzb2xhdGUpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKGlt
cGwpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSku
SXNFbXB0eSgpKTsKIEVORAogCiAgICAgbXkgJHZ0YWJsZU5hbWVHbnUgPSBHZXRHbnVWVGFibGVO
YW1lRm9ySW50ZXJmYWNlKCRpbnRlcmZhY2UpOwpAQCAtMzU2MSw3ICszNTg1LDcgQEAKIEVORAog
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAoJGJhc2VUeXBlIG5lICRpbnRlcmZh
Y2VOYW1lKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PCR7YmFz
ZVR5cGV9Kj4oaW1wbC5nZXQoKSkpID09IHN0YXRpY19jYXN0PHZvaWQqPihpbXBsLmdldCgpKSk7
CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDwke2Jhc2VUeXBlfSo+
KGltcGwpKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbCkpOwogRU5ECiAKICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJEb2N1bWVudCIpKSB7
CkBAIC0zNTY5LDcgKzM1OTMsNyBAQAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFt
ZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+c2NyaXB0KCktPmluaXRpYWxpemVNYWluV29ybGQo
KSkgewogICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVhdGVk
IGEgd3JhcHBlciBmb3IgdGhlIG9iamVjdCwgcmV0cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdy
YXBwZXIoaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSk7
CiAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogICAgICAgICB9CkBAIC0zNTc5LDExICszNjAzLDExIEBACiAKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmlu
Zm8sIGltcGwuZ2V0KCksIGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZv
LCBpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXMod3JhcHBlciwgaW1wbCwgaXNvbGF0ZSk7CiAgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFz
RGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0K
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNDYgKzM5LDYzIEBACiAKIGNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6
Ci0gICAgU2NyaXB0V3JhcHBhYmxlKCkgeyB9CisgICAgU2NyaXB0V3JhcHBhYmxlKCkgOiBtX21h
c2tlZFN0b3JhZ2UoMCkgeyB9CiAKKyAgICB+U2NyaXB0V3JhcHBhYmxlKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX21hc2tlZFN0b3JhZ2UpOyAvLyAgQXNzZXJ0IGluaXRpYWxpemF0aW9uIHZp
YSBpbml0V3JhcHBhYmxlKCkgZXZlbiBpZiBub3Qgd3JhcHBlZCBsYXRlci4KKyAgICAgICAgbV9t
YXNrZWRTdG9yYWdlID0gMDsKKyAgICB9CisKKwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PihtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKKyAgICAgICAgdjg6
Ok9iamVjdCogb2JqZWN0ID0gY29udGFpbnNXcmFwcGVyKCkgPyByZWludGVycHJldF9jYXN0PHY4
OjpPYmplY3QqPihtYXNrT3JVbm1hc2tWYWx1ZShtX21hc2tlZFN0b3JhZ2UpKSA6IDA7CisgICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KG9iamVjdCk7CiAgICAgfQogCiAgICAg
dm9pZCBzZXRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOworICAgICAg
ICBBU1NFUlQoIWNvbnRhaW5zV3JhcHBlcigpKTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gcGVyc2lzdGVudCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaXNv
bGF0ZSwgd3JhcHBlcik7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uY29uZmlndXJlV3JhcHBlcihw
ZXJzaXN0ZW50LCBpc29sYXRlKTsKICAgICAgICAgcGVyc2lzdGVudC5NYWtlV2Vhayhpc29sYXRl
LCB0aGlzLCB3ZWFrQ2FsbGJhY2spOwotICAgICAgICBtX21hc2tlZFdyYXBwZXIgPSBtYXNrT3JV
bm1hc2tQb2ludGVyKCpwZXJzaXN0ZW50KTsKKyAgICAgICAgbV9tYXNrZWRTdG9yYWdlID0gbWFz
a09yVW5tYXNrVmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCpwZXJzaXN0ZW50KSk7
CiAgICAgfQogCisgICAgdm9pZCBzZXRUeXBlSW5mbyhjb25zdCBXcmFwcGVyVHlwZUluZm8qIGlu
Zm8pCisgICAgeworICAgICAgICBtX21hc2tlZFN0b3JhZ2UgPSAocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KGluZm8pIHwgMSk7CisgICAgfQorCisgICAgY29uc3QgV3JhcHBlclR5cGVJbmZv
KiB0eXBlSW5mbygpCisgICAgeworICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSBjb250YWluc1R5
cGVJbmZvKCkgPyAobV9tYXNrZWRTdG9yYWdlICYgfjEpIDogMDsKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV3JhcHBlclR5cGVJbmZvKj4odmFsdWUpOworICAgIH0KKwog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAgaW5mby5p
Z25vcmVNZW1iZXIobV9tYXNrZWRXcmFwcGVyKTsKKyAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIo
bV9tYXNrZWRTdG9yYWdlKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZvaWQgZGlz
cG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCisgICAgc3RhdGljIGlubGluZSB1aW50cHRyX3QgbWFza09yVW5tYXNrVmFsdWUo
dWludHB0cl90IHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdyYXBwZXIu
SXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKCp2YWx1ZSA9PSBtYXNrT3JVbm1hc2tQb2ludGVy
KCptX21hc2tlZFdyYXBwZXIpKTsKLSAgICAgICAgdmFsdWUuRGlzcG9zZShpc29sYXRlKTsKLSAg
ICAgICAgbV9tYXNrZWRXcmFwcGVyLkNsZWFyKCk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBy
YW5kb21NYXNrID0gfigocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZXZWJDb3JlTWVtb3J5
VHlwZXM6OkRPTSkgPj4gMTMpIHwgMSk7IC8vIEVudHJvcHkgdmlhIEFTTFIsIGJvdHRvbSBiaXQg
Y2xlYXIuCisgICAgICAgIHJldHVybiAodmFsdWUgXiByYW5kb21NYXNrKSAmICghdmFsdWUgLSAx
KTsgLy8gUHJlc2VydmUgbnVsbCB3aXRob3V0IGJyYW5jaGluZy4KICAgICB9CiAKLSAgICAvLyBT
dG9yZXMgYSBtYXNrZWQgd3JhcHBlciB0byBwcmV2ZW50IGF0dGFja2VycyBmcm9tIG92ZXJ3cml0
aW5nIHRoaXMgZmllbGQKLSAgICAvLyB3aXRoIGEgcGhvbnkgd3JhcHBlci4KLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBtX21hc2tlZFdyYXBwZXI7CisgICAgaW5saW5lIGJvb2wgY29u
dGFpbnNUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIChtX21hc2tlZFN0b3JhZ2UgJiAxKSA9PSAx
OyB9CisgICAgaW5saW5lIGJvb2wgY29udGFpbnNXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9t
YXNrZWRTdG9yYWdlICYmICgobV9tYXNrZWRTdG9yYWdlICYgMSkgPT0gMCk7IH0KIAotICAgIHN0
YXRpYyBpbmxpbmUgdjg6Ok9iamVjdCogbWFza09yVW5tYXNrUG9pbnRlcihjb25zdCB2ODo6T2Jq
ZWN0KiBvYmplY3QpCisgICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3Rl
bnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJU
eXBlSW5mbyogaW5mbykKICAgICB7Ci0gICAgICAgIGNvbnN0IHVpbnRwdHJfdCBvYmplY3RQb2lu
dGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdCk7Ci0gICAgICAgIGNvbnN0
IHVpbnRwdHJfdCByYW5kb21NYXNrID0gfihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJldl
YkNvcmVNZW1vcnlUeXBlczo6RE9NKSA+PiAxMyk7IC8vIEVudHJvcHkgdmlhIEFTTFIuCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHY4OjpPYmplY3QqPigob2JqZWN0UG9pbnRlciBe
IHJhbmRvbU1hc2spICYgKCFvYmplY3RQb2ludGVyIC0gMSkpOyAvLyBQcmVzZXJ2ZSBudWxsIHdp
dGhvdXQgYnJhbmNoaW5nLgorICAgICAgICBBU1NFUlQoY29udGFpbnNXcmFwcGVyKCkgJiYgbV9t
YXNrZWRTdG9yYWdlICE9IDApOworICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KCp2YWx1ZSkgPT0gbWFza09yVW5tYXNrVmFsdWUobV9tYXNrZWRTdG9yYWdlKSk7Cisg
ICAgICAgIHZhbHVlLkRpc3Bvc2UoaXNvbGF0ZSk7CisgICAgICAgIHNldFR5cGVJbmZvKGluZm8p
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKQEAg
LTkzLDE0ICsxMTAsMjggQEAKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFw
cGVyVHlwZUluZm8od3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChpbmZvLT5kZXJlZk9iamVjdEZ1
bmN0aW9uKTsKIAotICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZhbHVlLCBpc29sYXRlKTsK
KyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSwgaXNvbGF0ZSwgaW5mbyk7CiAgICAg
ICAgIC8vIEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVz
IGNhbiBiZSBjb25zdW1lZAogICAgICAgICAvLyBpbnNpZGUga2V5LT5kZXJlZigpLCB3aGljaCBj
YXVzZXMgTm9kZSBkZXN0cnVjdGlvbnMuIFdlIHNob3VsZAogICAgICAgICAvLyBtYWtlIE5vZGUg
ZGVzdHJ1Y3Rpb25zIGluY3JlbWVudGFsLgogICAgICAgICBpbmZvLT5kZXJlZk9iamVjdChvYmpl
Y3QpOwogICAgIH0KKworICAgIC8vIElmIHplcm8sIHRoZW4gdGhpcyBjb250YWlucyBub3RoaW5n
LCBvdGhlcndpc2U6CisgICAgLy8gICBJZiB0aGUgYm90dG9tIGJpdCBpdCBjbGVhciwgdGhlbiB0
aGlzIGNvbnRhaW5zIGEgbWFza2VkIHBvaW50ZXIgdG8gYSB3cmFwcGVyIG9iamVjdC4KKyAgICAv
LyAgIElmIHRoZSBib3R0b20gYml0IGlzIHNldCwgdGhlbiB0aGlzIGNvbnRhaW5zIGEgcG9pbnRl
ciB0byB0aGUgd3JhcHBlciB0eXBlIGluZm8gaW4gdGhlIHJlbWFpbmluZyBiaXRzLgorICAgIC8v
IE1hc2tpbmcgd3JhcHBlcnMgcHJldmVudHMgYXR0YWNrZXJzIGZyb20gb3ZlcndyaXRpbmcgdGhp
cyBmaWVsZCB3aXRoIHBvaW50ZXJzIHRvIHNwcmF5ZWQgZGF0YS4KKyAgICAvLyBQb2ludGVycyBp
bnNpZGUgV3JhcHBlciBUeXBlIEluZm8gYXJlIGFscmVhZHkgcHJvdGVjdGVkIGJ5IEFTTFIuCisg
ICAgdWludHB0cl90IG1fbWFza2VkU3RvcmFnZTsKIH07CiAKKy8vIFdyYXBwYWJsZXMgbmVlZCB0
byBiZSBpbml0V3JhcHBhYmxlKCknZCB3aXRoIHRoZWlyIG1vc3QgZGVycml2ZWQgd3JhcHBlZAor
Ly8gdHlwZSBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0IGNlcnRhaW4gb3RoZXIgdHlwZXMgbmVl
ZCB0byBiZSBhZG9wdGVkIG9yCisvLyBzbyBmb3J0aC4gIFRoZSBpbml0V3JhcHBhYmxlIGZ1bmN0
aW9ucyBhcmUgaW5zdGFudGlhdGVkIGluIHRoZSBnZW5lcmF0ZWQKKy8vIGNvZGUuIFRoZSBKU0Mg
Y29kZSB3aWxsIG1haW50YWluIGNvbXBhdGliaWxpdHkgdmlhIGEgc2luZ2xlIG5vLW9wCisvLyBp
bml0V3JhcHBhYmxlKHZvaWQqKSBmdW5jdGlvbiBoZXJlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
dm9pZCBpbml0V3JhcHBhYmxlKFQqIG9iamVjdCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNjcmlwdFdyYXBwYWJsZV9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhBZGFwdG9y
RnVuY3Rpb246OmluZm8gPSB7IFY4QWRhcHRvckZ1bmN0aW9uOjpnZXRUZW1wbGF0ZSwgMCwgMCwg
MCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5m
byBWOEFkYXB0b3JGdW5jdGlvbjo6aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBs
YXRlLCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwgMCB9Owog
CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246
OmdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIEFjdGl2ZURPTU9iamVjdDsKICAgICBjbGFz
cyBET01EYXRhU3RvcmU7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CkBAIC02MSw2ICs2MSw3IEBA
CiAgICAgdHlwZWRlZiBFdmVudFRhcmdldCogKCpUb0V2ZW50VGFyZ2V0RnVuY3Rpb24pKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgdm9pZCogKCpPcGFxdWVSb290Rm9yR0Mp
KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKICAgICB0
eXBlZGVmIHZvaWQgKCpJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlv
bikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICB0eXBlZGVmIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gKCpXcmFwT2JqZWN0RnVuY3Rpb24pKHZvaWQqLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgZW51bSBXcmFwcGVyVHlwZVBy
b3RvdHlwZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLApAQCAtNzYsOCAr
NzcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
cmFwcGVyVHlwZUluZm8qPih2ODo6RXh0ZXJuYWw6OkNhc3QoKnR5cGVJbmZvV3JhcHBlciktPlZh
bHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAKKwogICAgICAgICBib29sIGVx
dWFscyhjb25zdCBXcmFwcGVyVHlwZUluZm8qIHRoYXQpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiB0aGlzID09IHRoYXQ7CkBAIC05MiwxNSArOTIsMTggQEAKIAogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1
bmN0aW9uKGlzb2xhdGUsIHdvcmxkVHlwZSk7IH0KLSAgICAgICAgCisKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZGVyZWZPYmplY3RGdW5jdGlvbikgCisgICAgICAgICAgICBpZiAo
ZGVyZWZPYmplY3RGdW5jdGlvbikKICAgICAgICAgICAgICAgICBkZXJlZk9iamVjdEZ1bmN0aW9u
KG9iamVjdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90bywg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpbnN0YWxs
UGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbikKQEAgLTEzNiw2ICsxMzksNyBA
QAogICAgICAgICBjb25zdCBJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5j
dGlvbiBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbjsKICAgICAg
ICAgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBwYXJlbnRDbGFzczsKICAgICAgICAgY29uc3QgV3Jh
cHBlclR5cGVQcm90b3R5cGUgd3JhcHBlclR5cGVQcm90b3R5cGU7CisgICAgICAgIGNvbnN0IFdy
YXBPYmplY3RGdW5jdGlvbiB3cmFwT2JqZWN0RnVuY3Rpb247CiAgICAgfTsKIAogICAgIGlubGlu
ZSB2b2lkKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckds
b2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxPYmplY3QobV9jb250ZXh0LmdldCgpKTsKICAgICBW
OERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8oaW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRv
dzo6aW5mbywgd2luZG93KTsKICAgICBpbm5lckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdp
bmRvd1dyYXBwZXIpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2lu
ZG93V3JhcHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHdpbmRvdywgJlY4
RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1
cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6aW5n
V2luZG93KGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQAogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoSFRNTEVs
ZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
ZVdyYXBwZXIoSFRNTEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSopOwogfTsKIAogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDdXN0b21FbGVt
ZW50Ojp0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDEzICs1NCwxMyBAQAogICAgIHJldHVybiAwOwogfQogCi12ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4SFRNTEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEhUTUxDdXN0b21FbGVt
ZW50OjpjcmVhdGVXcmFwcGVyKEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJU
KGltcGwpOwogCi0gICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0
b3IgPSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNvbnN0cnVjdG9yT2YoaW1wbC5nZXQoKSk7Cisg
ICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmNvbnN0cnVjdG9yT2YoaW1wbCk7CiAgICAgaWYgKCFjb25zdHJ1Y3Rv
cikgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlclZhbHVlID0gV2ViQ29y
ZTo6dG9WOCh0b0hUTUxVbmtub3duRWxlbWVudChpbXBsLmdldCgpKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9
IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICghd3JhcHBlclZhbHVlLklzRW1wdHkoKSAmJiB3cmFw
cGVyVmFsdWUtPklzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwpAQCAtNzAsNyArNzAsNyBAQAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZG4ndCBiZSBuZWVkZWQgb25jZSBlYWNoIGN1c3RvbSBlbGVtZW50IGhhcyBpdHMgb3duIEZ1bmN0
aW9uVGVtcGxhdGUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA4MTM4CiAgICAgaWYgKCFDdXN0b21FbGVtZW50SGVscGVyczo6aXNGZWF0dXJlQWxsb3dl
ZChjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpKSkgewotICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3Jl
YXRpb25Db250ZXh0LCAmVjhIVE1MRWxlbWVudDo6aW5mbywgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZWOEhUTUxFbGVtZW50OjppbmZvLCBpbXBs
LCBpc29sYXRlKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJlY4SFRNTEVs
ZW1lbnQ6OmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKQEAgLTg1LDcgKzg1LDcgQEAKICAgICBp
ZiAoIXR5cGVJbmZvKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwog
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVh
dGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgdHlwZUluZm8sIGltcGwuZ2V0KCksIGlzb2xhdGUp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBsLCBpc29sYXRlKTsKICAg
ICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQAogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0
cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2lu
KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcih4bWxIdHRwUmVx
dWVzdC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVu
dCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsNyBAQAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdl
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLQogICAgIFJlZlB0cjxNZXNzYWdlQ2hhbm5lbD4g
b2JqID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0KTsKLQogICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAogICAgIC8vIENyZWF0ZSByZWZl
cmVuY2VzIGZyb20gdGhlIE1lc3NhZ2VDaGFubmVsIHdyYXBwZXIgdG8gdGhlIHR3bwpAQCAtNTYs
OCArNTQsNyBAQAogICAgIC8vIHN0YXkgYWxpdmUgYXMgbG9uZyBhcyB0aGUgTWVzc2FnZUNoYW5u
ZWwgd3JhcHBlciBpcyBhcm91bmQuCiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVk
SGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MSIsIHRvVjgob2JqLT5wb3J0MSgpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgIFY4SGlkZGVuUHJvcGVydHlOYW1l
OjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDIiLCB0b1Y4KG9iai0+cG9y
dDIoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKLQotICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9iai5yZWxl
YXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdFBvaW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAg
IH0KICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4
LCB5KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1
cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3
cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERh
dGFWaWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNhbGwgdXNlZCB0byBj
b25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAgIFJlZlB0cjxEYXRh
Vmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihk
YXRhVmlldy5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4QXJyYXlCdWZmZXI6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250
ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogICAgIAogICAg
IC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1
ZGlvIGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5I
b2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1
ZGlvQ29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVsZWFzZSgpLmdldCgpLCAmaW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4SFRNTEltYWdlRWxlbWVudDo6ZGVyZWZPYmplY3Qs
IDAsIFY4SFRNTEltYWdlRWxlbWVudDo6dG9FdmVudFRhcmdldCwgMCwgVjhIVE1MSW1hZ2VFbGVt
ZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBl
T2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSwgVjhIVE1MSW1hZ2VFbGVtZW50OjpkZXJlZk9iamVjdCwgMCwgVjhIVE1MSW1hZ2VFbGVt
ZW50Ojp0b0V2ZW50VGFyZ2V0LCAwLCBWOEhUTUxJbWFnZUVsZW1lbnQ6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUsIDAg
fTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvck1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewpAQCAtNzcs
NyArNzcsNyBAQAogCiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTElt
YWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0
aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1h
Z2UucmVsZWFzZSgpLmdldCgpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgUmVmUHRyPERPTUZvcm1EYXRh
PiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9t
Rm9ybURhdGEucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVy
OwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcg
Kzc2LDcgQEAKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1v
cnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGlu
dG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKS5n
ZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5o
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyVmlld0N1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAgICAg
aWYgKGhhc0luZGV4ZXIpCiAgICAgICAgIGFyZ3MuSG9sZGVyKCktPlNldEluZGV4ZWRQcm9wZXJ0
aWVzVG9FeHRlcm5hbEFycmF5RGF0YShhcnJheS5nZXQoKS0+YmFzZUFkZHJlc3MoKSwgYXJyYXlU
eXBlLCBhcnJheS5nZXQoKS0+bGVuZ3RoKCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLmdldCgpLCB0
eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246Oklu
ZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjI0LDcgKzIyNCw3IEBA
CiAgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5
LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCkuZ2V0KCksIHR5cGUsIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBSZWZQdHI8TXV0YXRpb25D
YWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRl
eHQsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNl
cnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFz
ZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2Jz
ZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw3ICsxMjgsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNv
bnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQsIG1f
aXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihtX3dvcmtlckNvbnRleHQsIGNvbnRleHRU
eXBlLCBqc1dvcmtlckNvbnRleHQsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRl
cGVuZGVudCk7CiAKICAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJv
dG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Z2xvYmFsT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkds
b2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgc3RhdGljIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKiwgdjg6Oklzb2xhdGUqKTsKIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxU
PiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
LCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUpOworICAgICAgICBzdGF0aWMgaW5saW5l
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCosIFdy
YXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lKTsKICAgICAgICAgc3RhdGljIGlubGluZSB2b2lk
IHNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5cGVJbmZvKiwg
dm9pZCopOwogICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJOYXRpdmVJbmZvKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyopOwogCkBAIC04OSwxMiArODksMTMg
QEAKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
UGFzc1JlZlB0cjxUPiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCogb2JqZWN0LCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGlt
ZSkKICAgICB7Ci0gICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2JqZWN0Lmdl
dCgpKTsKKyAgICAgICAgb2JqZWN0LT5yZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgZnVuY3Rp
b24gZnJvbSBXcmFwcGVyVHlwZUluZm8uCisgICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwg
dHlwZSwgb2JqZWN0KTsKICAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7
Ci0gICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBidWlsZFdyYXBw
ZXJDb25maWd1cmF0aW9uKG9iamVjdC5nZXQoKSwgbGlmZXRpbWUpOwotICAgICAgICBET01EYXRh
U3RvcmU6OnNldFdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlciwgaXNvbGF0ZSwgY29u
ZmlndXJhdGlvbik7CisgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24g
PSBidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKG9iamVjdCwgbGlmZXRpbWUpOworICAgICAgICBE
T01EYXRhU3RvcmU6OnNldFdyYXBwZXIob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1
cmF0aW9uKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvTlBWOE9iamVjdC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvTlBWOE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKIAog
V3JhcHBlclR5cGVJbmZvKiBucE9iamVjdFR5cGVJbmZvKCkKIHsKLSAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvIHR5cGVJbmZvID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9i
amVjdFByb3RvdHlwZSB9OworICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIHR5cGVJbmZvID0geyAw
LCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwgMCB9OwogICAg
IHJldHVybiAmdHlwZUluZm87CiB9CiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzAwMiw2ICszMDAyLDggQEAKICAg
ICAgICAgICAgICdkb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oJywKICAgICAgICAgICAgICdkb20v
Tm9kZUl0ZXJhdG9yLmNwcCcsCiAgICAgICAgICAgICAnZG9tL05vZGVJdGVyYXRvci5oJywKKyAg
ICAgICAgICAgICdkb20vTm9kZUxpc3QuY3BwJywKKyAgICAgICAgICAgICdkb20vTm9kZUxpc3Qu
aCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSYXJlRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9Ob2RlUmFyZURhdGEuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCcsCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgU2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShlbWJlZFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEVtYmVkRWxlbWVudD4gSFRNTEVtYmVkRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHBhcmFtVGFnKSk7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBIVE1M
UGFyYW1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShiYXNlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQAogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSk7
CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+IEhUTUxPcHRHcm91cEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNyw2ICszMTcsOCBAQAogICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhY2FwdGlv
blByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgfQogI2VuZGlmCisKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlh
RWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAKICAgICBib29sIHZhbGlkKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgVmFsaWRpdHlTdGF0
ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpIHsg
fQorICAgIFZhbGlkaXR5U3RhdGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sKTsKIAog
ICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwogfTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaWYg
RU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKICAgICBzZXRIYXNDdXN0b21TdHlsZUNh
bGxiYWNrcygpOwogI2VuZGlmCisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQq
IGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogV2ViQ29yZS9odG1sL1JhZGlvTm9k
ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgOiBMaXZlTm9kZUxpc3Qocm9vdE5vZGUs
IFJhZGlvTm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzLCByb290Tm9kZS0+
aGFzVGFnTmFtZShmb3JtVGFnKSA/IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50IDogTm9kZUxp
c3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFJhZGlvTm9kZUxpc3Q6On5SYWRpb05vZGVMaXN0KCkKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MSHRtbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEh0bWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoaHRtbFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTEh0bWxFbGVtZW50PiBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGhyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShtYXBUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQAogICAgICwgbV9zaG91bGRSZWNhbGNMaXN0SXRlbXMoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2VsZWN0VGFnKSk7CisgICAgaW5pdFdyYXBw
YWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gSFRNTFNlbGVj
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogICAgICwgbV9jb21wb3Np
dGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGltZ1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgaWYgKGZvcm0pCiAgICAg
ICAgIGZvcm0tPnJlZ2lzdGVySW1nRWxlbWVudCh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAg
ICAgLCBtX2lzT3BlbihmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkZXRhaWxzVGFn
KSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZE5vdFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXBwbGV0VGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIAogICAgIG1fc2VydmljZVR5cGUgPSAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxl
dCI7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxGcmFtZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkaXJUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50PiBIVE1MRGlyZWN0b3J5
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogaW5saW5lIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OkhU
TUxEYXRhTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50
PiBIVE1MRGF0YUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gSFRN
TFRpdGxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgbV9mcmFtZUJvcmRlclNldChmYWxzZSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShmcmFtZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZyYW1lRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUobWVudVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiBIVE1MTWVudUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAKICAgICAsIG1fbm9yZXNpemUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJh
bWVzZXRUYWcpKTsKLSAgICAKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHNldEhhc0N1
c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9pc0FjdGl2YXRl
ZFN1Ym1pdChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShidXR0b25UYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50
PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxVTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZSh1bFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoaGVhZFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZSh0ZXh0YXJlYVRhZykpOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIo
dHJ1ZSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGV4
dEFyZWFFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0p
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGRsVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MRExpc3RFbGVtZW50PiBIVE1MRExpc3RFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTE1vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TE1vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBpbmxpbmUg
SFRNTE1vZEVsZW1lbnQ6OkhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1v
ZEVsZW1lbnQ+IEhUTUxNb2RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5n
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBpbmxpbmUgSFRNTEhlYWRp
bmdFbGVtZW50OjpIVE1MSGVhZGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSGVh
ZGluZ0VsZW1lbnQ+IEhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogaW5s
aW5lIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MVGFibGVQ
YXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBIVE1MVGFibGVDZWxsRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Y3JlYXRlZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGF1ZGlvVGFnKSk7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50
PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QAogaW5saW5lIEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OkhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogSFRNTFRlbXBsYXRlRWxlbWVudDo6fkhUTUxUZW1wbGF0ZUVsZW1lbnQoKQpJbmRleDogV2Vi
Q29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL1ZhbGlk
aXR5U3RhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiAKIFsKICAgICBP
bWl0Q29uc3RydWN0b3IsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSXNTY3JpcHRXcmFwcGFibGUKIF0gaW50ZXJmYWNl
IFZhbGlkaXR5U3RhdGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAg
dmFsdWVNaXNzaW5nOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgdHlw
ZU1pc21hdGNoOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSw3IEBACiAgICAgOiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlKHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGtl
eWdlblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAKICAgICAvLyBDcmVhdGUgYSBz
ZWxlY3QgZWxlbWVudCB3aXRoIG9uZSBvcHRpb24gZWxlbWVudCBmb3IgZWFjaCBrZXkgc2l6ZS4K
ICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgLCBtX3BhZGRpbmcoMSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0YWJsZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAorVmFsaWRpdHlTdGF0ZTo6VmFsaWRpdHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNv
bnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpCit7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsK
K30KKwogU3RyaW5nIFZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZGF0aW9uTWVzc2FnZSgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShiYXNlZm9udFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTEJhc2VGb250RWxlbWVudD4gSFRNTEJhc2VGb250RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBh
bHJlYWR5U3RhcnRlZCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzY3JpcHRUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50
PiBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVh
ZHlTdGFydGVkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2JqZWN0VGFn
KSk7CiAgICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50Ojp+SFRN
TE9iamVjdEVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb250VGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRm9udEVsZW1lbnQ+IEhUTUxGb250RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NiArNTYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUobGFiZWxUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEJSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGJyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
QlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1
Nyw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob3B0aW9uVGFnKSk7CiAgICAgc2V0SGFz
Q3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogewogICAgIExPRyhNZWRpYSwgIkhUTUxTb3Vy
Y2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoc291cmNlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gSFRNTFNvdXJjZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICAgICAsIG1fZGVmYXVsdFZhbHVlKCIiKQogICAgICwgbV90b2tlbnMoRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OmNyZWF0ZSgpKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTE91dHB1dEVsZW1lbnQ+IEhUTUxPdXRwdXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1l
bnQqIGZvcm0pCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDcgQEAKICAgICA6IEhUTUxNZWRpYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh2aWRlb1RhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFZpZGVvRWxl
bWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxPTGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAg
ICAsIG1fc2hvdWxkUmVjYWxjdWxhdGVJdGVtQ291bnQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUob2xUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDYgKzc0LDcgQEAKICAgICAsIG1fcGVuZGluZ1NoZWV0VHlwZShOb25lKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGxpbmtUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gSFRNTExpbmtFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0
ZWRCeVBhcnNlcikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50
LCB0aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcnF1ZWVUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gSFRN
TE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw2ICs4MSw3IEBACiAjZW5kaWYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShm
b3JtVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQAogICAgICwgbV9zaGFwZShVbmtub3duKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGFy
ZWFUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxB
cmVhRWxlbWVudD4gSFRNTEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgLCBtX2xpbmtSZWxh
dGlvbnMoMCkKICAgICAsIG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoKDApCiB7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gSFRNTEFu
Y2hvckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAKICAgICAs
IG1fZGlkQ2xlYXJJbWFnZUJ1ZmZlcihmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShj
YW52YXNUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxDYW52YXNFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDogSFRNTFRhYmxlUGFydEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhU
TUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MUHJlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
UHJlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIGlubGluZSBI
VE1MUHJlRWxlbWVudDo6SFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUHJl
RWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDcgQEAKIEhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2Us
IHRydWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICBjbGVhclhNTFZlcnNpb24o
KTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX3ZhbHVlKDApCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUocHJvZ3Jlc3NUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojp+SFRNTFByb2dyZXNzRWxlbWVudCgpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHBUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogaW5s
aW5lIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1M
VGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogICAgIDogTGFiZWxhYmxlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZXRlclRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEhUTUxNZXRlckVsZW1lbnQ6On5IVE1MTWV0ZXJFbGVt
ZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUocVRhZykgfHwgaGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUXVvdGVFbGVt
ZW50PiBIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgLCBtX2RvY3VtZW50
VmVyc2lvbigwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRmllbGRTZXRFbGVtZW50
PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KHNwYW5UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxTcGFuRWxlbWVudD4gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxM
SUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsaVRhZykpOworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
RGl2RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGl2VGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ29sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAK
ICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9z
cGFuKDEpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
VGFibGVDb2xFbGVtZW50PiBIVE1MVGFibGVDb2xFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxNZXRhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZXRh
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZXRhVGFn
KSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWV0YUVs
ZW1lbnQ+IEhUTUxNZXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYm9keVRhZykpOworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBIVE1MQm9k
eUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGVn
ZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGVn
ZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxl
Z2VuZFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TExlZ2VuZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxEaWFsb2dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERpYWxv
Z0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERpYWxv
Z0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkaWFs
b2dUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxE
aWFsb2dFbGVtZW50PiBIVE1MRGlhbG9nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogICAgICwgbV9zY29wZWRT
dHlsZVJlZ2lzdHJhdGlvblN0YXRlKE5vdFJlZ2lzdGVyZWQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoc3R5bGVUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBIVE1MU3R5
bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRy
YWNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAKIHsKICAgICBMT0coTWVkaWEs
ICJIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tFbGVtZW50IC0gJXAiLCB0aGlzKTsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZSh0cmFja1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIEhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoY2FwdGlvblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw2ICs0MCw3IEBACiAgICAgLCBtX3N2Z0xvYWRFdmVudFRpbWVyKHRoaXMsICZTVkdFbGVt
ZW50OjpzdmdMb2FkRXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpzdHlsZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFNWR1N0
eWxlRWxlbWVudDo6flNWR1N0eWxlRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAgICAsIG1fcihMZW5ndGhNb2Rl
T3RoZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykpOwor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdDaXJjbGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogICAgICwgbV9zcGFjaW5nKFNW
R1RleHRQYXRoU3BhY2luZ0V4YWN0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0ZXh0UGF0aFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UGF0aEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBACiB7CiAgICAgc2V0Q2FsY01vZGUoQ2FsY01vZGVQYWNlZCk7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoYW5pbWF0ZU1vdGlvblRhZykpOworICAgIGluaXRXcmFwcGFibGUo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ+IFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdo
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdG
RUxpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6ZmVEaXN0YW50TGlnaHRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudD4gU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAgICAgLCBtX3NwZWNpZmllZFRleHRM
ZW5ndGgoTGVuZ3RoTW9kZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRq
dXN0U3BhY2luZykKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dENvbnRlbnRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgICwgbV9zdGRE
ZXZpYXRpb25ZKDIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRHJvcFNo
YWRvd1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdGRURyb3BTaGFkb3dFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAog
ICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICwgbV9ncmFkaWVu
dFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKIHsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHR3JhZGllbnRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRGVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhE
ZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhEZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6YWx0R2x5cGhEZWZUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPFNWR0FsdEdseXBoRGVmRWxlbWVudD4gU1ZHQWx0R2x5cGhEZWZFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgICAgLCBtX3R5cGUoU1ZHVHJh
bnNmb3JtOjpTVkdfVFJBTlNGT1JNX1VOS05PV04pCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50PiBTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZykpOworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAg
LCBtX19vcGVyYXRvcihGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZykpOworICAgIGluaXRXcmFwcGFibGUo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSw3IEBACiAgICAgLCBtX2lzQW5pbVZhbE9ic2VydmVkKGZhbHNlKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXRoVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdGhFbGVtZW50KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6aGtlcm5UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0hLZXJuRWxlbWVudD4gU1ZHSEtlcm5FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCgpOwogfQogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNZXJnZVRhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVNZXJnZUVs
ZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgLCBtX2FuaW1hdGVkUHJvcGVy
dHlUeXBlKEFuaW1hdGVkU3RyaW5nKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpIHx8IGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5p
bWF0ZVRyYW5zZm9ybVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZUVsZW1lbnQ+IFNWR0FuaW1hdGVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykpOworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUNvbG9yTWF0cml4RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKICAgICAsIG1faW1hZ2VMb2FkZXIodGhp
cykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
SW1hZ2VFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogICAgICwgbV90eXBl
KEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQAogICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dEVsZW1l
bnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw2ICs1OSw3IEBACiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRWxsaXBzZUVs
ZW1lbnQoKTsKIH0gICAgCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
YWx0R2x5cGhJdGVtVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdBbHRHbHlwaEl0ZW1FbGVtZW50PiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAgICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVGdW5jQkVs
ZW1lbnQ+IFNWR0ZFRnVuY0JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw2ICs2Nyw3IEBACiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YVRhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1fZHkoMCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z2x5cGhSZWZUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR2x5cGhS
ZWZFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dGl0bGVUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RpdGxlRWxlbWVudD4g
U1ZHVGl0bGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgLCBtX2ZvbnRFbGVtZW50KDApCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVEZWNsYXJhdGlvbiA9IFN0
eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShDU1NTdHJpY3RNb2RlKTsKICAgICBtX2ZvbnRGYWNlUnVs
ZS0+c2V0UHJvcGVydGllcyhzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRfZmFjZV9uYW1lVGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVt
ZW50PiBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5j
UkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jUlRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVGdW5jUkVsZW1lbnQ+IFNWR0ZFRnVuY1JFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2
Zy9TVkdab29tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAg
OiBtX25ld1NjYWxlKDAuMGYpCiAgICAgLCBtX3ByZXZpb3VzU2NhbGUoMC4wZikKIHsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBGbG9hdFJlY3QgU1ZHWm9vbUV2ZW50Ojp6b29tUmVj
dFNjcmVlbigpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21wb25lbnRU
cmFuc2ZlclRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
c3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnZrZXJuVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdWS2VybkVsZW1lbnQ+IFNWR1ZLZXJuRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogICAg
IC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZl
Y3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3Bl
YzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVm
ZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlckVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdQb2x5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWxpbmVUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BvbHlsaW5lRWxlbWVu
dD4gU1ZHUG9seWxpbmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgOiBTVkdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFj
ZV91cmlUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0ZvbnRGYWNlVXJpRWxlbWVudD4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNUGF0
aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgOiBTVkdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjptcGF0aFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdNUGF0aEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50PiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAgICAgLCBtX2NhbGNN
b2RlKENhbGNNb2RlTGluZWFyKQogICAgICwgbV9hbmltYXRpb25Nb2RlKE5vQW5pbWF0aW9uKQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdBbmltYXRpb25FbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsNyBAQAogICAgICwgbV9zdXJmYWNlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnKSk7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHR0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6Z1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdHRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAKICAgICAsIG1fdGltZUNv
bnRhaW5lcihTTUlMVGltZUNvbnRhaW5lcjo6Y3JlYXRlKHRoaXMpKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU1ZHRWxlbWVudCgpOwogICAgIGRv
Yy0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogfQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdGRUxpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVTcG90TGlnaHRUYWcpKTsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFU3BvdExpZ2h0
RWxlbWVudD4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N3aXRjaEVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgLCBtX3N1cmZhY2VTY2Fs
ZSgxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGlu
Z1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBACiB7CiAgICAgQVNTRVJU
KGhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCkpOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjp1c2VUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ+
IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fY2xpcFBhdGhVbml0
cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNsaXBQYXRoVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0NsaXBQYXRoRWxl
bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDcgQEAKICAgICAsIG1faXNHbHlwaENhY2hlVmFsaWQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9udEVsZW1lbnQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAgICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVG
dW5jQVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZH
RkVGdW5jQUVsZW1lbnQ+IFNWR0ZFRnVuY0FFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgLCBtX3koTGVuZ3Ro
TW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y3Vyc29yVGFn
KSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0N1cnNvckVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVDb2xvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAg
ICAgOiBTVkdBbmltYXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlQ29sb3JFbGVtZW50PiBTVkdBbmlt
YXRlQ29sb3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw2ICs4Miw3IEBACiAgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdHRlcm5FbGVtZW50KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogU1ZHRWxl
bWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6IFN0eWxl
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOwogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAK
ICAgICAsIG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6bGluZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVJbWFnZVRhZykpOworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUltYWdlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNy
Y0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3Jj
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9m
YWNlX3NyY1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHRm9udEZhY2VTcmNFbGVtZW50PiBTVkdGb250RmFjZVNyY0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFNWR0RvY3VtZW50OjpTVkdEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICA6IERvY3VtZW50KGZyYW1l
LCB1cmwsIGZhbHNlLCBmYWxzZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBT
VkdTVkdFbGVtZW50KiBTVkdEb2N1bWVudDo6cm9vdEVsZW1lbnQoKSBjb25zdApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAg
ICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRmxvb2RUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRmxvb2RFbGVtZW50
PiBTVkdGRUZsb29kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dHNw
YW5UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RT
cGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVj
dEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgLCBtX3N2Z0xvYWRFdmVudFRpbWVyKHRoaXMsICZT
VkdFbGVtZW50OjpzdmdMb2FkRXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU2NyaXB0RWxlbWVudCgpOwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNHVGFn
KSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNH
RWxlbWVudD4gU1ZHRkVGdW5jR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEZXNjRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmRlc2NUYWcp
KTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVt
ZW50PiBTVkdEZXNjRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogewogICAgIHNldEFuaW1hdGlvbk1vZGUoVG9BbmltYXRpb24pOwog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1NldEVsZW1lbnQ+IFNWR1NldEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fX29wZXJhdG9yKEZFTU9SUEhPTE9HWV9P
UEVSQVRPUl9FUk9ERSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3Jw
aG9sb2d5VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3IvZnIgYXR0
cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAi
NTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmFk
aWFsR3JhZGllbnRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNiArNjIsNyBAQAogICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykpOwor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdGb3JlaWduT2JqZWN0RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAKIHsKICAgICAvLyBTcGVjOiBJ
ZiB0aGUgbWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFya2VyRWxl
bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw2ICsxMzYsNyBAQAogICAgICwgbV90YXJnZXRMaXN0ZW5lcihTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0cmVmVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR1RSZWZFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVRpbGVUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUaWxlRWxl
bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdseXBoVGFnKSk7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdHbHlwaEVsZW1lbnQ+IFNWR0ds
eXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogICAgIDogU1ZHUG9seUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BvbHlnb25FbGVtZW50
PiBTVkdQb2x5Z29uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQAogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlz
IG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2Vy
ZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdNYXNrRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5
LDcgQEAKICAgICAsIG1fZWRnZU1vZGUoRURHRU1PREVfRFVQTElDQVRFKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbnZvbHZlTWF0cml4VGFnKSk7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VG
b3JtYXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VGb3JtYXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShmb250X2ZhY2VfZm9ybWF0VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ+IFNWR0ZvbnRGYWNlRm9ybWF0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNiArNTcsNyBAQAogICAgICwgbV9hbXBsaXR1ZGUoMSkKICAgICAsIG1fZXhwb25lbnQoMSkK
IHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBACiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaFRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdB
bHRHbHlwaEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiB7CiAg
ICAgLy8gU3BlYzogSWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZm
ZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykpOworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFT2Zmc2V0RWxlbWVudCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDYgKzcyLDcgQEAKIFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBl
IGNvbnN0cnVjdGlvblR5cGUpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
b25zdHJ1Y3Rpb25UeXBlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0Rl
ZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIDogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmRlZnNUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRGVmc0VsZW1lbnQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAgICAgLCBtX3lDaGFu
bmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZURpc3BsYWNlbWVudE1hcFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBACiAgICAgLCBtX21vZGUoRkVCTEVORF9NT0RFX05PUk1BTCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRhZykpOworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUJsZW5k
RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykpOwor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdTeW1ib2xFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2
aWV3VGFyZ2V0QXR0cikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1Rh
ZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdWaWV3RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNZXRh
ZGF0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
Om1ldGFkYXRhVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdNZXRhZGF0YUVsZW1lbnQ+IFNWR01ldGFkYXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9vZmZzZXQo
MCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3RvcFRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdT
dG9wRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDggQEAKICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAogICAgIEpTQ3VzdG9t
TWFya0Z1bmN0aW9uLAogICAgIEV2ZW50VGFyZ2V0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAg
ICBKU05vU3RhdGljVGFibGVzLAorICAgIElzU2NyaXB0V3JhcHBhYmxlCiBdIGludGVyZmFjZSBY
TUxIdHRwUmVxdWVzdCB7CiAgICAgLy8gRnJvbSBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0CiAg
ICAgLy8gZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQAogI2lmbmRlZiBOREVCVUcKICAgICB4bWxI
dHRwUmVxdWVzdENvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBYTUxIdHRwUmVxdWVzdDo6flhNTEh0dHBSZXF1ZXN0KCkKSW5kZXg6IFdl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vz
c2luZ0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBBdWRpb1By
b2Nlc3NpbmdFdmVudDo6QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjpBdWRpb1Byb2Nlc3NpbmdFdmVu
dChQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBpbnB1dEJ1ZmZlciwgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlcj4gb3V0cHV0QnVmZmVyKQpAQCAtNTIsNiArNTMsNyBAQAogICAgICwgbV9pbnB1dEJ1ZmZl
cihpbnB1dEJ1ZmZlcikKICAgICAsIG1fb3V0cHV0QnVmZmVyKG91dHB1dEJ1ZmZlcikKIHsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6fkF1ZGlv
UHJvY2Vzc2luZ0V2ZW50KCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOCBAQAog
WwogICAgIENvbmRpdGlvbmFsPUdFT0xPQ0FUSU9OLCAKICAgICBKU0dlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEZyYW1lLAotICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIE9taXRDb25zdHJ1Y3RvciwK
KyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgR2VvbG9jYXRpb24gewogICAgIFtD
dXN0b21dIHZvaWQgZ2V0Q3VycmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gUG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssCkluZGV4OiBXZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0NCw2ICsyNDQsNyBAQAogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCiAgICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKIHsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBHZW9sb2NhdGlvbjo6fkdlb2xvY2F0aW9uKCkKSW5kZXg6IFdl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogICAgICwgbV9l
cnJvcihlcnJvcikKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFNwZWVjaFJlY29nbml0
aW9uRXJyb3JJbml0JiBpbml0aWFsaXplcikKQEAgLTg1LDYgKzg2LDcgQEAKICAgICAsIG1fZXJy
b3IoaW5pdGlhbGl6ZXIuZXJyb3IpCiAgICAgLCBtX21lc3NhZ2UoaW5pdGlhbGl6ZXIubWVzc2Fn
ZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OmludGVyZmFjZU5hbWUoKSBjb25zdApJbmRleDogV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNFdmVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIFNwZWVjaFN5bnRoZXNp
c0V2ZW50OjpTcGVlY2hTeW50aGVzaXNFdmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKIH0KIAogU3BlZWNoU3ludGhlc2lzRXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGZsb2F0IGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJl
c3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIFBh
c3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCwgc2hvcnQgcmVzdWx0SW5k
ZXgsIFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5
KQpAQCAtODUsNiArODYsNyBAQAogICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1
bHRIaXN0b3J5KHJlc3VsdEhpc3RvcnkpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cykKQEAgLTky
LDYgKzk0LDcgQEAKICAgICAsIG1fcmVzdWx0SW5kZXgocmVzdWx0SW5kZXgpCiAgICAgLCBtX3Jl
c3VsdHMoU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykpCiB7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNw
ZWVjaFJlY29nbml0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9
SU5ERVhFRF9EQVRBQkFTRSwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIFY4Tm9XcmFwcGVy
Q2FjaGUsCi0gICAgSlNOb1N0YXRpY1RhYmxlcworICAgIEpTTm9TdGF0aWNUYWJsZXMsCiBdIGlu
dGVyZmFjZSBJREJBbnkgewogICAgIC8vIFRoaXMgc3BhY2UgaXMgaW50ZW50aW9uYWxseSBsZWZ0
IGJsYW5rLgogfTsKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsOCBAQAogCiBbCiAgICAgQ29uZGl0aW9u
YWw9SU5ERVhFRF9EQVRBQkFTRSwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRp
Y1RhYmxlcywKKyAgICBJc1NjcmlwdFdyYXBwYWJsZQogXSBpbnRlcmZhY2UgSURCQ3Vyc29yIHsK
IAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyZWN0aW9uOwpJbmRleDogV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw3IEBACiAgICAgQVNTRVJUKG1fcmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fc291
cmNlLT50eXBlKCkgPT0gSURCQW55OjpJREJPYmplY3RTdG9yZVR5cGUgfHwgbV9zb3VyY2UtPnR5
cGUoKSA9PSBJREJBbnk6OklEQkluZGV4VHlwZSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24p
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIElEQkN1cnNvcjo6fklEQkN1cnNvcigp
CkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICAgICAsIG1fb2xkVmVyc2lvbihvbGRWZXJzaW9uKQogICAgICwgbV9uZXdWZXJzaW9u
KG5ld1ZlcnNpb24pCiB7CisgICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIElEQlZlcnNp
b25DaGFuZ2VFdmVudDo6fklEQlZlcnNpb25DaGFuZ2VFdmVudCgpCkluZGV4OiBXZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIElEQkN1cnNvcldpdGhWYWx1ZTo6
SURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIDogSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFu
c2FjdGlvbikKIHsKKyAgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogSURCQ3Vyc29yV2l0
aFZhbHVlOjp+SURCQ3Vyc29yV2l0aFZhbHVlKCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsMTggKzU0LDIxIEBACiAKIE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3Ry
ZWFtRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFt
RXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0p
CiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3N0cmVh
bShzdHJlYW0pCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1F
dmVudDo6TWVkaWFTdHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhU3RyZWFtRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRp
YWxpemVyKQogICAgICwgbV9zdHJlYW0oaW5pdGlhbGl6ZXIuc3RyZWFtKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6On5NZWRpYVN0cmVhbUV2ZW50
KCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIg
KzQ1LDE0IEBACiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoKQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OlJU
Q0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsKQog
ICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jaGFubmVs
KGNoYW5uZWwpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUlRDRGF0YUNoYW5u
ZWxFdmVudDo6flJUQ0RhdGFDaGFubmVsRXZlbnQoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTQgQEAKIAogTWVkaWFTdHJl
YW1UcmFja0V2ZW50OjpNZWRpYVN0cmVhbVRyYWNrRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6TWVkaWFTdHJlYW1UcmFja0V2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjaykKICAgICA6IEV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fdHJhY2sodHJhY2spCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojp+TWVkaWFT
dHJlYW1UcmFja0V2ZW50KCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GVG9uZUNoYW5nZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDIxIEBACiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29u
c3QgU3RyaW5nJiB0b25lKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVu
dCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV90b25lKHRvbmUpCiB7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VF
dmVudChjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAg
OiBFdmVudChldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50LCBpbml0aWFsaXplcikKICAgICAs
IG1fdG9uZShpbml0aWFsaXplci50b25lKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKSW5k
ZXg6IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0
ZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1
LDE0IEBACiAKIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCiB7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OlJU
Q0ljZUNhbmRpZGF0ZUV2ZW50KGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBjYW5kaWRhdGUpCiAgICAgOiBFdmVudChldmVudE5hbWVz
KCkuaWNlY2FuZGlkYXRlRXZlbnQsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fY2Fu
ZGlkYXRlKGNhbmRpZGF0ZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBSVENJ
Y2VDYW5kaWRhdGVFdmVudDo6flJUQ0ljZUNhbmRpZGF0ZUV2ZW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192977</attachid>
            <date>2013-03-13 13:10:57 -0700</date>
            <delta_ts>2013-03-14 17:12:16 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>awesome_2.txt</filename>
            <type>text/plain</type>
            <size>156770</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDE0NTAyNikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDcgKzIwNiw3IEBACiAgICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAg
ICAgIF0sCiAgICAgICB9XSwKLSAgICAgIFsnT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiJywgewor
ICAgICAgWydPUz09Im1hYyInLCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAg
ICAgICAgIyA4Qml0IHRleHQgcnVucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgYWxsIHBsYXRmb3Jt
cyB3ZWJraXQub3JnL2IvMTExMzQ4CiAgICAgICAgICAgJ0VOQUJMRV84QklUX1RFWFRSVU49MScs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogICAgICwgbV9sYXN0U3RhdGVPYmpl
Y3RSZXF1ZXN0ZWQoMCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiB1bnNpZ25l
ZCBIaXN0b3J5OjpsZW5ndGgoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihG
cmFtZSogZnJhbWUpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBOYXZpZ2F0b3I6On5OYXZpZ2F0b3IoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBMb2Nh
dGlvbjo6TG9jYXRpb24oRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJh
bWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogaW5saW5lIGNvbnN0IEtVUkwm
IExvY2F0aW9uOjp1cmwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAgICAgLCBtX3VzZXJUaW1pbmco
MCkKICNlbmRpZiAvLyBFTkFCTEUoVVNFUl9USU1JTkcpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogUGVyZm9ybWFuY2U6On5QZXJmb3JtYW5jZSgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAKIENvbnNvbGU6OkNvbnNv
bGUoRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQ29uc29sZTo6fkNvbnNvbGUoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ3J5cHRvLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAKIENyeXB0bzo6
Q3J5cHRvKCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiB2b2lkIENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0JKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsMTMgKzUw
NCwxMSBAQAogCiAgICAgbXkgJG5vVG9WOCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJTdXBwcmVzc1RvSlNPYmplY3QifTsKICAgICBteSAkbm9XcmFwID0gJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Tm9XcmFwcGVyQ2FjaGUifSB8fCAkbm9Ub1Y4OwotICAg
IGlmICghJG5vV3JhcCkgewotICAgICAgICBteSAkY3JlYXRlV3JhcHBlckFyZ3VtZW50VHlwZSA9
IEdldFBhc3NSZWZQdHJUeXBlKCRuYXRpdmVUeXBlKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOworCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpIGlmICEkbm9X
cmFwOwogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoJHtuYXRpdmVUeXBl
fSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoJHtjcmVh
dGVXcmFwcGVyQXJndW1lbnRUeXBlfSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRlV3JhcHBlcigke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiBFTkQKLSAgICB9CiAKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCA8PEVORCk7CiB9OwpAQCAtNTMzLDcgKzUzMSw2IEBACiB9CiBFTkQKICAgICB9
IGVsc2UgewotCiAgICAgICAgIG15ICRjcmVhdGVXcmFwcGVyQ2FsbCA9ICRjdXN0b21XcmFwID8g
IiR7djhJbnRlcmZhY2VOYW1lfTo6d3JhcCIgOiAiJHt2OEludGVyZmFjZU5hbWV9OjpjcmVhdGVX
cmFwcGVyIjsKICAgICAgICAgbXkgJHJldHVybmluZ1dyYXBwZXIgPSAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6dG9G
dW5jdGlvbih3cmFwcGVyKSIgOiAid3JhcHBlciI7CiAgICAgICAgIG15ICRyZXR1cm5pbmdDcmVh
dGVkV3JhcHBlck9wZW5pbmcgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhX
cmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6dG9GdW5jdGlvbigiIDogIiI7CkBAIC01
NTEsNiArNTQ4LDEwIEBACiB7CiAgICAgQVNTRVJUKGltcGwpOwogICAgIEFTU0VSVChET01EYXRh
U3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKKyAgICBpZiAoU2Ny
aXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChpbXBsKSkgeworICAgICAg
ICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSBTY3JpcHRXcmFwcGFibGU6OmdldFR5cGVJ
bmZvRnJvbU9iamVjdChpbXBsKTsKKyAgICAgICAgcmV0dXJuIGluZm8tPndyYXBPYmplY3RGdW5j
dGlvbihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIH0KICAgICByZXR1cm4g
JHtyZXR1cm5pbmdDcmVhdGVkV3JhcHBlck9wZW5pbmd9JGNyZWF0ZVdyYXBwZXJDYWxsKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSkke3JldHVybmluZ0NyZWF0ZWRXcmFwcGVyQ2xvc2lu
Z307CiB9CiBFTkQKQEAgLTIwMTYsNyArMjAxNyw3IEBACiAKICAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxl
YXNlKCkuZ2V0KCksICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0
SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4g
d3JhcHBlcjsKIEVORAogCkBAIC0yMDg2LDcgKzIwODcsNyBAQAogICAgIFJlZlB0cjwke2ludGVy
ZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0eXBlLCBldmVudElu
aXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJl
bGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgpLmdldCgpLCAmVjgk
e2ludGVyZmFjZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiBFTkQK
QEAgLTIxNzIsNyArMjE3Myw3IEBACiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVyVHlwZUluZm8gJHt2OElu
dGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yOjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRv
QWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9Ojpp
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0
UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0
b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwg
JHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9F
dmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewpAQCAtMjIzMCw3ICsyMjMxLDcg
QEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmJHt2OEludGVyZmFj
ZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLmdldCgpLCAmJHt2OEludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBA
IC0yNjYzLDYgKzI2NjQsNyBAQAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJCaW5kaW5nU3RhdGUu
aCIpOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDb250ZXh0RmVhdHVyZXMuaCIpOwogICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKKyAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0V3JhcHBhYmxlLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
VjhCaW5kaW5nLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01XcmFwcGVyLmgiKTsK
IApAQCAtMjcyMywxNiArMjcyNSwzMyBAQAogCiBFTkQKIAotCiAgICAgbXkgJHBhcmVudENsYXNz
SW5mbyA9ICRwYXJlbnRDbGFzcyA/ICImJHtwYXJlbnRDbGFzc306OmluZm8iIDogIjAiOwotCiAg
ICAgbXkgJFdyYXBwZXJUeXBlUHJvdG90eXBlID0gJGludGVyZmFjZS0+aXNFeGNlcHRpb24gPyAi
V3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSIgOiAiV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUi
OworICAgIG15ICRub1dyYXAgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhO
b1dyYXBwZXJDYWNoZSJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBw
cmVzc1RvSlNPYmplY3QifTsKKyAgICBteSAkd3JhcHBlckZ1bmN0aW9uID0gJG5vV3JhcCA/ICIw
IiA6ICJyZWludGVycHJldF9jYXN0PFdyYXBPYmplY3RGdW5jdGlvbj4oJHt2OEludGVyZmFjZU5h
bWV9OjpjcmVhdGVXcmFwcGVyKSI7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
IldyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNlTmFtZX06OmluZm8gPSB7ICR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZGVyZWZPYmplY3QsICR0
b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJnZXQsICRyb290Rm9yR0MsICR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAkcGFyZW50Q2xh
c3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUgfTtcblxuIik7Ci0gICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICJuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWwge1xu
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOworV3JhcHBlclR5
cGVJbmZvICR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbyA9IHsgJHt2OEludGVyZmFjZU5hbWV9OjpH
ZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9N
T2JqZWN0LCAkdG9FdmVudFRhcmdldCwgJHJvb3RGb3JHQywgJHt2OEludGVyZmFjZU5hbWV9Ojpp
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsICRwYXJlbnRDbGFzc0luZm8sICRX
cmFwcGVyVHlwZVByb3RvdHlwZSwgJHt3cmFwcGVyRnVuY3Rpb259IH07CiAKLSAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgInRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShU
KSB7IH1cblxuIik7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQp
IGlmICEkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZU5h
bWUpOwordGVtcGxhdGU8PiB2b2lkIGluaXRXcmFwcGFibGU8JHtpbnRlcmZhY2VOYW1lfT4oJHtp
bnRlcmZhY2VOYW1lfSogb2JqZWN0KQoreworICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBw
ZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkpCisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6
c2V0VHlwZUluZm9Jbk9iamVjdChvYmplY3QsICYke3Y4SW50ZXJmYWNlTmFtZX06OmluZm8pOwor
fQogCit0ZW1wbGF0ZSB2b2lkIGluaXRXcmFwcGFibGU8JHtpbnRlcmZhY2VOYW1lfT4oJHtpbnRl
cmZhY2VOYW1lfSopOyAvLyBFeHBsaWNpdCBpbnN0YW50aWF0aW9uLgorCitFTkQKKworICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCA8PEVORCk7CituYW1lc3BhY2UgJHtpbnRlcmZhY2VO
YW1lfVY4SW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkg
eyB9CisKK0VORAorCiAgICAgbXkgJGhhc0NvbnN0cnVjdG9ycyA9IDA7CiAgICAgbXkgJGhhc1Jl
cGxhY2VhYmxlID0gMDsKIApAQCAtMzU0NiwxMCArMzU2NSwxMCBAQAogCiAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke3Y4SW50ZXJmYWNl
TmFtZX06OmNyZWF0ZVdyYXBwZXIoJHtjcmVhdGVXcmFwcGVyQXJndW1lbnRUeXBlfSBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3Jh
cHBlcigke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgQVNTRVJUKGltcGwuZ2V0KCkp
OwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbC5nZXQoKSwgaXNvbGF0
ZSkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoaW1wbCk7CisgICAgQVNTRVJUKERPTURhdGFTdG9y
ZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogRU5ECiAKICAgICBteSAk
dnRhYmxlTmFtZUdudSA9IEdldEdudVZUYWJsZU5hbWVGb3JJbnRlcmZhY2UoJGludGVyZmFjZSk7
CkBAIC0zNTYxLDcgKzM1ODAsNyBAQAogRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpIGlmICgkYmFzZVR5cGUgbmUgJGludGVyZmFjZU5hbWUpOwotICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8JHtiYXNlVHlwZX0qPihpbXBsLmdldCgpKSkgPT0gc3Rh
dGljX2Nhc3Q8dm9pZCo+KGltcGwuZ2V0KCkpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PCR7YmFzZVR5cGV9Kj4oaW1wbCkpID09IHN0YXRpY19jYXN0PHZvaWQq
PihpbXBsKSk7CiBFTkQKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZh
Y2UoJGludGVyZmFjZSwgIkRvY3VtZW50IikpIHsKQEAgLTM1NjksNyArMzU4OCw3IEBACiAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5z
Y3JpcHQoKS0+aW5pdGlhbGl6ZU1haW5Xb3JsZCgpKSB7CiAgICAgICAgICAgICAvLyBpbml0aWFs
aXplTWFpbldvcmxkIG1heSBoYXZlIGNyZWF0ZWQgYSB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LCBy
ZXRyeSBmcm9tIHRoZSBzdGFydC4KLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLmdldCgpLCBpc29sYXRlKTsK
KyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKTsKICAgICAgICAgICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgICAgIH0KQEAg
LTM1NzksMTEgKzM1OTgsMTEgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0
ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVX
cmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwsIGlzb2xhdGUpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0g
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xh
dGUpOworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLCBpc29s
YXRlKTsKICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGws
ICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRl
bnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NCwxMyArNTQsMTMgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEhUTUxDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhIVE1MQ3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihIVE1MRWxlbWVudCogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewogICAgIEFTU0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9m
KGltcGwuZ2V0KCkpOworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwpOwogICAg
IGlmICghY29uc3RydWN0b3IpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBw
ZXJWYWx1ZSA9IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbC5nZXQoKSks
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3cmFwcGVyVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZXJWYWx1ZS5J
c0VtcHR5KCkgJiYgd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBo
YXMgaXRzIG93biBGdW5jdGlvblRlbXBsYXRlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODEzOAogICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6
OmlzRmVhdHVyZUFsbG93ZWQoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSkpIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpj
cmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJlY4SFRNTEVsZW1lbnQ6OmluZm8sIGltcGwu
Z2V0KCksIGlzb2xhdGUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmVjhIVE1MRWxl
bWVudDo6aW5mbywgaW1wbCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGltcGwsICZWOEhUTUxFbGVtZW50OjppbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC04NSw3
ICs4NSw3IEBACiAgICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4
RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBs
LmdldCgpLCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCB0eXBlSW5mbywgaW1w
bCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDgg
QEAKICAgICAgICAgLy8gd2F5IGlzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHdyYXBwYWJsZSdzIHdy
YXBwZXIgaXMgdGhlIHNhbWUgYXMKICAgICAgICAgLy8gdGhlIGhvbGRlci4KICAgICAgICAgaWYg
KCghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkgJiYgaXNNYWluV29ybGRP
YmplY3Qob2JqZWN0KSkgfHwgaG9sZGVyQ29udGFpbnNXcmFwcGVyKGNvbnRhaW5lciwgaG9sZGVy
KSkgewotICAgICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9i
amVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVj
dCk7CisgICAgICAgICAgICBpZiAoU2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJ
bk9iamVjdChvYmplY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBTY3JpcHRXcmFwcGFibGU6
OmdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gbWFpbldv
cmxkU3RvcmUoKS0+bV93cmFwcGVyTWFwLmdldChvYmplY3QpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBjdXJyZW50KGNvbnRhaW5lci5HZXRJc29sYXRlKCkpLT5nZXQob2JqZWN0KTsKQEAg
LTc2LDkgKzc2LDkgQEAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKICAgICB7Ci0gICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVj
dChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgaWYgKFNj
cmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01h
aW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFw
cGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNj
cmlwdFdyYXBwYWJsZTo6Z2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+Z2V0KG9iamVjdCk7CiAgICAgfQpAQCAt
ODYsOSArODYsOSBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQg
c2V0V3JhcHBlcihUKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQogICAgIHsKLSAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0
KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2JqZWN0KSkgeworICAgICAgICBpZiAoU2Ny
aXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFp
bldvcmxkT2JqZWN0KG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBw
ZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkgewotICAgICAgICAgICAgICAgIHNldFdy
YXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwor
ICAgICAgICAgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlckluT2JqZWN0KG9iamVj
dCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05OCw4ICs5OCw4IEBACiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQo
VCogb2JqZWN0KQogICAgIHsKLSAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZElu
T2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5Xb3JsZCkKLSAgICAgICAgICAgIHJldHVy
biBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICBpZiAoU2NyaXB0V3JhcHBh
YmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBNYWlu
V29ybGQpCisgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBhYmxlOjpnZXRXcmFwcGVyRnJv
bU9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gbV93cmFwcGVyTWFwLmdldChvYmplY3Qp
OwogICAgIH0KIApAQCAtMTExLDggKzExMSw4IEBACiAgICAgewogICAgICAgICBBU1NFUlQoISFv
YmplY3QpOwogICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgaWYg
KG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1h
aW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBl
ciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6
OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5Xb3Js
ZCkgeworICAgICAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVySW5PYmplY3Qob2Jq
ZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3JhcHBlciwg
Y29uZmlndXJhdGlvbik7CkBAIC0xMjAsOSArMTIwLDYgQEAKIAogICAgIHN0YXRpYyBET01EYXRh
U3RvcmUqIG1haW5Xb3JsZFN0b3JlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBtYWluV29ybGRXcmFw
cGVySXNTdG9yZWRJbk9iamVjdCh2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMg
Ym9vbCBtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqKSB7
IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMgYm9vbCBpc01haW5Xb3JsZE9iamVjdCh2b2lk
KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBpc01haW5Xb3JsZE9iamVjdChO
b2RlKikgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xMzEsNiArMTI4LDcgQEAKICAgICB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIb2xkZXJD
b250YWluZXI+CiAgICAgc3RhdGljIGJvb2wgaG9sZGVyQ29udGFpbnNXcmFwcGVyKGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBTY3JpcHRXcmFwcGFibGUqIHdyYXBwYWJsZSkKICAg
ICB7CkBAIC0xMzksMjUgKzEzNyw2IEBACiAgICAgICAgIHJldHVybiBjb250YWluZXIuSG9sZGVy
KCkgPT0gd3JhcHBhYmxlLT53cmFwcGVyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZyb21PYmplY3Qodm9pZCopCi0gICAgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKLSAgICB9Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3Jh
cHBlckZyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCi0gICAgewotICAgICAgICBy
ZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0V3Jh
cHBlckluT2JqZWN0KHZvaWQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSos
IGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3QoU2Ny
aXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQotICAgIHsKLSAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIGlzb2xhdGUs
IGNvbmZpZ3VyYXRpb24pOwotICAgIH0KLQogICAgIFdyYXBwZXJXb3JsZFR5cGUgbV90eXBlOwog
ICAgIERPTVdyYXBwZXJNYXA8dm9pZD4gbV93cmFwcGVyTWFwOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQAogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVl
c3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKIAog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5y
ZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1l
c3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsNyBAQAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLQogICAgIFJlZlB0cjxN
ZXNzYWdlQ2hhbm5lbD4gb2JqID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0KTsKLQog
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAogICAg
IC8vIENyZWF0ZSByZWZlcmVuY2VzIGZyb20gdGhlIE1lc3NhZ2VDaGFubmVsIHdyYXBwZXIgdG8g
dGhlIHR3bwpAQCAtNTYsOCArNTQsNyBAQAogICAgIC8vIHN0YXkgYWxpdmUgYXMgbG9uZyBhcyB0
aGUgTWVzc2FnZUNoYW5uZWwgd3JhcHBlciBpcyBhcm91bmQuCiAgICAgVjhIaWRkZW5Qcm9wZXJ0
eU5hbWU6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MSIsIHRvVjgob2Jq
LT5wb3J0MSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgIFY4SGlk
ZGVuUHJvcGVydHlOYW1lOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDIi
LCB0b1Y4KG9iai0+cG9ydDIoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsK
LQotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKG9iai5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlLCBWOEhUTUxJbWFnZUVsZW1lbnQ6OmRlcmVmT2JqZWN0LCAwLCBWOEhU
TUxJbWFnZUVsZW1lbnQ6OnRvRXZlbnRUYXJnZXQsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6aW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFBy
b3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
OjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4
SFRNTEltYWdlRWxlbWVudDo6ZGVyZWZPYmplY3QsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6dG9F
dmVudFRhcmdldCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JN
ZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKQEAgLTc3LDcgKzc3LDcg
QEAKIAogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVsZW1l
bnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIG9wdGlvbmFsV2lkdGgsIG9wdGlv
bmFsSGVpZ2h0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1h
Z2UucmVsZWFzZSgpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltYWdlLnJlbGVh
c2UoKS5nZXQoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NyBAQAogICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4TXV0YXRpb25D
YWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2
ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxl
YXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJL
aXRQb2ludEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsNyBAQAogICAgIH0KICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0g
V2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLmdldCgpLCAmaW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1
LDcgQEAKICAgICBpZiAoaGFzSW5kZXhlcikKICAgICAgICAgYXJncy5Ib2xkZXIoKS0+U2V0SW5k
ZXhlZFByb3BlcnRpZXNUb0V4dGVybmFsQXJyYXlEYXRhKGFycmF5LmdldCgpLT5iYXNlQWRkcmVz
cygpLCBhcnJheVR5cGUsIGFycmF5LmdldCgpLT5sZW5ndGgoKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNl
KCkuZ2V0KCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0yMjQs
NyArMjI0LDcgQEAKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKS5nZXQoKSwgdHlwZSwgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVu
dCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TUZvcm1EYXRhQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogICAg
IFJlZlB0cjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGZv
cm0pOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRvbUZvcm1E
YXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgIC8vICduZXcg
RGF0YVZpZXcoKScgYW5kIHRoZSBjYWxsIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZWQgRGF0
YVZpZXcgb2JqZWN0LgogICAgICAgICBSZWZQdHI8RGF0YVZpZXc+IGRhdGFWaWV3ID0gRGF0YVZp
ZXc6OmNyZWF0ZSgwKTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
YXJncy5Ib2xkZXIoKTsKLSAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVsZWFzZSgpLmdldCgp
LCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAgICAgaWYgKGFy
Z3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAKICAgICAKICAgICAv
LyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRp
byBjb250ZXh0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRp
b0NvbnRleHQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBA
QAogICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdy
YXBwZXIgb2JqZWN0IGZvciB0aGUgYXJyYXkuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKGJ1ZmZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLmdldCgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCks
IGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihtX3dvcmtlckNvbnRleHQsIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQsIG1f
aXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAKICAgICAvLyBJbnNl
cnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzaGFkb3cgb2Jq
ZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkocmV2aXNp
b24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgc3RhdGljIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKiwgdjg6Oklzb2xhdGUqKTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwg
V3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUpOworICAgICAgICBzdGF0aWMgaW5saW5lIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCosIFdyYXBw
ZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lKTsKICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIHNl
dE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5cGVJbmZvKiwgdm9p
ZCopOwogICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJOYXRpdmVJbmZvKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyopOwogCkBAIC04OSwxMiArODksMTMgQEAK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFz
c1JlZlB0cjxUPiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRp
b246OkxpZmV0aW1lIGxpZmV0aW1lKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCogb2JqZWN0LCBXcmFw
cGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGltZSkK
ICAgICB7Ci0gICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2JqZWN0LmdldCgp
KTsKKyAgICAgICAgb2JqZWN0LT5yZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgZnVuY3Rpb24g
ZnJvbSBXcmFwcGVyVHlwZUluZm8uCisgICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlw
ZSwgb2JqZWN0KTsKICAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7Ci0g
ICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBidWlsZFdyYXBwZXJD
b25maWd1cmF0aW9uKG9iamVjdC5nZXQoKSwgbGlmZXRpbWUpOwotICAgICAgICBET01EYXRhU3Rv
cmU6OnNldFdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmln
dXJhdGlvbik7CisgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBi
dWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKG9iamVjdCwgbGlmZXRpbWUpOworICAgICAgICBET01E
YXRhU3RvcmU6OnNldFdyYXBwZXIob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0
aW9uKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDcgQEAKIAogV3JhcHBlclR5cGVJbmZvKiBucE9iamVjdFR5cGVJbmZvKCkKIHsK
LSAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIHR5cGVJbmZvID0geyAwLCAwLCAwLCAwLCAwLCAw
LCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvIHR5cGVJbmZvID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFBy
b3RvdHlwZSwgMCB9OwogICAgIHJldHVybiAmdHlwZUluZm87CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAK
KyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zOSw0
NiArMzksMTA3IEBACiAKIGNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgU2Ny
aXB0V3JhcHBhYmxlKCkgeyB9CisgICAgU2NyaXB0V3JhcHBhYmxlKCkgOiBtX21hc2tlZFN0b3Jh
Z2UoMCkgeyB9CiAKKyAgICB+U2NyaXB0V3JhcHBhYmxlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX21hc2tlZFN0b3JhZ2UpOyAgLy8gQXNzZXJ0IGluaXRpYWxpemF0aW9uIHZpYSBpbml0V3Jh
cHBhYmxlKCkgZXZlbiBpZiBub3Qgd3JhcHBlZCBsYXRlci4KKyAgICAgICAgbV9tYXNrZWRTdG9y
YWdlID0gMDsgICAgICAvLyBCcmVhayBVQUYgYXR0ZW1wdHMgdG8gd3JhcC4KKyAgICB9CisKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4obWFza09yVW5tYXNrUG9pbnRlcigqbV9tYXNr
ZWRXcmFwcGVyKSk7CisgICAgICAgIHY4OjpPYmplY3QqIG9iamVjdCA9IGNvbnRhaW5zV3JhcHBl
cigpID8gcmVpbnRlcnByZXRfY2FzdDx2ODo6T2JqZWN0Kj4obWFza09yVW5tYXNrVmFsdWUobV9t
YXNrZWRTdG9yYWdlKSkgOiAwOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PihvYmplY3QpOwogICAgIH0KIAogICAgIHZvaWQgc2V0V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX21hc2tlZFdy
YXBwZXIuSXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250YWluc1dyYXBwZXIoKSk7CiAg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KGlzb2xhdGUsIHdyYXBwZXIpOwogICAgICAgICBjb25maWd1
cmF0aW9uLmNvbmZpZ3VyZVdyYXBwZXIocGVyc2lzdGVudCwgaXNvbGF0ZSk7CiAgICAgICAgIHBl
cnNpc3RlbnQuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywgd2Vha0NhbGxiYWNrKTsKLSAgICAgICAg
bV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9pbnRlcigqcGVyc2lzdGVudCk7CisgICAg
ICAgIG1fbWFza2VkU3RvcmFnZSA9IG1hc2tPclVubWFza1ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PigqcGVyc2lzdGVudCkpOwogICAgIH0KIAorICAgIGNvbnN0IFdyYXBwZXJUeXBl
SW5mbyogdHlwZUluZm8oKQorICAgIHsKKyAgICAgICAgdWludHB0cl90IHZhbHVlID0gY29udGFp
bnNUeXBlSW5mbygpID8gKG1fbWFza2VkU3RvcmFnZSAmIH4xKSA6IDA7CisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IFdyYXBwZXJUeXBlSW5mbyo+KHZhbHVlKTsKKyAgICB9
CisKKyAgIHZvaWQgc2V0VHlwZUluZm8oY29uc3QgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQorICAg
IHsKKyAgICAgICAgbV9tYXNrZWRTdG9yYWdlID0gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihpbmZvKSB8IDEpOworICAgIH0KKwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9y
eUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBl
czo6RE9NKTsKLSAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9tYXNrZWRXcmFwcGVyKTsKKyAg
ICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9tYXNrZWRTdG9yYWdlKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgYm9vbCB3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChjb25zdCB2b2lkKikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCB3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChj
b25zdCBTY3JpcHRXcmFwcGFibGUqKSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2b2lkKikKKyAgICB7Cisg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7CisgICAgfQorCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0
V3JhcHBlckZyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCisgICAgeworICAgICAg
cmV0dXJuIG9iamVjdC0+d3JhcHBlcigpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldFdy
YXBwZXJJbk9iamVjdCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
LCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYpCisgICAgeworICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNj
cmlwdFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKKyAgICB7CisgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwg
Y29uZmlndXJhdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFdyYXBwZXJUeXBlSW5m
byogZ2V0VHlwZUluZm9Gcm9tT2JqZWN0KHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzdGF0
aWMgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBnZXRUeXBlSW5mb0Zyb21PYmplY3QoU2NyaXB0V3Jh
cHBhYmxlKiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0LT50eXBlSW5mbygp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldFR5cGVJbmZvSW5PYmplY3Qodm9pZCogb2Jq
ZWN0LCBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8pCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRUeXBlSW5mb0luT2Jq
ZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8p
CisgICAgeworICAgICAgICBvYmplY3QtPnNldFR5cGVJbmZvKGluZm8pOworICAgIH0KKwogcHJp
dmF0ZToKLSAgICBpbmxpbmUgdm9pZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgaW5saW5lIHVp
bnRwdHJfdCBtYXNrT3JVbm1hc2tWYWx1ZSh1aW50cHRyX3QgdmFsdWUpCiAgICAgewotICAgICAg
ICBBU1NFUlQoIW1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQoKnZh
bHVlID09IG1hc2tPclVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOwotICAgICAgICB2
YWx1ZS5EaXNwb3NlKGlzb2xhdGUpOwotICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xlYXIoKTsK
KyAgICAgICAgY29uc3QgdWludHB0cl90IHJhbmRvbU1hc2sgPSB+KChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oJldlYkNvcmVNZW1vcnlUeXBlczo6RE9NKSA+PiAxMykgfCAxKTsgLy8gRW50
cm9weSB2aWEgQVNMUiwgYm90dG9tIGJpdCBjbGVhci4KKyAgICAgICAgcmV0dXJuICh2YWx1ZSBe
IHJhbmRvbU1hc2spICYgKCF2YWx1ZSAtIDEpOyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJh
bmNoaW5nLgogICAgIH0KIAotICAgIC8vIFN0b3JlcyBhIG1hc2tlZCB3cmFwcGVyIHRvIHByZXZl
bnQgYXR0YWNrZXJzIGZyb20gb3ZlcndyaXRpbmcgdGhpcyBmaWVsZAotICAgIC8vIHdpdGggYSBw
aG9ueSB3cmFwcGVyLgotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fbWFza2VkV3Jh
cHBlcjsKKyAgICBpbmxpbmUgYm9vbCBjb250YWluc1R5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
KG1fbWFza2VkU3RvcmFnZSAmIDEpID09IDE7IH0KKyAgICBpbmxpbmUgYm9vbCBjb250YWluc1dy
YXBwZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tlZFN0b3JhZ2UgJiYgKChtX21hc2tlZFN0b3Jh
Z2UgJiAxKSA9PSAwKTsgfQogCi0gICAgc3RhdGljIGlubGluZSB2ODo6T2JqZWN0KiBtYXNrT3JV
bm1hc2tQb2ludGVyKGNvbnN0IHY4OjpPYmplY3QqIG9iamVjdCkKKyAgICBpbmxpbmUgdm9pZCBk
aXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAg
Y29uc3QgdWludHB0cl90IG9iamVjdFBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ob2JqZWN0KTsKLSAgICAgICAgY29uc3QgdWludHB0cl90IHJhbmRvbU1hc2sgPSB+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pID4+IDEzKTsg
Ly8gRW50cm9weSB2aWEgQVNMUi4KLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8djg6
Ok9iamVjdCo+KChvYmplY3RQb2ludGVyIF4gcmFuZG9tTWFzaykgJiAoIW9iamVjdFBvaW50ZXIg
LSAxKSk7IC8vIFByZXNlcnZlIG51bGwgd2l0aG91dCBicmFuY2hpbmcuCisgICAgICAgIEFTU0VS
VChjb250YWluc1dyYXBwZXIoKSAmJiBtX21hc2tlZFN0b3JhZ2UgIT0gMCk7CisgICAgICAgIEFT
U0VSVChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oKnZhbHVlKSA9PSBtYXNrT3JVbm1hc2tW
YWx1ZShtX21hc2tlZFN0b3JhZ2UpKTsKKyAgICAgICAgdmFsdWUuRGlzcG9zZShpc29sYXRlKTsK
KyAgICAgICAgc2V0VHlwZUluZm8oaW5mbyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgd2Vh
a0NhbGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+
IHZhbHVlLCB2b2lkKiBjb250ZXh0KQpAQCAtOTMsMTQgKzE1NCwyOCBAQAogICAgICAgICBXcmFw
cGVyVHlwZUluZm8qIGluZm8gPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKICAgICAgICAg
QVNTRVJUKGluZm8tPmRlcmVmT2JqZWN0RnVuY3Rpb24pOwogCi0gICAgICAgIGtleS0+ZGlzcG9z
ZVdyYXBwZXIodmFsdWUsIGlzb2xhdGUpOworICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZh
bHVlLCBpc29sYXRlLCBpbmZvKTsKICAgICAgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0aGF0IDUw
JX4gb2YgbWlub3IgR0MgY3ljbGUgdGltZXMgY2FuIGJlIGNvbnN1bWVkCiAgICAgICAgIC8vIGlu
c2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4gV2Ugc2hv
dWxkCiAgICAgICAgIC8vIG1ha2UgTm9kZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwuCiAgICAg
ICAgIGluZm8tPmRlcmVmT2JqZWN0KG9iamVjdCk7CiAgICAgfQorCisgICAgLy8gSWYgemVybywg
dGhlbiB0aGlzIGNvbnRhaW5zIG5vdGhpbmcsIG90aGVyd2lzZToKKyAgICAvLyAgIElmIHRoZSBi
b3R0b20gYml0IGl0IGNsZWFyLCB0aGVuIHRoaXMgY29udGFpbnMgYSBtYXNrZWQgcG9pbnRlciB0
byBhIHdyYXBwZXIgb2JqZWN0LgorICAgIC8vICAgSWYgdGhlIGJvdHRvbSBiaXQgaXMgc2V0LCB0
aGVuIHRoaXMgY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSB3cmFwcGVyIHR5cGUgaW5mbyBpbiB0
aGUgcmVtYWluaW5nIGJpdHMuCisgICAgLy8gTWFza2luZyB3cmFwcGVycyBwcmV2ZW50cyBhdHRh
Y2tlcnMgZnJvbSBvdmVyd3JpdGluZyB0aGlzIGZpZWxkIHdpdGggcG9pbnRlcnMgdG8gc3ByYXll
ZCBkYXRhLgorICAgIC8vIFBvaW50ZXJzIGluc2lkZSBXcmFwcGVyIFR5cGUgSW5mbyBhcmUgYWxy
ZWFkeSBwcm90ZWN0ZWQgYnkgQVNMUi4KKyAgICB1aW50cHRyX3QgbV9tYXNrZWRTdG9yYWdlOwog
fTsKIAorLy8gV3JhcHBhYmxlcyBuZWVkIHRvIGJlIGluaXRXcmFwcGFibGUoKSdkIHdpdGggdGhl
aXIgbW9zdCBkZXJyaXZlZCB3cmFwcGVkCisvLyB0eXBlIGluIG11Y2ggdGhlIHNhbWUgd2F5IHRo
YXQgY2VydGFpbiBvdGhlciB0eXBlcyBuZWVkIHRvIGJlIGFkb3B0ZWQgb3IKKy8vIHNvIGZvcnRo
LiAgVGhlIGluaXRXcmFwcGFibGUgZnVuY3Rpb25zIGFyZSBpbnN0YW50aWF0ZWQgaW4gdGhlIGdl
bmVyYXRlZAorLy8gY29kZS4gVGhlIEpTQyBjb2RlIHdpbGwgbWFpbnRhaW4gY29tcGF0aWJpbGl0
eSB2aWEgYSBzaW5nbGUgbm8tb3AKKy8vIGluaXRXcmFwcGFibGUodm9pZCopIGZ1bmN0aW9uIGhl
cmUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD52b2lkIGluaXRXcmFwcGFibGUoVCogb2JqZWN0KTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU2NyaXB0V3JhcHBhYmxlX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlv
bi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QWRhcHRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEFkYXB0b3JGdW5jdGlvbjo6
aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlLCAwLCAwLCAwLCAwLCAwLCAw
LCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4QWRhcHRv
ckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAs
IDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBl
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8djguaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0
OwogICAgIGNsYXNzIERPTURhdGFTdG9yZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKQEAgLTYx
LDYgKzYxLDcgQEAKICAgICB0eXBlZGVmIEV2ZW50VGFyZ2V0KiAoKlRvRXZlbnRUYXJnZXRGdW5j
dGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiB2b2lkKiAoKk9wYXF1
ZVJvb3RGb3JHQykodm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSopOwogICAgIHR5cGVkZWYgdm9pZCAoKkluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllc0Z1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAg
IHR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAoKldyYXBPYmplY3RGdW5jdGlvbikodm9p
ZCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7CiAKICAgICBlbnVtIFdy
YXBwZXJUeXBlUHJvdG90eXBlIHsKICAgICAgICAgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUs
CkBAIC03Niw4ICs3Nyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KHY4OjpFeHRlcm5hbDo6Q2FzdCgqdHlwZUluZm9X
cmFwcGVyKS0+VmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIAorCiAgICAg
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdGhhdCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMgPT0gdGhhdDsKQEAgLTkyLDE1ICs5MiwxOCBA
QAogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpIHsgcmV0dXJuIGdl
dFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsgfQotICAgICAgICAKKworICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlLCB3b3JsZFR5
cGUpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkZXJlZk9iamVjdCh2b2lkKiBvYmplY3Qp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9uKSAKKyAgICAg
ICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIGRlcmVmT2Jq
ZWN0RnVuY3Rpb24ob2JqZWN0KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHByb3RvLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKQpAQCAtMTM2
LDYgKzEzOSw3IEBACiAgICAgICAgIGNvbnN0IEluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllc0Z1bmN0aW9uIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0
aW9uOwogICAgICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIHBhcmVudENsYXNzOwogICAgICAg
ICBjb25zdCBXcmFwcGVyVHlwZVByb3RvdHlwZSB3cmFwcGVyVHlwZVByb3RvdHlwZTsKKyAgICAg
ICAgY29uc3QgV3JhcE9iamVjdEZ1bmN0aW9uIHdyYXBPYmplY3RGdW5jdGlvbjsKICAgICB9Owog
CiAgICAgaW5saW5lIHZvaWQqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsNyArMzQxLDcgQEAKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVyR2xvYmFsT2JqZWN0ID0gdG9Jbm5lckdsb2Jh
bE9iamVjdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5m
byhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cpOwogICAgIGlu
bmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3JhcHBlcik7Ci0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPERPTVdpbmRvdz4o
d2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lzb2xhdGUsIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIod2luZG93LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dy
YXBwZXIsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAg
RE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3coZmFsc2UpOwogICAgIHJldHVy
biB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIVE1MQ3VzdG9t
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRN
TEN1c3RvbUVsZW1lbnQuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw3IEBACiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChIVE1MRWxlbWVu
dCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdy
YXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4
OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3Jh
cHBlcihIVE1MRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7
CiB9OwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEN1c3RvbUVsZW1lbnQ6
OnRvVjgoSFRNTEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzAwMiw2ICszMDAyLDggQEAKICAgICAgICAgICAgICdkb20vTm9kZUZpbHRlckNvbmRp
dGlvbi5oJywKICAgICAgICAgICAgICdkb20vTm9kZUl0ZXJhdG9yLmNwcCcsCiAgICAgICAgICAg
ICAnZG9tL05vZGVJdGVyYXRvci5oJywKKyAgICAgICAgICAgICdkb20vTm9kZUxpc3QuY3BwJywK
KyAgICAgICAgICAgICdkb20vTm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSYXJl
RGF0YS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCiAgICAgICAgICAg
ICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNb2RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTW9kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
IGlubGluZSBIVE1MTW9kRWxlbWVudDo6SFRNTE1vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBIVE1MVGFibGVS
b3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBACiAgICAgLCBtX2NvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZVNvdXJjZU92ZXIp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaW1nVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKICAgICBpZiAoZm9ybSkKICAgICAgICAgZm9ybS0+cmVnaXN0ZXJJbWdFbGVtZW50KHRo
aXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCitWYWxpZGl0eVN0YXRlOjpWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
Y29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkKK3sKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OworfQorCiBTdHJpbmcgVmFsaWRpdHlTdGF0ZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1fdmFsdWUoMCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShwcm9ncmVzc1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIEhUTUxQcm9ncmVzc0VsZW1lbnQ6On5IVE1MUHJvZ3Jlc3NFbGVtZW50KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUaXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAsIG1fZnJhbWVCb3JkZXJTZXQo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJhbWVUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGcmFtZUVsZW1lbnQ+IEhUTUxGcmFt
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1f
ZG9jdW1lbnRWZXJzaW9uKDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZmllbGRzZXRUYWcp
KTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGaWVsZFNl
dEVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaGVhZFRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGJyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
QlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBACiAgICAgLCBtX3Nob3VsZFJlY2FsY0xpc3RJdGVt
cyhmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBIVE1M
U2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZE5vdFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXBwbGV0VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIAogICAgIG1fc2VydmljZVR5cGUgPSAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCI7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxGcmFtZUVsZW1l
bnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlmcmFt
ZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVD
YWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBACiBIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICA6IERvY3VtZW50KGZyYW1l
LCB1cmwsIGZhbHNlLCB0cnVlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgY2xl
YXJYTUxWZXJzaW9uKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBh
cmFncmFwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUocFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
b2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
CiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1f
c3BhbigxKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxlQ29sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUodWxUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAs
IG1faXNBY3RpdmF0ZWRTdWJtaXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYnV0
dG9uVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
QnV0dG9uRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGxUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxETGlzdEVsZW1lbnQ+IEhUTUxETGlz
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogICAgICwgbV9p
c09wZW4oZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTERldGFpbHNFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udFRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZvbnRFbGVtZW50PiBIVE1MRm9udEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShvcHRncm91cFRhZykpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tz
KCk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MT3B0R3Jv
dXBFbGVtZW50PiBIVE1MT3B0R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9WYWxpZGl0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9WYWxp
ZGl0eVN0YXRlLmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgYm9vbCB2
YWxpZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFZhbGlkaXR5U3RhdGUoRm9ybUFzc29jaWF0
ZWRFbGVtZW50KiBjb250cm9sKSA6IG1fY29udHJvbChjb250cm9sKSB7IH0KKyAgICBWYWxpZGl0
eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogY29udHJvbCk7CiAKICAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqIG1fY29udHJvbDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAK
ICAgICA6IEhUTUxNZWRpYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNl
cikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdWRpb1RhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQcmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cmVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIGlubGlu
ZSBIVE1MUHJlRWxlbWVudDo6SFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
UHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAK
ICAgICAsIG1fcGFkZGluZygxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRhYmxlVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVFbGVt
ZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShsaVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogaW5s
aW5lIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OkhUTUxEYXRhTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MRGF0YUxpc3RFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsYWJlbFRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExhYmVsRWxlbWVudD4gSFRNTExhYmVsRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBl
KE5vbmUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGlua1RhZykpOworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBIVE1MTGlua0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAj
ZW5kaWYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgaW5pdFdyYXBw
YWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQAogICAgICwgbV9ub3Jlc2l6ZShmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShmcmFtZXNldFRhZykpOwotICAgIAorICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAg
ICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw3IEBACiAgICAgLCBtX3NoYXBlKFVua25vd24pCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
YXJlYVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TEFyZWFFbGVtZW50PiBIVE1MQXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5
LDcgQEAKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9j
dW1lbnQsIGZvcm0pCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoa2V5Z2VuVGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNlbGVjdCBlbGVtZW50IHdp
dGggb25lIG9wdGlvbiBlbGVtZW50IGZvciBlYWNoIGtleSBzaXplLgogICAgIFZlY3RvcjxTdHJp
bmc+IGtleXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5n
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIGlubGluZSBIVE1M
SGVhZGluZ0VsZW1lbnQ6OkhUTUxIZWFkaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxIZWFkaW5nRWxlbWVudD4gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkaXJUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50PiBIVE1MRGlyZWN0
b3J5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgU2NyaXB0
RWxlbWVudCh0aGlzLCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5U3RhcnRlZCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShzY3JpcHRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVkKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2JqZWN0VGFn
KSk7CiAgICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50Ojp+SFRN
TE9iamVjdEVsZW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAgICAgOiBIVE1M
TWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUodmlkZW9UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBACiBpbmxpbmUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OkhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGl2RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGl2RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAg
ICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShkaXZUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgICwgbV9zaG91bGRSZWNhbGN1bGF0
ZUl0ZW1Db3VudChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShvbFRhZykpOworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4g
SFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoc3BhblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNwYW5FbGVtZW50PiBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDcgQEAKICAgICA6IExpdmVOb2RlTGlzdChyb290Tm9kZSwgUmFkaW9Ob2RlTGlz
dFR5cGUsIEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHMsIHJvb3ROb2RlLT5oYXNUYWdOYW1lKGZv
cm1UYWcpID8gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQgOiBOb2RlTGlzdElzUm9vdGVkQXRO
b2RlKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0K
IAogUmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3QoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2
ICs1Nyw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob3B0aW9uVGFnKSk7CiAgICAgc2V0
SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaHJUYWcpKTsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxIUkVsZW1lbnQ+
IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDYgKzk0LDcgQEAKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0ZXh0YXJl
YVRhZykpOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGV4dEFyZWFFbGVt
ZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKIHsKICAgICBMT0coTWVkaWEsICJIVE1MU291cmNlRWxl
bWVudDo6SFRNTFNvdXJjZUVsZW1lbnQgLSAlcCIsIHRoaXMpOwogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHNvdXJjZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTFNvdXJjZUVsZW1lbnQ+IEhUTUxTb3VyY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBACiAgICAgLCBtX2RlZmF1bHRWYWx1ZSgiIikKICAgICAsIG1fdG9rZW5z
KERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBIVE1MT3V0cHV0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAg
ICAgOiBMYWJlbGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKG1ldGVyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogSFRN
TE1ldGVyRWxlbWVudDo6fkhUTUxNZXRlckVsZW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShtZXRhVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MTWV0YUVsZW1lbnQ+IEhUTUxNZXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoYm9keVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1
b3RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHFU
YWcpIHx8IGhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFF1b3RlRWxlbWVudD4gSFRNTFF1b3RlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
Y2FwdGlvblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgLCBtX2xpbmtSZWxhdGlvbnMoMCkKICAgICAs
IG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoKDApCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAK
ICAgICAsIG1fZGlkQ2xlYXJJbWFnZUJ1ZmZlcihmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShjYW52YXNUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogaW5saW5l
IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OkhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogSFRNTFRl
bXBsYXRlRWxlbWVudDo6fkhUTUxUZW1wbGF0ZUVsZW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShtYXBUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUZv
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYmFz
ZWZvbnRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxCYXNlRm9udEVsZW1lbnQ+IEhUTUxCYXNlRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGJhc2VUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxCYXNlRWxlbWVudD4gSFRNTEJhc2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiBpbmxpbmUgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQ6OkhUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWFycXVlZVRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVl
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAsIG1fc2NvcGVkU3R5
bGVSZWdpc3RyYXRpb25TdGF0ZShOb3RSZWdpc3RlcmVkKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHN0eWxlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogSFRNTFN0eWxl
RWxlbWVudDo6fkhUTUxTdHlsZUVsZW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSHRtbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEh0bWxFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSHRtbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAg
ICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShodG1sVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogewogICAgIExPRyhNZWRpYSwgIkhU
TUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQgLSAlcCIsIHRoaXMpOwogICAgIEFTU0VS
VChoYXNUYWdOYW1lKHRyYWNrVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
SFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoZW1iZWRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJh
bUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJh
bVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFBh
cmFtRWxlbWVudD4gSFRNTFBhcmFtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw4
IEBACiAgICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFjYXB0aW9uUHJlZmVyZW5jZXMt
PnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKICAgICB9CiAjZW5kaWYKKworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGVnZW5kVGFnKSk7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gSFRN
TExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQAogI2lmIEVOQUJM
RShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFj
a3MoKTsKICNlbmRpZgorICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERp
YWxvZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERp
YWxvZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaWFsb2dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoZGlhbG9nVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MRGlhbG9nRWxlbWVudD4gSFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKG1lbnVUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1lbnVFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzYsNiArMjM2LDcgQEAKIERPTUltcGxlbWVudGF0aW9uOjpET01JbXBsZW1lbnRh
dGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIGJvb2wgRE9NSW1wbGVtZW50YXRpb246Omhh
c0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZUxpc3QuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogICAg
IGNsYXNzIE5vZGVMaXN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8Tm9kZUxpc3Q+IHsKICAgICBwdWJsaWM6CisgICAgICAgIE5vZGVMaXN0KCk7CiAgICAgICAg
IHZpcnR1YWwgfk5vZGVMaXN0KCkgeyB9CiAKICAgICAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRy
aWJ1dGVzIGZvciBOb2RlTGlzdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoKQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBFcnJvckV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCkBAIC01Miw2ICs1Myw3IEBACiAgICAgLCBtX2ZpbGVOYW1lKGluaXRpYWxpemVyLmZpbGVu
YW1lKQogICAgICwgbV9saW5lTnVtYmVyKGluaXRpYWxpemVyLmxpbmVubykKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBFcnJvckV2ZW50OjpFcnJvckV2ZW50KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgdW5zaWduZWQgbGluZU51bWJlcikK
QEAgLTYwLDYgKzYyLDcgQEAKICAgICAsIG1fZmlsZU5hbWUoZmlsZU5hbWUpCiAgICAgLCBtX2xp
bmVOdW1iZXIobGluZU51bWJlcikKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBF
cnJvckV2ZW50Ojp+RXJyb3JFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jl
c3NFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZl
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fbG9hZGVk
KDApCiAgICAgLCBtX3RvdGFsKDApCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
UHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IFByb2dyZXNzRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTUwLDYgKzUxLDcgQEAKICAg
ICAsIG1fbG9hZGVkKGluaXRpYWxpemVyLmxvYWRlZCkKICAgICAsIG1fdG90YWwoaW5pdGlhbGl6
ZXIudG90YWwpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUHJvZ3Jlc3NFdmVu
dDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29t
cHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsKQpAQCAtNTgsNiArNjAsNyBAQAogICAgICwgbV9sb2FkZWQobG9hZGVkKQogICAgICwgbV90
b3RhbCh0b3RhbCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogICAgIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBQcm9ncmVzc0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogICAgICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lz
dGVtSWQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogS1VSTCBEb2N1bWVudFR5
cGU6OmJhc2VVUkkoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0NoYXJhY3RlckRhdGE6OkNoYXJhY3RlckRhdGEoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRleHQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICA6IE5vZGUoZG9j
dW1lbnQsIHR5cGUpCisgICAgLCBtX2RhdGEoIXRleHQuaXNOdWxsKCkgPyB0ZXh0IDogZW1wdHlT
dHJpbmcoKSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVPdGhlciB8fCB0eXBlID09IENy
ZWF0ZVRleHQgfHwgdHlwZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKK30KKwogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNvbnN0IFN0cmluZyYg
ZGF0YSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBub25OdWxsRGF0YSA9
ICFkYXRhLmlzTnVsbCgpID8gZGF0YSA6IGVtcHR5U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEyICszOCwxNCBAQAogRGV2aWNlT3JpZW50YXRpb25FdmVudDo6RGV2
aWNlT3JpZW50YXRpb25FdmVudCgpCiAgICAgOiBtX29yaWVudGF0aW9uKERldmljZU9yaWVudGF0
aW9uRGF0YTo6Y3JlYXRlKCkpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikKICAg
ICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBidWJibGUsIG5vdCBj
YW5jZWxhYmxlCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERl
dmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJs
ZXMsIGJvb2wgY2FuY2VsYWJsZSwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogICAgIDogbV9kYXRh
VHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MSw2ICs1Miw3IEBACiAg
ICAgLCBtX3NvdXJjZShpbml0aWFsaXplci5zb3VyY2UpCiAgICAgLCBtX3BvcnRzKGFkb3B0UHRy
KG5ldyBNZXNzYWdlUG9ydEFycmF5KGluaXRpYWxpemVyLnBvcnRzKSkpCiB7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU2Ny
aXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRzKQpAQCAtNjIsNiArNjQsNyBAQAogICAgICwgbV9zb3VyY2Uoc291cmNl
KQogICAgICwgbV9wb3J0cyhwb3J0cykKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydHMpCkBAIC03Nyw2ICs4MCw3IEBACiAgICAgaWYgKG1fZGF0YUFzU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKQogICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+cmVn
aXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKICNlbmRpZgor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC04Niw2ICs5MCw3
IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC05NSw2ICsx
MDAsNyBAQAogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZCgiIikK
IHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VF
dmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikK
QEAgLTEwNCw2ICsxMTAsNyBAQAogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0
RXZlbnRJZCgiIikKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZXNzYWdlRXZl
bnQ6On5NZXNzYWdlRXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODEsNiArMTgxLDEzIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK0VsZW1lbnQ6OkVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQor
ICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCit7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKK30K
KwogUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsMTEgKzU5OCw3IEBACiAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsK
IAogcHJvdGVjdGVkOgotICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogQ29u
dGFpbmVyTm9kZShkb2N1bWVudCwgdHlwZSkKLSAgICAgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkK
LSAgICB7Ci0gICAgfQorICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpOwogCiAgICAgdmlydHVh
bCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBA
QAogICAgICwgbV9pbkNoaWxkcmVuQ2hhbmdlZChmYWxzZSkKICAgICAsIG1fc3BlY2lmaWVkKHRy
dWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQXR0cjo6QXR0cihEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RhbmRhbG9uZVZhbHVlKQpAQCAtNTcsNiArNTgsNyBAQAogICAgICwgbV9pbkNoaWxkcmVu
Q2hhbmdlZChmYWxzZSkKICAgICAsIG1fc3BlY2lmaWVkKHRydWUpCiB7CisgICAgaW5pdFdyYXBw
YWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyPiBBdHRyOjpjcmVhdGUoRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9wU3RhdGVFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAg
ICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKICAgICAsIG1faGlzdG9yeSgwKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CkBAIC01MCw2ICs1MSw3IEBACiAgICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQogICAgICwgbV9o
aXN0b3J5KDApCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVu
dDo6UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+IGhpc3RvcnkpCkBAIC01Nyw2ICs1OSw3IEBA
CiAgICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZShzZXJpYWxpemVkU3RhdGUpCiAgICAgLCBtX2hpc3Rv
cnkoaGlzdG9yeSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2
ZW50Ojp+UG9wU3RhdGVFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIE11dGF0aW9uRXZlbnQ6Ok11
dGF0aW9uRXZlbnQoKQogICAgIDogbV9hdHRyQ2hhbmdlKDApCiB7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIH0KIAogTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
Tm9kZT4gcmVsYXRlZE5vZGUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICAgICA6IFRyYXZlcnNhbChyb290Tm9kZSwgd2hh
dFRvU2hvdywgZmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQogICAgICwgbV9jdXJyZW50
KHJvb3QoKSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiB2b2lkIFRyZWVXYWxr
ZXI6OnNldEN1cnJlbnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAKIFVJRXZlbnQ6OlVJRXZlbnQoKQogICAgIDogbV9kZXRhaWwoMCkKIHsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBQYXNzUmVm
UHRyPEFic3RyYWN0Vmlldz4gdmlld0FyZywgaW50IGRldGFpbEFyZykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDcgQEAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJh
bmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBU
ZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCi0gICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlwZSkK
LSAgICB7Ci0gICAgfQorICAgIFRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IGRhdGEsIENvbnN0cnVjdGlvblR5cGUgdHlwZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBT
dHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgOiBtX2tleUxv
Y2F0aW9uKERPTUtleUxvY2F0aW9uU3RhbmRhcmQpCiAgICAgLCBtX2FsdEdyYXBoS2V5KGZhbHNl
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6OktleWJv
YXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIEFic3RyYWN0Vmlldyog
dmlldykKQEAgLTExNSw2ICsxMTYsNyBAQAogICAgICwgbV9rZXlMb2NhdGlvbihrZXlMb2NhdGlv
bkNvZGUoa2V5KSkKICAgICAsIG1fYWx0R3JhcGhLZXkoZmFsc2UpCiB7CisgICAgaW5pdFdyYXBw
YWJsZSh0aGlzKTsKIH0KIAogS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgS2V5Ym9hcmRFdmVudEluaXQmIGluaXRpYWxpemVy
KQpAQCAtMTIzLDYgKzEyNSw3IEBACiAgICAgLCBtX2tleUxvY2F0aW9uKGluaXRpYWxpemVyLmtl
eUxvY2F0aW9uKQogICAgICwgbV9hbHRHcmFwaEtleShmYWxzZSkKIHsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogfQogCiBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBBYnN0
cmFjdFZpZXcgKnZpZXcsCkBAIC0xMzMsNiArMTM2LDcgQEAKICAgICAsIG1fa2V5TG9jYXRpb24o
a2V5TG9jYXRpb24pCiAgICAgLCBtX2FsdEdyYXBoS2V5KGFsdEdyYXBoS2V5KQogeworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcs
NyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZE1h
dGNoU3R5bGUoZmFsc2UpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogVGV4dEV2
ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlwZSkKQEAgLTc3LDYgKzc4LDcgQEAK
ICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0
eWxlKGZhbHNlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFRleHRFdmVudDo6
VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LApAQCAtODgs
NiArOTAsNyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2Uoc2hvdWxkU21hcnRSZXBsYWNl
KQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1hdGNoU3R5bGUpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3Rh
dGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQpAQCAtOTgsNiArMTAxLDcg
QEAKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKICAgICAsIG1fZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKGRpY3RhdGlvbkFsdGVybmF0aXZlcykKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBUZXh0RXZlbnQ6On5UZXh0RXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAKICAgICAsIG1fcmVs
YXRlZFRhcmdldChyZWxhdGVkVGFyZ2V0KQogICAgICwgbV9jbGlwYm9hcmQoY2xpcGJvYXJkKQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbml0JiBpbml0
aWFsaXplcikKQEAgLTE0MCw2ICsxNDEsNyBAQAogICAgICwgbV9yZWxhdGVkVGFyZ2V0KGluaXRp
YWxpemVyLnJlbGF0ZWRUYXJnZXQpCiAgICAgLCBtX2NsaXBib2FyZCgwIC8qIGNsaXBib2FyZCAq
LykKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIGluaXRDb29yZGluYXRlcyhJbnRQ
b2ludChpbml0aWFsaXplci5jbGllbnRYLCBpbml0aWFsaXplci5jbGllbnRZKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogICAgIDogbV9kZWx0YU1vZGUoRE9NX0RFTFRBX1BJWEVMKQogICAgICwgbV9kaXJlY3Rp
b25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsK
IH0KIAogV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IFdoZWVsRXZlbnRJbml0JiBpbml0aWFsaXplcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNF
dmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTggKzUxLDIxIEBACiAKIEZvY3VzRXZlbnQ6
OkZvY3VzRXZlbnQoKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEZvY3VzRXZl
bnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50IGRldGFp
bCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCkKICAgICA6IFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0
ZWRUYXJnZXQocmVsYXRlZFRhcmdldCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQog
CiBGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
Rm9jdXNFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogVUlFdmVudCh0eXBlLCBpbml0aWFs
aXplcikKICAgICAsIG1fcmVsYXRlZFRhcmdldChpbml0aWFsaXplci5yZWxhdGVkVGFyZ2V0KQog
eworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8Rm9jdXNFdmVudERp
c3BhdGNoTWVkaWF0b3I+IEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoUGFzc1Jl
ZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bh
Z2VUcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
YWdlVHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCAr
MzgsMjEgQEAKIFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OlBhZ2VUcmFuc2l0aW9uRXZlbnQoKQogICAg
IDogbV9wZXJzaXN0ZWQoZmFsc2UpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
UGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgcGVyc2lzdGVkKQogICAgIDogRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSkK
ICAgICAsIG1fcGVyc2lzdGVkKHBlcnNpc3RlZCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUGFnZVRyYW5zaXRpb25FdmVudEluaXQmIGluaXRpYWxp
emVyKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3BlcnNpc3RlZChp
bml0aWFsaXplci5wZXJzaXN0ZWQpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
UGFnZVRyYW5zaXRpb25FdmVudDo6flBhZ2VUcmFuc2l0aW9uRXZlbnQoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsNyBAQAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKLSAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogTm9k
ZShkb2N1bWVudCwgdHlwZSkKLSAgICAgICAgLCBtX2RhdGEoIXRleHQuaXNOdWxsKCkgPyB0ZXh0
IDogZW1wdHlTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IENyZWF0ZU90
aGVyIHx8IHR5cGUgPT0gQ3JlYXRlVGV4dCB8fCB0eXBlID09IENyZWF0ZUVkaXRpbmdUZXh0KTsK
LSAgICB9CisgICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKTsKIAogICAgIHZvaWQgc2V0RGF0YVdpdGhv
dXRVcGRhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UcmFuc2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vVHJhbnNpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogVHJhbnNpdGlvbkV2ZW50OjpUcmFuc2l0aW9uRXZlbnQoKQogICAgIDogbV9lbGFwc2VkVGlt
ZSgwKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6
VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVt
ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgLCBtX2hvcml6b250YWxPdmVyZmxvdyhmYWxzZSkK
ICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhmYWxzZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBPdmVyZmxvd0V2ZW50OjpPdmVyZmxvd0V2ZW50KGJvb2wgaG9yaXpvbnRhbE92
ZXJmbG93Q2hhbmdlZCwgYm9vbCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVy
Zmxvd0NoYW5nZWQsIGJvb2wgdmVydGljYWxPdmVyZmxvdykKQEAgLTUxLDYgKzUyLDcgQEAKICAg
ICAsIG1fdmVydGljYWxPdmVyZmxvdyh2ZXJ0aWNhbE92ZXJmbG93KQogewogICAgIEFTU0VSVCho
b3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkIHx8IHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogCiAgICAgaWYgKGhvcml6b250YWxPdmVyZmxvd0NoYW5n
ZWQgJiYgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQpCiAgICAgICAgIG1fb3JpZW50ID0gQk9USDsK
QEAgLTY2LDYgKzY4LDcgQEAKICAgICAsIG1faG9yaXpvbnRhbE92ZXJmbG93KGluaXRpYWxpemVy
Lmhvcml6b250YWxPdmVyZmxvdykKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhpbml0aWFsaXpl
ci52ZXJ0aWNhbE92ZXJmbG93KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgT3ZlcmZsb3dFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAsIG1faXNYU0woZmFs
c2UpCiAjZW5kaWYKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiBpbmxpbmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIHRleHQsIENyZWF0ZU90aGVy
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8Q29tbWVudD4g
Q29tbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiBpbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgOiBUZXh0KGRvY3VtZW50LCBkYXRh
LCBDcmVhdGVUZXh0KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQ
dHI8Q0RBVEFTZWN0aW9uPiBDREFUQVNlY3Rpb246OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDE0IEBACiAKIEN1c3RvbUV2ZW50OjpDdXN0b21F
dmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQ3VzdG9tRXZlbnQ6OkN1
c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0
JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9k
ZXRhaWwoaW5pdGlhbGl6ZXIuZGV0YWlsKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAs
IG1fY3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkp
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIEV2ZW50OjpFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJs
ZUFyZykKQEAgLTY3LDYgKzY4LDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwg
bV9jcmVhdGVUaW1lKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkp
CiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogRXZlbnQ6OkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAt
ODIsNiArODQsNyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRp
bWUoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBFdmVudDo6fkV2ZW50KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitUZXh0OjpUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhLCB0
eXBlKQoreworICAgIGluaXRXcmFwcGFibGUodGhpcyk7Cit9CisKIFBhc3NSZWZQdHI8VGV4dD4g
VGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dChkb2N1bWVudCwgZGF0YSwgQ3JlYXRlVGV4dCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgOiBMaXZlTm9kZUxpc3Qocm9vdE5vZGUs
IFByb3BlcnR5Tm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlT25JdGVtQXR0ckNoYW5nZSwgTm9kZUxp
c3RJc1Jvb3RlZEF0RG9jdW1lbnRJZk93bmVySGFzSXRlbXJlZkF0dHIpCiAgICAgLCBtX25hbWUo
bmFtZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQcm9wZXJ0eU5vZGVMaXN0
Ojp+UHJvcGVydHlOb2RlTGlzdCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRB
bmltYXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmltYXRpb25FdmVudCgpCiAgICAgOiBt
X2VsYXBzZWRUaW1lKDAuMCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBXZWJL
aXRBbmltYXRpb25FdmVudDo6V2ViS2l0QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBXZWJLaXRBbmltYXRpb25FdmVudEluaXQmIGluaXRpYWxpemVyKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm90YXRpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm90YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAg
ICAgLCBtX3B1YmxpY0lkKHB1YmxpY0lkKQogICAgICwgbV9zeXN0ZW1JZChzeXN0ZW1JZCkKIHsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBTdHJpbmcgTm90YXRpb246Om5vZGVOYW1l
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBACiBEZXZpY2VNb3Rpb25FdmVu
dDo6RGV2aWNlTW90aW9uRXZlbnQoKQogICAgIDogbV9kZXZpY2VNb3Rpb25EYXRhKERldmljZU1v
dGlvbkRhdGE6OmNyZWF0ZSgpKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIERl
dmljZU1vdGlvbkV2ZW50OjpEZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkKICAgICA6IEV2ZW50
KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBidWJibGUsIG5vdCBjYW5jZWxhYmxl
CiAgICAgLCBtX2RldmljZU1vdGlvbkRhdGEoZGV2aWNlTW90aW9uRGF0YSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiB2b2lkIERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNl
TW90aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wg
Y2FuY2VsYWJsZSwgRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAog
CiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
fQogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0
KiB0YXJnZXRUb3VjaGVzLApAQCAtNTksNiArNjAsNyBAQAogICAgICwgbV9kb3VibGVUYXAoZmFs
c2UpCiAjZW5kaWYKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBUb3VjaEV2ZW50
Ojp+VG91Y2hFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IENvbnRhaW5lck5v
ZGUoZG9jdW1lbnQpCiAgICAgLCBtX2VudGl0eU5hbWUoZW50aXR5TmFtZSkKIHsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50aXR5
UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVudGl0
eU5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIERvY3VtZW50RnJhZ21lbnQ6OkRvY3Vt
ZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVj
dGlvblR5cGUpCiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBl
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTggKzM3LDIxIEBACiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9u
RXZlbnQoKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIENvbXBvc2l0aW9uRXZl
bnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIDogVUlFdmVudCh0
eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IENvbXBvc2l0aW9uRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX2Rh
dGEoaW5pdGlhbGl6ZXIuZGF0YSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBD
b21wb3NpdGlvbkV2ZW50Ojp+Q29tcG9zaXRpb25FdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgsNyBAQAogICAgICwgbV90ZW1wbGF0
ZURvY3VtZW50SG9zdCgwKQogI2VuZGlmCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAg
ICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGVMaXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK05vZGVMaXN0OjpOb2RlTGlzdCgpCit7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFk
b3dSb290KGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGlmICh0eXBlID09IFNoYWRv
d1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjpXZWJLaXRUcmFuc2l0aW9uRXZlbnQo
KQogICAgIDogbV9lbGFwc2VkVGltZSgwKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9
CiAKIFdlYktpdFRyYW5zaXRpb25FdmVudDo6V2ViS2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFw
c2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiBET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRnJhbWUqIGZyYW1l
KQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogRE9NUGx1Z2luQXJyYXk6On5ET01QbHVnaW5BcnJheSgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0ZFTGlnaHRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmZURpc3RhbnRMaWdodFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50PiBTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICAgICAsIG1f
c3BlY2lmaWVkVGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCiAgICAgLCBtX2xlbmd0aEFkanVz
dChTVkdMZW5ndGhBZGp1c3RTcGFjaW5nKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0Q29udGVudEVsZW1lbnQoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmZU1lcmdlTm9kZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1lcmdlTm9kZUVsZW1lbnQoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgLCBtX3N0ZERl
dmlhdGlvblkoMikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEcm9wU2hh
ZG93VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw2ICs1OSw3IEBACiAgICAgLCBtX3NwcmVhZE1ldGhvZChTVkdTcHJlYWRNZXRob2RQ
YWQpCiAgICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdHcmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlw
aERlZlRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZH
QWx0R2x5cGhEZWZFbGVtZW50PiBTVkdBbHRHbHlwaERlZkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAsIG1fdHlwZShT
VkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOworICAgIGluaXRXcmFwcGFibGUo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ+IFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlR2F1c3NpYW5CbHVyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAsIG1fX29wZXJh
dG9yKEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29tcG9zaXRlRWxlbWVudCgpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAsIG1faXNBbmltVmFsT2JzZXJ2ZWQoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0
aEVsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpo
a2VyblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZH
SEtlcm5FbGVtZW50PiBTVkdIS2VybkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmZU1lcmdlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDcgQEAKICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUoQW5pbWF0ZWRTdHJp
bmcpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0
ZUNvbG9yVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlRWxl
bWVudD4gU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDcgQEAKICAgICAsIG1fdHlwZShGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnKSk7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAog
ICAgICwgbV9pbWFnZUxvYWRlcih0aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjppbWFnZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdJbWFnZUVsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgLCBtX3R5cGUoRkVUVVJCVUxFTkNF
X1RZUEVfVFVSQlVMRU5DRSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVU
dXJidWxlbmNlVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRv
YykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdU
ZXh0RWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAKICAgICAsIG1f
cnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
ZWxsaXBzZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlw
aEl0ZW1UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0FsdEdseXBoSXRlbUVsZW1lbnQ+IFNWR0FsdEdseXBoSXRlbUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZUZ1bmNCVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdGRUZ1bmNCRWxlbWVudD4gU1ZHRkVGdW5jQkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAgICA6
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9keSgwKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpnbHlwaFJlZlRhZykpOworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdHbHlwaFJl
ZkVsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjp0aXRsZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHVGl0bGVFbGVtZW50PiBTVkdUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDYgKzUzLDcgQEAKICAgICAsIG1fZm9udEVsZW1lbnQoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShmb250X2ZhY2VUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIFJlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6
Y3JlYXRlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQcm9wZXJ0aWVz
KHN0eWxlRGVjbGFyYXRpb24ucmVsZWFzZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udF9mYWNlX25hbWVUYWcpKTsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlTmFt
ZUVsZW1lbnQ+IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGdW5jUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNSVGFn
KSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNS
RWxlbWVudD4gU1ZHRkVGdW5jUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Wm9vbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA6IG1fbmV3U2Nh
bGUoMC4wZikKICAgICAsIG1fcHJldmlvdXNTY2FsZSgwLjBmKQogeworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiB9CiAKIEZsb2F0UmVjdCBTVkdab29tRXZlbnQ6Onpvb21SZWN0U2NyZWVuKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpm
ZUNvbXBvbmVudFRyYW5zZmVyVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmtlcm5UYWcp
KTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1ZLZXJuRWxl
bWVudD4gU1ZHVktlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBACiAgICAgLy8g
U3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBp
cyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJ
ZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRmlsdGVyRWxlbWVudCgpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR1BvbHlFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpw
b2x5bGluZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHUG9seWxpbmVFbGVtZW50PiBTVkdQb2x5bGluZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9mYWNlX3VyaVRhZykpOworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VVcmlFbGVtZW50
PiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6Om1wYXRoVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01QYXRoRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1p
c3NpbmdfZ2x5cGhUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ+IFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICAsIG1fY2FsY01vZGUoQ2FsY01vZGVM
aW5lYXIpCiAgICAgLCBtX2FuaW1hdGlvbk1vZGUoTm9BbmltYXRpb24pCiB7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FuaW1h
dGlvbkVsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rp
b25UeXBlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpnVGFnKSk7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0dFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogICAgICwgbV90aW1lQ29udGFpbmVy
KFNNSUxUaW1lQ29udGFpbmVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnN2Z1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTVkdFbGVtZW50KCk7CiAgICAgZG9jLT5yZWdp
c3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNw
b3RMaWdodFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHRkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzd2l0Y2hU
YWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHU3dpdGNoRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICAgICAsIG1fc3VyZmFjZVNjYWxl
KDEpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0aW5n
VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2
LDcgQEAKIHsKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKSk7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGln
aHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZH
RkVMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD4gU1ZHRkVQb2ludExpZ2h0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9jbGlwUGF0
aFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2xpcFBh
dGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9pc0dseXBoQ2Fj
aGVWYWxpZChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udFRh
ZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdGb250RWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZ1bmNBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNBVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNBRWxl
bWVudD4gU1ZHRkVGdW5jQUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAs
IG1feShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpjdXJzb3JUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ3Vyc29yRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0FuaW1hdGVFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmlt
YXRlQ29sb3JUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDcgQEAKICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0dGVybkVsZW1lbnQoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2
ICs1MSw3IEBACiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25U
eXBlKQogICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9u
VHlwZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxl
Q2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogICAgICwgbV95MihMZW5ndGhN
b2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0xpbmVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAog
ICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUltYWdlVGFnKSk7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFSW1hZ2VFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVNyY0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShmb250X2ZhY2Vfc3JjVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZVNyY0VsZW1lbnQ+IFNWR0ZvbnRGYWNl
U3JjRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2Us
IGZhbHNlKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFNWR1NWR0VsZW1lbnQq
IFNWR0RvY3VtZW50Ojpyb290RWxlbWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGbG9vZFRh
ZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVGbG9v
ZEVsZW1lbnQ+IFNWR0ZFRmxvb2RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RT
cGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAg
OiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpOworICAgIGluaXRXcmFwcGFibGUo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVFNwYW5FbGVtZW50PiBTVkdUU3BhbkVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDYgKzY2LDcgQEAKICAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmVjdFRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVu
dCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fc3ZnTG9hZEV2ZW50
VGltZXIodGhpcywgJlNWR0VsZW1lbnQ6OnN2Z0xvYWRFdmVudFRpbWVyRmlyZWQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykpOworICAgIGluaXRXcmFwcGFi
bGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTY3JpcHRFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogICAgIDogU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0dUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRnVuY0dFbGVtZW50PiBTVkdGRUZ1bmNHRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZGVzY1RhZykp
OworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRGVzY0VsZW1l
bnQ+IFNWR0Rlc2NFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiB7CiAgICAgc2V0QW5pbWF0aW9u
TW9kZShUb0FuaW1hdGlvbik7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRh
ZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU2V0RWxl
bWVudD4gU1ZHU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQAogICAgICwgbV9fb3BlcmF0b3IoRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcpKTsKKyAg
ICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDYgKzY5LDcgQEAKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgY3gvY3kvci9m
ciBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVl
IG9mICI1MCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpyYWRpYWxHcmFkaWVudFRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAgICAgLCBt
X2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmb3JlaWduT2JqZWN0VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQAogewogICAgIC8vIFNwZWM6IElmIHRoZSBtYXJr
ZXJXaWR0aC9tYXJrZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZl
Y3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6Om1hcmtlclRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNYXJrZXJFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBACiAgICAgLCBtX3RhcmdldExpc3RlbmVyKFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnRyZWZUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVFJlZkVsZW1lbnQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlVGlsZVRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVRpbGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z2x5cGhUYWcpKTsKKyAgICBpbml0V3Jh
cHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0dseXBoRWxlbWVudD4gU1ZHR2x5cGhF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdQb2x5RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
cG9seWdvblRhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHUG9seWdvbkVsZW1lbnQ+IFNWR1BvbHlnb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBA
CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAv
LyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0
aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01hc2tFbGVtZW50
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksNyBAQAogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICBpbml0
V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFjZV9mb3JtYXRUYWcpKTsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlRm9ybWF0RWxl
bWVudD4gU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBA
CiAgICAgLCBtX2FtcGxpdHVkZSgxKQogICAgICwgbV9leHBvbmVudCgxKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7
CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0FsdEdseXBoRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeDIgYXR0cmli
dXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAw
JSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVh
ckdyYWRpZW50VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6ZmVPZmZzZXRUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVPZmZzZXRFbGVtZW50KCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAogU1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENv
bnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZEVsZW1lbnQoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6ZGVmc1RhZykpOworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdEZWZzRWxlbWVudCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAsIG1feUNoYW5u
ZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICAsIG1fbW9kZShGRUJMRU5E
X01PREVfTk9STUFMKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5k
VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0ZFQmxlbmRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N5bWJvbEVsZW1l
bnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAgICAgLCBtX3ZpZXdUYXJnZXQoU1ZHTmFt
ZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp2
aWV3VGFnKSk7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR1ZpZXdFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWV0YWRhdGFUYWcpKTsKKyAgICBpbml0V3JhcHBh
YmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR01ldGFkYXRhRWxlbWVudD4gU1ZHTWV0YWRh
dGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX29mZnNldCgwKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdG9wVGFnKSk7CisgICAgaW5pdFdyYXBwYWJs
ZSh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0b3BFbGVtZW50
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgbV9zdmdMb2FkRXZlbnRUaW1l
cih0aGlzLCAmU1ZHRWxlbWVudDo6c3ZnTG9hZEV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBTVkdTdHlsZUVsZW1lbnQ6On5TVkdTdHlsZUVsZW1lbnQoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw2ICs1OCw3IEBACiAgICAgLCBtX3IoTGVuZ3RoTW9kZU90aGVyKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xlRWxlbWVudCgp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICAgICAsIG1fc3BhY2luZyhT
VkdUZXh0UGF0aFNwYWNpbmdFeGFjdCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6dGV4dFBhdGhUYWcpKTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogewogICAgIHNldENhbGNNb2Rl
KENhbGNNb2RlUGFjZWQpOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGFuaW1hdGVNb3Rpb25UYWcp
KTsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50PiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMyw3
IEBACiAjaWZuZGVmIE5ERUJVRwogICAgIHhtbEh0dHBSZXF1ZXN0Q291bnRlci5pbmNyZW1lbnQo
KTsKICNlbmRpZgorICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0
Ojp+WE1MSHR0cFJlcXVlc3QoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgLCBtX29s
ZFZlcnNpb24ob2xkVmVyc2lvbikKICAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQogewor
ICAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6On5J
REJWZXJzaW9uQ2hhbmdlRXZlbnQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiBJREJDdXJzb3JXaXRoVmFs
dWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVx
dWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKICAgICA6IElEQkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwg
dHJhbnNhY3Rpb24pCiB7CisgICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIElEQkN1cnNv
cldpdGhWYWx1ZTo6fklEQkN1cnNvcldpdGhWYWx1ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKICAgICBBU1NF
UlQobV9zb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQk9iamVjdFN0b3JlVHlwZSB8fCBtX3Nv
dXJjZS0+dHlwZSgpID09IElEQkFueTo6SURCSW5kZXhUeXBlKTsKICAgICBBU1NFUlQobV90cmFu
c2FjdGlvbik7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogSURCQ3Vyc29yOjp+SURC
Q3Vyc29yKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmlkbAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogICAgIENvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBWOE5v
V3JhcHBlckNhY2hlLAotICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBKU05vU3RhdGljVGFibGVz
LAogXSBpbnRlcmZhY2UgSURCQW55IHsKICAgICAvLyBUaGlzIHNwYWNlIGlzIGludGVudGlvbmFs
bHkgbGVmdCBibGFuay4KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxNCBAQAogCiBSVENEYXRh
Q2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KCkKIHsKKyAgICBpbml0V3JhcHBhYmxl
KHRoaXMpOwogfQogCiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hhbm5lbCkKICAgICA6IEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fY2hhbm5lbChjaGFubmVsKQogeworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hh
bm5lbEV2ZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNo
YW5nZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDIxIEBACiAKIFJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQogeworICAgIGluaXRX
cmFwcGFibGUodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygp
LnRvbmVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV90b25lKHRvbmUpCiB7Cisg
ICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRD
RFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50LCBpbml0
aWFsaXplcikKICAgICAsIG1fdG9uZShpbml0aWFsaXplci50b25lKQogeworICAgIGluaXRXcmFw
cGFibGUodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNo
YW5nZUV2ZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAKIFJUQ0ljZUNhbmRp
ZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0
aGlzKTsKIH0KIAogUlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OlJUQ0ljZUNhbmRpZGF0ZUV2ZW50KGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRl
PiBjYW5kaWRhdGUpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkuaWNlY2FuZGlkYXRlRXZlbnQs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fY2FuZGlkYXRlKGNhbmRpZGF0ZSkKIHsK
KyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBSVENJY2VDYW5kaWRhdGVFdmVudDo6flJU
Q0ljZUNhbmRpZGF0ZUV2ZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAK
IE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKIHsKKyAgICBp
bml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3Ry
ZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2spCiAgICAg
OiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3RyYWNrKHRyYWNr
KQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2tFdmVu
dDo6fk1lZGlhU3RyZWFtVHJhY2tFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE4ICs1NCwyMSBAQAogCiBNZWRpYVN0
cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMp
OwogfQogCiBNZWRpYVN0cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gc3RyZWFtKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlKQogICAgICwgbV9zdHJlYW0oc3RyZWFtKQogeworICAgIGluaXRXcmFwcGFibGUodGhpcyk7
CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBNZWRpYVN0cmVhbUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAg
OiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fc3RyZWFtKGluaXRpYWxpemVyLnN0
cmVhbSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbUV2ZW50
Ojp+TWVkaWFTdHJlYW1FdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogQXVkaW9Qcm9jZXNz
aW5nRXZlbnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KCkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6QXVkaW9Qcm9jZXNzaW5nRXZlbnQoUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+
IG91dHB1dEJ1ZmZlcikKQEAgLTUyLDYgKzUzLDcgQEAKICAgICAsIG1faW5wdXRCdWZmZXIoaW5w
dXRCdWZmZXIpCiAgICAgLCBtX291dHB1dEJ1ZmZlcihvdXRwdXRCdWZmZXIpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6On5BdWRpb1Byb2Nl
c3NpbmdFdmVudCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NCw2ICsyNDQsNyBAQAogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAg
ICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRo
aXMpOwogfQogCiBHZW9sb2NhdGlvbjo6fkdlb2xvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3Iu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBA
QAogICAgICwgbV9lcnJvcihlcnJvcikKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogeworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3IoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFNw
ZWVjaFJlY29nbml0aW9uRXJyb3JJbml0JiBpbml0aWFsaXplcikKQEAgLTg1LDYgKzg2LDcgQEAK
ICAgICAsIG1fZXJyb3IoaW5pdGlhbGl6ZXIuZXJyb3IpCiAgICAgLCBtX21lc3NhZ2UoaW5pdGlh
bGl6ZXIubWVzc2FnZSkKIHsKKyAgICBpbml0V3JhcHBhYmxlKHRoaXMpOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OmludGVyZmFjZU5hbWUoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAKIFNwZWVjaFN5bnRoZXNpc0V2ZW50OjpTcGVlY2hTeW50aGVzaXNF
dmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3BlZWNoU3ludGhlc2lz
RXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5z
aWduZWQgbG9uZyBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5h
bWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3Vs
dCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQogewor
ICAgIGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNw
ZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIFBhc3NS
ZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+IHJlc3VsdCwgc2hvcnQgcmVzdWx0SW5kZXgs
IFBhc3NSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0PiByZXN1bHRIaXN0b3J5KQpA
QCAtODUsNiArODYsNyBAQAogICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICwgbV9yZXN1bHRI
aXN0b3J5KHJlc3VsdEhpc3RvcnkpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAog
U3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSwgdW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gPiYgcmVzdWx0cykKQEAgLTkyLDYg
Kzk0LDcgQEAKICAgICAsIG1fcmVzdWx0SW5kZXgocmVzdWx0SW5kZXgpCiAgICAgLCBtX3Jlc3Vs
dHMoU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykpCiB7CisgICAg
aW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVj
aFJlY29nbml0aW9uRXZlbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193207</attachid>
            <date>2013-03-14 17:12:16 -0700</date>
            <delta_ts>2013-03-18 14:59:24 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>awesome_3.txt</filename>
            <type>text/plain</type>
            <size>188198</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBACiAg
ICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKLSAg
ICAgIFsnT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiJywgeworICAgICAgWydPUz09Im1hYyInLCB7
CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCiAgICAgICAgICAgIyA4Qml0IHRleHQgcnVu
cyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgYWxsIHBsYXRmb3JtcyB3ZWJraXQub3JnL2IvMTExMzQ4
CiAgICAgICAgICAgJ0VOQUJMRV84QklUX1RFWFRSVU49MScsCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU1N0eWxlRGVjbGFyYXRpb246OkNTU1N0eWxlRGVj
bGFyYXRpb24oKQoreworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDEyIEBACiBXZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbSkKICAgICA6IG1fbWF0cml4KG0pCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJpeChj
b25zdCBTdHJpbmcmIHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICBzZXRNYXRyaXhWYWx1ZShzLCBlYyk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbigpIHsgfQorICAg
IENTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQkod29ya2luZyBjb3B5KQpAQCAtNTA0LDEzICs1MDQsMTEgQEAKIAogICAgIG15ICRub1RvVjgg
PSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcHJlc3NUb0pTT2JqZWN0In07
CiAgICAgbXkgJG5vV3JhcCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE5v
V3JhcHBlckNhY2hlIn0gfHwgJG5vVG9WODsKLSAgICBpZiAoISRub1dyYXApIHsKLSAgICAgICAg
bXkgJGNyZWF0ZVdyYXBwZXJBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0aXZl
VHlwZSk7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKSBpZiAhJG5vV3JhcDsKICAgICBmcmllbmQgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKCR7Y3JlYXRlV3JhcHBlckFyZ3VtZW50VHlwZX0sIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoJHtuYXRpdmVUeXBl
fSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogRU5ECi0gICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogfTsKQEAg
LTUzMyw3ICs1MzEsNiBAQAogfQogRU5ECiAgICAgfSBlbHNlIHsKLQogICAgICAgICBteSAkY3Jl
YXRlV3JhcHBlckNhbGwgPSAkY3VzdG9tV3JhcCA/ICIke3Y4SW50ZXJmYWNlTmFtZX06OndyYXAi
IDogIiR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlciI7CiAgICAgICAgIG15ICRyZXR1
cm5pbmdXcmFwcGVyID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4V3JhcEFz
RnVuY3Rpb24ifSA/ICJWOERPTVdyYXBwZXI6OnRvRnVuY3Rpb24od3JhcHBlcikiIDogIndyYXBw
ZXIiOwogICAgICAgICBteSAkcmV0dXJuaW5nQ3JlYXRlZFdyYXBwZXJPcGVuaW5nID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4V3JhcEFzRnVuY3Rpb24ifSA/ICJWOERPTVdy
YXBwZXI6OnRvRnVuY3Rpb24oIiA6ICIiOwpAQCAtNTUxLDYgKzU0OCwxMCBAQAogewogICAgIEFT
U0VSVChpbXBsKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlz
b2xhdGUpLklzRW1wdHkoKSk7CisgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJl
U3RvcmVkSW5PYmplY3QoaW1wbCkpIHsKKyAgICAgICAgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBp
bmZvID0gU2NyaXB0V3JhcHBhYmxlOjpnZXRUeXBlSW5mb0Zyb21PYmplY3QoaW1wbCk7CisgICAg
ICAgIHJldHVybiBpbmZvLT53cmFwT2JqZWN0RnVuY3Rpb24oaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICB9CiAgICAgcmV0dXJuICR7cmV0dXJuaW5nQ3JlYXRlZFdyYXBwZXJP
cGVuaW5nfSRjcmVhdGVXcmFwcGVyQ2FsbChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
JHtyZXR1cm5pbmdDcmVhdGVkV3JhcHBlckNsb3Npbmd9OwogfQogRU5ECkBAIC0yMDE2LDcgKzIw
MTcsNyBAQAogCiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKTsKIAotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCks
ICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLmdldCgpLCAmVjgke2ludGVyZmFj
ZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMjA4Niw3
ICsyMDg3LDcgQEAKICAgICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVy
ZmFjZU5hbWV9OjpjcmVhdGUodHlwZSwgZXZlbnRJbml0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZWOCR7aW50ZXJmYWNlTmFt
ZX06OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGV2ZW50LnJlbGVhc2UoKS5nZXQoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OwogICAgIHJldHVybiB3cmFwcGVyOwogfQogRU5ECkBAIC0yMTcyLDcgKzIxNzMsNyBAQAogCiAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwotV3JhcHBlclR5cGVJbmZvICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpp
bmZvID0geyAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsICR7djhJ
bnRlcmZhY2VOYW1lfTo6ZGVyZWZPYmplY3QsICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRU
YXJnZXQsIDAsICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJ
bmZvICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvID0geyAke3Y4SW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZGVyZWZP
YmplY3QsICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJnZXQsIDAsICR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVy
VHlwZU9iamVjdFByb3RvdHlwZSwgMCB9OwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKQEAgLTIyMzAsNyArMjIzMSw3IEBACiAKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVu
dCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKS5nZXQoKSwgJiR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMjY2Myw2ICsyNjY0LDcgQEAKICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiQmluZGluZ1N0YXRlLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiQ29udGV4dEZlYXR1cmVzLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdFdyYXBwYWJs
ZS5oIik7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4QmluZGluZy5oIik7CiAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4RE9NV3JhcHBlci5oIik7CiAKQEAgLTI3MjMsMTYgKzI3MjUsNDEgQEAK
IAogRU5ECiAKLQogICAgIG15ICRwYXJlbnRDbGFzc0luZm8gPSAkcGFyZW50Q2xhc3MgPyAiJiR7
cGFyZW50Q2xhc3N9OjppbmZvIiA6ICIwIjsKLQogICAgIG15ICRXcmFwcGVyVHlwZVByb3RvdHlw
ZSA9ICRpbnRlcmZhY2UtPmlzRXhjZXB0aW9uID8gIldyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUi
IDogIldyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIjsKKyAgICBteSAkbm9XcmFwID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Tm9XcmFwcGVyQ2FjaGUifSB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcHJlc3NUb0pTT2JqZWN0In07CisgICAgbXkg
JHdyYXBwZXJGdW5jdGlvbiA9ICRub1dyYXAgPyAiMCIgOiAicmVpbnRlcnByZXRfY2FzdDxXcmFw
T2JqZWN0RnVuY3Rpb24+KCR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlcikiOwogCi0g
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJXcmFwcGVyVHlwZUluZm8gJHt2OEludGVy
ZmFjZU5hbWV9OjppbmZvID0geyAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlLCAke3Y4
SW50ZXJmYWNlTmFtZX06OmRlcmVmT2JqZWN0LCAkdG9BY3RpdmVET01PYmplY3QsICR0b0V2ZW50
VGFyZ2V0LCAkcm9vdEZvckdDLCAke3Y4SW50ZXJmYWNlTmFtZX06Omluc3RhbGxQZXJDb250ZXh0
UHJvdG90eXBlUHJvcGVydGllcywgJHBhcmVudENsYXNzSW5mbywgJFdyYXBwZXJUeXBlUHJvdG90
eXBlIH07XG5cbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAibmFtZXNwYWNl
ICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsIHtcblxuIik7CisgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsIDw8RU5EKTsKK1dyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNlTmFtZX06
OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUsICR7djhJbnRlcmZhY2VO
YW1lfTo6ZGVyZWZPYmplY3QsICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJnZXQsICRy
b290Rm9yR0MsICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzLCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUsICR7d3Jh
cHBlckZ1bmN0aW9ufSB9OwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJ0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9XG5cbiIpOworRU5ECisgICAgcHVz
aChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKSBpZiAhJGNvZGVHZW5lcmF0b3ItPklzU1ZH
VHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKTsKK3ZvaWQgc2NyaXB0d3JhcHBhYmxl
X2luaXQoJHtpbnRlcmZhY2VOYW1lfSogb2JqZWN0KQoreworICAgIGlmIChTY3JpcHRXcmFwcGFi
bGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkpCisgICAgICAgIFNjcmlwdFdy
YXBwYWJsZTo6c2V0VHlwZUluZm9Jbk9iamVjdChvYmplY3QsICYke3Y4SW50ZXJmYWNlTmFtZX06
OmluZm8pOworfQogCisvLyBETyBOT1QgQ0kuICBBbm5veWFuY2UgZ2VuZXJhdG9yIHRvIGlkZW50
aWZ5IHdyYXBwYWJsZSBjbGFzc2VzIGZyb20gY29tcGlsZXIsIG9oLgorLy8gc3RydWN0IENoZWNr
JHtpbnRlcmZhY2VOYW1lfSB7CisvLyAgICBDaGVjayR7aW50ZXJmYWNlTmFtZX0oKQorLy8gICAg
eworLy8gICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2Jq
ZWN0KCgke2ludGVyZmFjZU5hbWV9KikwKSkKKy8vICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJERVJQOiAke2ludGVyZmFjZU5hbWV9IGlzICR7bmF0aXZlVHlwZX1cXG4iKTsKKy8vICAgIH0K
Ky8vIH07CisvLyBzdGF0aWMgQ2hlY2ske2ludGVyZmFjZU5hbWV9IGNoZWNrXyR7aW50ZXJmYWNl
TmFtZX07CisKK0VORAorCisgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKTsK
K25hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbCB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KKworRU5ECisKICAgICBteSAkaGFzQ29uc3RydWN0
b3JzID0gMDsKICAgICBteSAkaGFzUmVwbGFjZWFibGUgPSAwOwogCkBAIC0zNTQ2LDEwICszNTcz
LDEwIEBACiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6SGFuZGxlPHY4
OjpPYmplY3Q+ICR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlcigke2NyZWF0ZVdyYXBw
ZXJBcmd1bWVudFR5cGV9IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHt2OElu
dGVyZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
LSAgICBBU1NFUlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlcihpbXBsLmdldCgpLCBpc29sYXRlKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChpbXBsKTsK
KyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpLklzRW1w
dHkoKSk7CiBFTkQKIAogICAgIG15ICR2dGFibGVOYW1lR251ID0gR2V0R251VlRhYmxlTmFtZUZv
ckludGVyZmFjZSgkaW50ZXJmYWNlKTsKQEAgLTM1NjEsNyArMzU4OCw3IEBACiBFTkQKIAogICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCkgaWYgKCRiYXNlVHlwZSBuZSAkaW50ZXJmYWNlTmFt
ZSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDwke2Jhc2VUeXBl
fSo+KGltcGwuZ2V0KCkpKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbC5nZXQoKSkpOworICAg
IEFTU0VSVChzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8JHtiYXNlVHlwZX0qPihpbXBs
KSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KGltcGwpKTsKIEVORAogCiAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRG9jdW1lbnQiKSkgewpAQCAt
MzU2OSw3ICszNTk2LDcgQEAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkg
ewogICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5pbml0aWFsaXplTWFpbldvcmxkKCkpIHsK
ICAgICAgICAgICAgIC8vIGluaXRpYWxpemVNYWluV29ybGQgbWF5IGhhdmUgY3JlYXRlZCBhIHdy
YXBwZXIgZm9yIHRoZSBvYmplY3QsIHJldHJ5IGZyb20gdGhlIHN0YXJ0LgotICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVy
KGltcGwuZ2V0KCksIGlzb2xhdGUpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpOwogICAg
ICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
d3JhcHBlcjsKICAgICAgICAgfQpAQCAtMzU3OSwxMSArMzYwNiwxMSBAQAogCiAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1w
bCwgaXNvbGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAKLSAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3Jh
cHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwsIGlzb2xhdGUpOwogICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVu
ZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgJKHJldmlzaW9uIDE0NTAyNikKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx2OC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgCisKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CiAgICAgY2xhc3MgRE9NRGF0YVN0b3Jl
OwogICAgIGNsYXNzIEV2ZW50VGFyZ2V0OwpAQCAtNjEsNiArNjEsNyBAQAogICAgIHR5cGVkZWYg
RXZlbnRUYXJnZXQqICgqVG9FdmVudFRhcmdldEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+KTsKICAgICB0eXBlZGVmIHZvaWQqICgqT3BhcXVlUm9vdEZvckdDKSh2b2lkKiwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7CiAgICAgdHlwZWRlZiB2b2lkICgq
SW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7CisgICAgdHlwZWRlZiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+ICgqV3JhcE9iamVjdEZ1bmN0aW9uKSh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Piwgdjg6Oklzb2xhdGUqKTsKIAogICAgIGVudW0gV3JhcHBlclR5cGVQcm90b3R5cGUgewogICAg
ICAgICBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwKQEAgLTc2LDggKzc3LDcgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V3JhcHBlclR5cGVJbmZv
Kj4odjg6OkV4dGVybmFsOjpDYXN0KCp0eXBlSW5mb1dyYXBwZXIpLT5WYWx1ZSgpKTsKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgCisKICAgICAgICAgYm9vbCBlcXVhbHMoY29uc3QgV3Jh
cHBlclR5cGVJbmZvKiB0aGF0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
dGhpcyA9PSB0aGF0OwpAQCAtOTIsMTUgKzkyLDE4IEBACiAKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRl
LCB3b3JsZFR5cGUpOyB9Ci0gICAgICAgIAorCisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRU
ZW1wbGF0ZUZ1bmN0aW9uKGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgICAgIH0KKwogICAgICAg
ICB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKGRlcmVmT2JqZWN0RnVuY3Rpb24pIAorICAgICAgICAgICAgaWYgKGRlcmVmT2JqZWN0RnVu
Y3Rpb24pCiAgICAgICAgICAgICAgICAgZGVyZWZPYmplY3RGdW5jdGlvbihvYmplY3QpOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pCkBAIC0xMzYsNiArMTM5LDcgQEAKICAgICAgICAgY29u
c3QgSW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24gaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb247CiAgICAgICAgIGNvbnN0IFdyYXBw
ZXJUeXBlSW5mbyogcGFyZW50Q2xhc3M7CiAgICAgICAgIGNvbnN0IFdyYXBwZXJUeXBlUHJvdG90
eXBlIHdyYXBwZXJUeXBlUHJvdG90eXBlOworICAgICAgICBjb25zdCBXcmFwT2JqZWN0RnVuY3Rp
b24gd3JhcE9iamVjdEZ1bmN0aW9uOwogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEhUTUxDdXN0b21FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEhUTUxFbGVt
ZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVX
cmFwcGVyKEhUTUxFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
KTsKIH07CiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ3VzdG9tRWxlbWVu
dDo6dG9WOChIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw4IEBACiAgICAgICAgIC8vIHdh
eSBpcyB0byBjaGVjayB3aGV0aGVyIHRoZSB3cmFwcGFibGUncyB3cmFwcGVyIGlzIHRoZSBzYW1l
IGFzCiAgICAgICAgIC8vIHRoZSBob2xkZXIuCiAgICAgICAgIGlmICgoIURPTVdyYXBwZXJXb3Js
ZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHx8
IGhvbGRlckNvbnRhaW5zV3JhcHBlcihjb250YWluZXIsIGhvbGRlcikpIHsKLSAgICAgICAgICAg
IGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICAgICAg
aWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBhYmxlOjpnZXRXcmFwcGVyRnJvbU9i
amVjdChvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG1haW5Xb3JsZFN0b3JlKCktPm1fd3Jh
cHBlck1hcC5nZXQob2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gY3VycmVudChj
b250YWluZXIuR2V0SXNvbGF0ZSgpKS0+Z2V0KG9iamVjdCk7CkBAIC03Niw5ICs3Niw5IEBACiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBnZXRXcmFwcGVyKFQqIG9iamVjdCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewotICAg
ICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01h
aW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6Ondy
YXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2Jq
ZWN0KSkgewogICAgICAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRl
ZFdvcmxkc0V4aXN0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9i
amVjdChvYmplY3QpOworICAgICAgICAgICAgICAgIHJldHVybiBTY3JpcHRXcmFwcGFibGU6Omdl
dFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGN1
cnJlbnQoaXNvbGF0ZSktPmdldChvYmplY3QpOwogICAgIH0KQEAgLTg2LDkgKzg2LDkgQEAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2Jq
ZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7Ci0gICAg
ICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFp
bldvcmxkT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3Jh
cHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmpl
Y3QpKSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVk
V29ybGRzRXhpc3QoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2Jq
ZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBT
Y3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xh
dGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtOTgsOCArOTgsOCBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFQqIG9iamVjdCkKICAgICB7
Ci0gICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYm
IG1fdHlwZSA9PSBNYWluV29ybGQpCi0gICAgICAgICAgICByZXR1cm4gZ2V0V3JhcHBlckZyb21P
YmplY3Qob2JqZWN0KTsKKyAgICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJl
U3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAg
ICAgcmV0dXJuIFNjcmlwdFdyYXBwYWJsZTo6Z2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsK
ICAgICAgICAgcmV0dXJuIG1fd3JhcHBlck1hcC5nZXQob2JqZWN0KTsKICAgICB9CiAKQEAgLTEx
MSw4ICsxMTEsOCBAQAogICAgIHsKICAgICAgICAgQVNTRVJUKCEhb2JqZWN0KTsKICAgICAgICAg
QVNTRVJUKCF3cmFwcGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVy
SXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKLSAgICAg
ICAgICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZp
Z3VyYXRpb24pOworICAgICAgICBpZiAoU2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9y
ZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKKyAgICAgICAgICAg
IFNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNv
bGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbV93cmFwcGVyTWFwLnNldChvYmplY3QsIHdyYXBwZXIsIGNvbmZpZ3VyYXRpb24pOwpA
QCAtMTIwLDkgKzEyMCw2IEBACiAKICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBtYWluV29ybGRT
dG9yZSgpOwogCi0gICAgc3RhdGljIGJvb2wgbWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmpl
Y3Qodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGljIGJvb2wgbWFpbldvcmxkV3Jh
cHBlcklzU3RvcmVkSW5PYmplY3QoU2NyaXB0V3JhcHBhYmxlKikgeyByZXR1cm4gdHJ1ZTsgfQot
CiAgICAgc3RhdGljIGJvb2wgaXNNYWluV29ybGRPYmplY3Qodm9pZCopIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgc3RhdGljIGJvb2wgaXNNYWluV29ybGRPYmplY3QoTm9kZSopIHsgcmV0dXJuIHRy
dWU7IH0KIApAQCAtMTMxLDYgKzEyOCw3IEBACiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSG9sZGVyQ29udGFpbmVyPgogICAgIHN0
YXRpYyBib29sIGhvbGRlckNvbnRhaW5zV3JhcHBlcihjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgU2NyaXB0V3JhcHBhYmxlKiB3cmFwcGFibGUpCiAgICAgewpAQCAtMTM5LDI1ICsx
MzcsNiBAQAogICAgICAgICByZXR1cm4gY29udGFpbmVyLkhvbGRlcigpID09IHdyYXBwYWJsZS0+
d3JhcHBlcigpOwogICAgIH0KIAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdl
dFdyYXBwZXJGcm9tT2JqZWN0KHZvaWQqKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgfQot
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9tT2JqZWN0KFNj
cmlwdFdyYXBwYWJsZSogb2JqZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9iamVjdC0+d3Jh
cHBlcigpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdCh2b2lk
Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBjb25zdCBXcmFwcGVyQ29u
ZmlndXJhdGlvbiYpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2Jq
ZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKLSAgICB7Ci0gICAg
ICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsK
LSAgICB9Ci0KICAgICBXcmFwcGVyV29ybGRUeXBlIG1fdHlwZTsKICAgICBET01XcmFwcGVyTWFw
PHZvaWQ+IG1fd3JhcHBlck1hcDsKIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSwgVjhIVE1MSW1hZ2VFbGVtZW50OjpkZXJlZk9iamVjdCwgMCwgVjhIVE1MSW1h
Z2VFbGVtZW50Ojp0b0V2ZW50VGFyZ2V0LCAwLCBWOEhUTUxJbWFnZUVsZW1lbnQ6Omluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5
cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5m
byA9IHsgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOEhUTUxJ
bWFnZUVsZW1lbnQ6OmRlcmVmT2JqZWN0LCAwLCBWOEhUTUxJbWFnZUVsZW1lbnQ6OnRvRXZlbnRU
YXJnZXQsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwgMCB9OwogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC03Nyw3ICs3Nyw3IEBACiAK
ICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhl
aWdodCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltYWdlLnJl
bGVhc2UoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5yZWxlYXNlKCku
Z2V0KCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBSZWZQdHI8TXV0YXRpb25D
YWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRl
eHQsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNl
cnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFz
ZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2Jz
ZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICB9CiAgICAgUmVmUHRyPFdlYktpdFBvaW50
PiBwb2ludCA9IFdlYktpdFBvaW50OjpjcmVhdGUoeCwgeSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKHBvaW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHBvaW50LnJlbGVhc2UoKS5n
ZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5o
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyVmlld0N1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAgICAg
aWYgKGhhc0luZGV4ZXIpCiAgICAgICAgIGFyZ3MuSG9sZGVyKCktPlNldEluZGV4ZWRQcm9wZXJ0
aWVzVG9FeHRlcm5hbEFycmF5RGF0YShhcnJheS5nZXQoKS0+YmFzZUFkZHJlc3MoKSwgYXJyYXlU
eXBlLCBhcnJheS5nZXQoKS0+bGVuZ3RoKCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLmdldCgpLCB0
eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246Oklu
ZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjI0LDcgKzIyNCw3IEBA
CiAgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5
LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCkuZ2V0KCksIHR5cGUsIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TUZvcm1EYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRh
ID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3JtKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihkb21Gb3JtRGF0YS5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkb21Gb3JtRGF0YS5yZWxl
YXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAvLyAn
bmV3IERhdGFWaWV3KCknIGFuZCB0aGUgY2FsbCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY2FjaGVk
IERhdGFWaWV3IG9iamVjdC4KICAgICAgICAgUmVmUHRyPERhdGFWaWV3PiBkYXRhVmlldyA9IERh
dGFWaWV3OjpjcmVhdGUoMCk7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgICAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKS5n
ZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogICAgIGlm
IChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCkpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBACiAgICAgCiAgICAgLy8gVHJhbnNmb3JtIHRoZSBo
b2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXVkaW8gY29udGV4dC4KICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgCiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxB
bGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0
aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVy
LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBACiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1
cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlQ2hhbm5lbEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw5ICs0Niw3IEBACiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNz
YWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotCiAgICAgUmVmUHRyPE1lc3NhZ2VDaGFubmVsPiBvYmogPSBNZXNzYWdl
Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQpOwotCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgZnJvbSB0
aGUgTWVzc2FnZUNoYW5uZWwgd3JhcHBlciB0byB0aGUgdHdvCkBAIC01Niw4ICs1NCw3IEBACiAg
ICAgLy8gc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVyIGlz
IGFyb3VuZC4KICAgICBWOEhpZGRlblByb3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRkZW5SZWZlcmVu
Y2Uod3JhcHBlciwgInBvcnQxIiwgdG9WOChvYmotPnBvcnQxKCksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhv
bGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwotCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihvYmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKS5nZXQoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEhUTUxDdXN0b21FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCwxMyArNTQsMTMgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOEhUTUxDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhIVE1MQ3VzdG9t
RWxlbWVudDo6Y3JlYXRlV3JhcHBlcihIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFT
U0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwuZ2V0KCkp
OworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwpOwogICAgIGlmICghY29uc3Ry
dWN0b3IpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdl
YkNvcmU6OnRvVjgodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbC5nZXQoKSksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFs
dWUgPSBXZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZXJWYWx1ZS5Jc0VtcHR5KCkgJiYg
d3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKICAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBG
dW5jdGlvblRlbXBsYXRlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwODEzOAogICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzRmVhdHVyZUFs
bG93ZWQoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSkpIHsKLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVy
KGNyZWF0aW9uQ29udGV4dCwgJlY4SFRNTEVsZW1lbnQ6OmluZm8sIGltcGwuZ2V0KCksIGlzb2xh
dGUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBw
ZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmVjhIVE1MRWxlbWVudDo6aW5mbywg
aW1wbCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
ICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZWOEhU
TUxFbGVtZW50OjppbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC04NSw3ICs4NSw3IEBACiAg
ICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBsLmdldCgpLCBpc29s
YXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCB0eXBlSW5mbywgaW1wbCwgaXNvbGF0ZSk7
CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsx
MjgsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1f
d29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQsIG1faXNvbGF0ZSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihtX3dvcmtlckNvbnRleHQsIGNvbnRleHRUeXBlLCBqc1dv
cmtlckNvbnRleHQsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7
CiAKICAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBlIG9m
IHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsT2Jq
ZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5H
ZXRQcm90b3R5cGUoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKiwgdjg6Oklzb2xhdGUqKTsKIAogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3JhcHBl
clR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6TGlmZXRpbWUpOworICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCosIFdyYXBwZXJUeXBl
SW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkxpZmV0aW1lKTsKICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIHNldE5hdGl2
ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCopOwog
ICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJOYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyopOwogCkBAIC04OSwxMiArODksMTMgQEAKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0
cjxUPiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246Okxp
ZmV0aW1lIGxpZmV0aW1lKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoVCogb2JqZWN0LCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGltZSkKICAgICB7
Ci0gICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2JqZWN0LmdldCgpKTsKKyAg
ICAgICAgb2JqZWN0LT5yZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgZnVuY3Rpb24gZnJvbSBX
cmFwcGVyVHlwZUluZm8uCisgICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2Jq
ZWN0KTsKICAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7Ci0gICAgICAg
IFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBidWlsZFdyYXBwZXJDb25maWd1
cmF0aW9uKG9iamVjdC5nZXQoKSwgbGlmZXRpbWUpOwotICAgICAgICBET01EYXRhU3RvcmU6OnNl
dFdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlv
bik7CisgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBidWlsZFdy
YXBwZXJDb25maWd1cmF0aW9uKG9iamVjdCwgbGlmZXRpbWUpOworICAgICAgICBET01EYXRhU3Rv
cmU6OnNldFdyYXBwZXIob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw3ICsz
NDEsNyBAQAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWxPYmplY3QgPSB0
b0lubmVyR2xvYmFsT2JqZWN0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgVjhET01XcmFwcGVyOjpz
ZXROYXRpdmVJbmZvKGlubmVyR2xvYmFsT2JqZWN0LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRv
dyk7CiAgICAgaW5uZXJHbG9iYWxPYmplY3QtPlNldFByb3RvdHlwZSh3aW5kb3dXcmFwcGVyKTsK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8
RE9NV2luZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1f
aXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcih3aW5kb3csICZWOERPTVdpbmRvdzo6aW5m
bywgd2luZG93V3JhcHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICBET01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhmYWxzZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKIAogV3JhcHBlclR5cGVJbmZvKiBucE9i
amVjdFR5cGVJbmZvKCkKIHsKLSAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIHR5cGVJbmZvID0g
eyAwLCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworICBz
dGF0aWMgV3JhcHBlclR5cGVJbmZvIHR5cGVJbmZvID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCBX
cmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwgMCB9OwogICAgIHJldHVybiAmdHlwZUluZm87CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAq
CiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zOSw0NiAr
MzksMTIzIEBACiAKIGNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0
V3JhcHBhYmxlKCkgeyB9CisgICAgU2NyaXB0V3JhcHBhYmxlKCkgOiBtX21hc2tlZFN0b3JhZ2Uo
MCkgeyB9CiAKKyAgICB+U2NyaXB0V3JhcHBhYmxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X21hc2tlZFN0b3JhZ2UpOyAgLy8gQXNzZXJ0IGluaXRpYWxpemF0aW9uIHZpYSBpbml0KCkgZXZl
biBpZiBub3Qgd3JhcHBlZCBsYXRlci4KKyAgICAgICAgbV9tYXNrZWRTdG9yYWdlID0gMDsgICAg
ICAvLyBCcmVhayBVQUYgYXR0ZW1wdHMgdG8gd3JhcC4KKyAgICB9CisKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4obWFza09yVW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7
CisgICAgICAgIHY4OjpPYmplY3QqIG9iamVjdCA9IGNvbnRhaW5zV3JhcHBlcigpID8gcmVpbnRl
cnByZXRfY2FzdDx2ODo6T2JqZWN0Kj4obWFza09yVW5tYXNrVmFsdWUobV9tYXNrZWRTdG9yYWdl
KSkgOiAwOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PihvYmplY3QpOwog
ICAgIH0KIAogICAgIHZvaWQgc2V0V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX21hc2tlZFdyYXBwZXIuSXNFbXB0
eSgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250YWluc1dyYXBwZXIoKSk7CiAgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGlzb2xhdGUsIHdyYXBwZXIpOwogICAgICAgICBjb25maWd1cmF0aW9uLmNvbmZp
Z3VyZVdyYXBwZXIocGVyc2lzdGVudCwgaXNvbGF0ZSk7CiAgICAgICAgIHBlcnNpc3RlbnQuTWFr
ZVdlYWsoaXNvbGF0ZSwgdGhpcywgd2Vha0NhbGxiYWNrKTsKLSAgICAgICAgbV9tYXNrZWRXcmFw
cGVyID0gbWFza09yVW5tYXNrUG9pbnRlcigqcGVyc2lzdGVudCk7CisgICAgICAgIG1fbWFza2Vk
U3RvcmFnZSA9IG1hc2tPclVubWFza1ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pigq
cGVyc2lzdGVudCkpOwogICAgIH0KIAorICAgIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZUlu
Zm8oKQorICAgIHsKKyAgICAgICAgaWYgKGNvbnRhaW5zVHlwZUluZm8oKSkKKyAgICAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFdyYXBwZXJUeXBlSW5mbyo+KG1fbWFza2Vk
U3RvcmFnZSAmIH4xKTsKKworICAgICAgICBpZiAoY29udGFpbnNXcmFwcGVyKCkpCisgICAgICAg
ICAgICByZXR1cm4gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcigpKTsKKworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgIHZvaWQgc2V0VHlwZUluZm8oY29uc3QgV3JhcHBlclR5cGVJbmZv
KiBpbmZvKQorICAgIHsKKyAgICAgICAgbV9tYXNrZWRTdG9yYWdlID0gKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihpbmZvKSB8IDEpOworICAgIH0KKwogICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAg
ICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNv
cmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9tYXNrZWRX
cmFwcGVyKTsKKyAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9tYXNrZWRTdG9yYWdlKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgYm9vbCB3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChjb25zdCB2
b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCB3cmFwcGVyQ2FuQmVTdG9y
ZWRJbk9iamVjdChjb25zdCBTY3JpcHRXcmFwcGFibGUqKSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2b2lk
KikKKyAgICB7CisgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAgfQorCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0V3JhcHBlckZyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCisg
ICAgeworICAgICAgcmV0dXJuIG9iamVjdC0+d3JhcHBlcigpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYpCisgICAgeworICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBl
ckluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKKyAgICB7CisgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBl
ciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFdy
YXBwZXJUeXBlSW5mbyogZ2V0VHlwZUluZm9Gcm9tT2JqZWN0KHZvaWQqIG9iamVjdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBnZXRUeXBlSW5mb0Zyb21PYmpl
Y3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0
LT50eXBlSW5mbygpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldFR5cGVJbmZvSW5PYmpl
Y3Qodm9pZCogb2JqZWN0LCBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8pCisgICAgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRU
eXBlSW5mb0luT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCBjb25zdCBXcmFwcGVyVHlw
ZUluZm8qIGluZm8pCisgICAgeworICAgICAgICBvYmplY3QtPnNldFR5cGVJbmZvKGluZm8pOwor
ICAgIH0KKworICAgIC8vIFdyYXBwYWJsZXMgbmVlZCB0byBiZSBpbml0aWFsaXplZCB3aXRoIHRo
ZWlyIG1vc3QgZGVycml2ZWQgd3JhcHBlZCB0eXBlCisgICAgLy8gaW4gbXVjaCB0aGUgc2FtZSB3
YXkgdGhhdCBjZXJ0YWluIG90aGVyIHR5cGVzIG5lZWQgdG8gYmUgYWRvcHRlZCBhbmQKKyAgICAv
LyBzbyBmb3J0aC4gVGhlIHRlbXBsYXRlZCBJbml0KCkgbWV0aG9kcyBhcmUgaW5zdGFudGlhdGVk
IGluIHRoZSBnZW5lcmF0ZWQKKyAgICAvLyBWOCBiaW5kaW5ncyBjb2RlLiBUaGUgSlNDIGNvZGUg
d2lsbCBtYWludGFpbiBjb21wYXRpYmlsaXR5IHZpYSBhIHNpbmdsZQorICAgIC8vIG5vLW9wIGlu
aXQodm9pZCopIG1ldGhvZCBoZXJlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPnN0YXRpYyB2
b2lkIGluaXQoVCogb2JqZWN0KQorICAgIHsKKyAgICAgICAgZXh0ZXJuIHZvaWQgc2NyaXB0d3Jh
cHBhYmxlX2luaXQoVCopOyAgLy8gR29vZCBvbGUgbGlua2VyIHdpbGwgaGVscCB1cyB3aGVyZSB0
ZW1wbGF0ZXMgY29tZSBzaG9ydC4KKyAgICAgICAgc2NyaXB0d3JhcHBhYmxlX2luaXQob2JqZWN0
KTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6
OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAg
c3RhdGljIGlubGluZSB1aW50cHRyX3QgbWFza09yVW5tYXNrVmFsdWUodWludHB0cl90IHZhbHVl
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKLSAg
ICAgICAgQVNTRVJUKCp2YWx1ZSA9PSBtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBw
ZXIpKTsKLSAgICAgICAgdmFsdWUuRGlzcG9zZShpc29sYXRlKTsKLSAgICAgICAgbV9tYXNrZWRX
cmFwcGVyLkNsZWFyKCk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCByYW5kb21NYXNrID0gfigo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSkgPj4g
MTMpIHwgMSk7IC8vIEVudHJvcHkgdmlhIEFTTFIsIGJvdHRvbSBiaXQgY2xlYXIuCisgICAgICAg
IHJldHVybiAodmFsdWUgXiByYW5kb21NYXNrKSAmICghdmFsdWUgLSAxKTsgLy8gUHJlc2VydmUg
bnVsbCB3aXRob3V0IGJyYW5jaGluZy4KICAgICB9CiAKLSAgICAvLyBTdG9yZXMgYSBtYXNrZWQg
d3JhcHBlciB0byBwcmV2ZW50IGF0dGFja2VycyBmcm9tIG92ZXJ3cml0aW5nIHRoaXMgZmllbGQK
LSAgICAvLyB3aXRoIGEgcGhvbnkgd3JhcHBlci4KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiBtX21hc2tlZFdyYXBwZXI7CisgICAgaW5saW5lIGJvb2wgY29udGFpbnNUeXBlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIChtX21hc2tlZFN0b3JhZ2UgJiAxKSA9PSAxOyB9CisgICAgaW5saW5l
IGJvb2wgY29udGFpbnNXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrZWRTdG9yYWdlICYm
ICgobV9tYXNrZWRTdG9yYWdlICYgMSkgPT0gMCk7IH0KIAotICAgIHN0YXRpYyBpbmxpbmUgdjg6
Ok9iamVjdCogbWFza09yVW5tYXNrUG9pbnRlcihjb25zdCB2ODo6T2JqZWN0KiBvYmplY3QpCisg
ICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5mbykK
ICAgICB7Ci0gICAgICAgIGNvbnN0IHVpbnRwdHJfdCBvYmplY3RQb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdCk7Ci0gICAgICAgIGNvbnN0IHVpbnRwdHJfdCByYW5k
b21NYXNrID0gfihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJldlYkNvcmVNZW1vcnlUeXBl
czo6RE9NKSA+PiAxMyk7IC8vIEVudHJvcHkgdmlhIEFTTFIuCi0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHY4OjpPYmplY3QqPigob2JqZWN0UG9pbnRlciBeIHJhbmRvbU1hc2spICYg
KCFvYmplY3RQb2ludGVyIC0gMSkpOyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJhbmNoaW5n
LgorICAgICAgICBBU1NFUlQoY29udGFpbnNXcmFwcGVyKCkgJiYgbV9tYXNrZWRTdG9yYWdlICE9
IDApOworICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCp2YWx1ZSkg
PT0gbWFza09yVW5tYXNrVmFsdWUobV9tYXNrZWRTdG9yYWdlKSk7CisgICAgICAgIHZhbHVlLkRp
c3Bvc2UoaXNvbGF0ZSk7CisgICAgICAgIHNldFR5cGVJbmZvKGluZm8pOwogICAgIH0KIAogICAg
IHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKQEAgLTkzLDEyICsxNzAsMTkg
QEAKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3Jh
cHBlcik7CiAgICAgICAgIEFTU0VSVChpbmZvLT5kZXJlZk9iamVjdEZ1bmN0aW9uKTsKIAotICAg
ICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZhbHVlLCBpc29sYXRlKTsKKyAgICAgICAga2V5LT5k
aXNwb3NlV3JhcHBlcih2YWx1ZSwgaXNvbGF0ZSwgaW5mbyk7CiAgICAgICAgIC8vIEZJWE1FOiBJ
IG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBiZSBjb25zdW1l
ZAogICAgICAgICAvLyBpbnNpZGUga2V5LT5kZXJlZigpLCB3aGljaCBjYXVzZXMgTm9kZSBkZXN0
cnVjdGlvbnMuIFdlIHNob3VsZAogICAgICAgICAvLyBtYWtlIE5vZGUgZGVzdHJ1Y3Rpb25zIGlu
Y3JlbWVudGFsLgogICAgICAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3QpOwogICAgIH0KKwor
ICAgIC8vIElmIHplcm8sIHRoZW4gdGhpcyBjb250YWlucyBub3RoaW5nLCBvdGhlcndpc2U6Cisg
ICAgLy8gICBJZiB0aGUgYm90dG9tIGJpdCBpdCBjbGVhciwgdGhlbiB0aGlzIGNvbnRhaW5zIGEg
bWFza2VkIHBvaW50ZXIgdG8gYSB3cmFwcGVyIG9iamVjdC4KKyAgICAvLyAgIElmIHRoZSBib3R0
b20gYml0IGlzIHNldCwgdGhlbiB0aGlzIGNvbnRhaW5zIGEgcG9pbnRlciB0byB0aGUgd3JhcHBl
ciB0eXBlIGluZm8gaW4gdGhlIHJlbWFpbmluZyBiaXRzLgorICAgIC8vIE1hc2tpbmcgd3JhcHBl
cnMgcHJldmVudHMgYXR0YWNrZXJzIGZyb20gb3ZlcndyaXRpbmcgdGhpcyBmaWVsZCB3aXRoIHBv
aW50ZXJzIHRvIHNwcmF5ZWQgZGF0YS4KKyAgICAvLyBQb2ludGVycyBpbnNpZGUgV3JhcHBlciBU
eXBlIEluZm8gYXJlIGFscmVhZHkgcHJvdGVjdGVkIGJ5IEFTTFIuCisgICAgdWludHB0cl90IG1f
bWFza2VkU3RvcmFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBl
SW5mbyBWOEFkYXB0b3JGdW5jdGlvbjo6aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRl
bXBsYXRlLCAwLCAwLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9Owor
V3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5j
dGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlLCAwIH07CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFk
YXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQogewpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNjI2LDYgKzE2MjYsOCBAQAogICAg
ICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTU2VsZWN0b3JMaXN0LmgnLAorICAg
ICAgICAgICAgJ2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlUnVsZS5j
cHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZVJ1bGUuaCcsCiAgICAgICAgICAgICAnY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwJywKQEAgLTMwMDIsNiArMzAwNCw4IEBACiAgICAgICAgICAgICAn
ZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVJdGVyYXRv
ci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuaCcsCisgICAgICAgICAgICAn
ZG9tL05vZGVMaXN0LmNwcCcsCisgICAgICAgICAgICAnZG9tL05vZGVMaXN0LmgnLAogICAgICAg
ICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVJhcmVE
YXRhLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAnLApJbmRl
eDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCwxMCArNTAsMTUgQEAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ7IH0KIAogcHJpdmF0ZToKLSAgICBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSB7IH0KKyAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQoKQorICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworICAg
IH0KKwogICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQogICAgICAgICA6IFByb2dyZXNzRXZlbnQodHlwZSwg
bGVuZ3RoQ29tcHV0YWJsZSwgbG9hZGVkLCB0b3RhbCkKICAgICB7CisgICAgICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiB9OwogCkluZGV4OiBXZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQAogI2lmbmRlZiBOREVCVUcKICAgICB4
bWxIdHRwUmVxdWVzdENvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0Ojp+WE1MSHR0cFJlcXVlc3Qo
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKICAgICAsIG1fc3BhbigxKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVDb2xFbGVtZW50PiBIVE1MVGFibGVDb2xF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiw3IEBACiBpbmxpbmUgSFRNTFByZUVsZW1lbnQ6OkhUTUxQcmVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxNZW51RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
ICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKG1lbnVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTE1lbnVFbGVtZW50PiBIVE1MTWVudUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICAg
ICA6IEhUTUxNZWRpYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh2aWRlb1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlk
ZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQAogICAgICwgbV9zaG91
bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2VsZWN0
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxTZWxlY3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBm
b3JtKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZE5vdFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXBwbGV0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogCiAgICAgbV9zZXJ2aWNlVHlwZSA9ICJhcHBsaWNhdGlvbi94LWph
dmEtYXBwbGV0IjsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogaW5saW5lIEhUTUxUYWJsZUNlbGxF
bGVtZW50OjpIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBACiAgICAgLCBtX3Nob3VsZFJlY2FsY3VsYXRlSXRlbUNvdW50KGZhbHNlKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKG9sVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxGcmFtZUVsZW1l
bnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlmcmFt
ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBzZXRIYXNDdXN0
b21TdHlsZUNhbGxiYWNrcygpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIGlu
bGluZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRN
TFRhYmxlUGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3Jv
dXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFj
a3MoKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9wdEdyb3VwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
SGVhZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhl
YWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaGVh
ZFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9pc0FjdGl2YXRlZFN1Ym1pdChmYWxzZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShidXR0b25UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEJ1dHRvbkVsZW1lbnQ+IEhUTUxCdXR0b25F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICA6IExhYmVsYWJsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWV0ZXJU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxNZXRlckVs
ZW1lbnQ6On5IVE1MTWV0ZXJFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGl2RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGl2VGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDE0IEBACiAKIFRy
YWNrRXZlbnQ6OlRyYWNrRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogVHJhY2tFdmVudDo6VHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFRyYWNrRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyKQogICAgICwgbV90cmFjayhpbml0aWFsaXplci50cmFjaykKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRyYWNrRXZlbnQ6On5UcmFja0V2ZW50KCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorVmFsaWRpdHlTdGF0ZTo6VmFsaWRpdHlT
dGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wp
Cit7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworfQorCiBTdHJpbmcgVmFsaWRp
dHlTdGF0ZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRy
b2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHFUYWcpIHx8IGhhc1RhZ05h
bWUoYmxvY2txdW90ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MUXVvdGVFbGVtZW50PiBIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBACiAgICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUobWFycXVlZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogaW5saW5lIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OkhUTUxE
YXRhTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVs
ZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKICAgICA6IEhUTUxDb2xsZWN0aW9uKG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBP
dmVycmlkZXNJdGVtQWZ0ZXIpCiB7CiAgICAgQVNTRVJUKG93bmVyTm9kZS0+aGFzVGFnTmFtZShm
b3JtVGFnKSB8fCBvd25lck5vZGUtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoTm9kZSogb3du
ZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYnJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4gSFRNTEJSRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoY2FwdGlvblRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAsIG1fbm9yZXNpemUoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKTsKLSAgICAKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw2ICszOCw3IEBACiBIVE1MQWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24oTm9k
ZSogbm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKICAgICA6IEhUTUxDb2xsZWN0aW9uKG5vZGUs
IHR5cGUsIERvZXNOb3RPdmVycmlkZUl0ZW1BZnRlcikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIEhUTUxBbGxDb2xsZWN0aW9uOjp+SFRNTEFsbENvbGxlY3Rpb24o
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2
ICs1NCw3IEBACiAgICAgLCBtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUoTm90UmVnaXN0
ZXJlZCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzdHlsZVRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRNTFN0eWxlRWxlbWVudDo6fkhUTUxTdHlsZUVs
ZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw2ICs1OSw3IEBACiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6SFRN
TFRyYWNrRWxlbWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJhY2tU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxUcmFja0Vs
ZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgs
NyBAQAogICAgICwgbV9zaG91bGRQYXJzZVNlbGVjdG9yTGlzdChmYWxzZSkKICAgICAsIG1faXNW
YWxpZFNlbGVjdG9yKHRydWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBIVE1MQ29udGVudEVsZW1lbnQ6On5IVE1MQ29udGVudEVsZW1lbnQoKQpJbmRleDogV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw3IEBACiAgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2hh
ZG93RWxlbWVudD4gSFRNTFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZvbnRF
bGVtZW50PiBIVE1MRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICA6IEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgU2hvdWxkUHJlZmVyUGx1
Z0luc0ZvckltYWdlcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShlbWJlZFRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRW1iZWRF
bGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
bWFwVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcyLDYgKzQ3Miw4IEBACiAgICAg
LCBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNv
bGUpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOworCiAgICAgbV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRl
KCk7CiAgICAgbV9jb250ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBACiAjaWYgIUVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKICAgICBBU1NFUlRfVU5VU0VEKHVzZXNEYXNoYm9hcmRDb21wYXRp
YmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAjZW5kaWYKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjp1bndpbmRTdGF0ZVN0YWNrKCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQogICAgIDogbV9jYW52YXMoY2Fu
dmFzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4q
IHBhdHRlcm4pCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNw
cAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyMSBAQAogCiBXZWJHTENvbnRl
eHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogV2ViR0xDb250ZXh0RXZlbnQ6OldlYkdMQ29udGV4dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29u
c3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlKQogICAgICwgbV9zdGF0dXNNZXNzYWdlKHN0YXR1c01lc3NhZ2UpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJHTENvbnRleHRFdmVudDo6V2Vi
R0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJHTENvbnRl
eHRFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIp
CiAgICAgLCBtX3N0YXR1c01lc3NhZ2UoaW5pdGlhbGl6ZXIuc3RhdHVzTWVzc2FnZSkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYkdMQ29udGV4dEV2ZW50Ojp+
V2ViR0xDb250ZXh0RXZlbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJhbVRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50
PiBIVE1MUGFyYW1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwVGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxQYXJh
Z3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTQsNiArOTQsNyBAQAogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRleHRhcmVh
VGFnKSk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRleHRB
cmVhRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiAr
MzE3LDggQEAKICAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIWNhcHRpb25QcmVmZXJl
bmNlcy0+dXNlclByZWZlcnNDYXB0aW9ucygpOwogICAgIH0KICNlbmRpZgorCisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlh
RWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDYgKzY5LDcgQEAKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoa2V5
Z2VuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogCiAgICAgLy8gQ3Jl
YXRlIGEgc2VsZWN0IGVsZW1lbnQgd2l0aCBvbmUgb3B0aW9uIGVsZW1lbnQgZm9yIGVhY2gga2V5
IHNpemUuCiAgICAgVmVjdG9yPFN0cmluZz4ga2V5czsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaWYgRU5BQkxFKElO
UFVUX01VTFRJUExFX0ZJRUxEU19VSSkKICAgICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygp
OwogI2VuZGlmCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAsIFNjcmlwdEVsZW1l
bnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0ZWQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoc2NyaXB0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVkKQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3
IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2JqZWN0VGFnKSk7CiAgICAgc2V0Rm9ybShm
b3JtID8gZm9ybSA6IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBpbmxpbmUgSFRNTE9iamVjdEVsZW1lbnQ6On5IVE1MT2JqZWN0RWxl
bWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKICAgICAsIG1fY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNl
T3ZlcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbWdUYWcpKTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKGZvcm0pCiAgICAgICAgIGZvcm0tPnJlZ2lzdGVy
SW1nRWxlbWVudCh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogSFRNTENv
bGxlY3Rpb24oc2VsZWN0LCBTZWxlY3RPcHRpb25zLCBEb2VzTm90T3ZlcnJpZGVJdGVtQWZ0ZXIp
CiB7CiAgICAgQVNTRVJUKHNlbGVjdC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
T3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKE5vZGUqIHNl
bGVjdCwgQ29sbGVjdGlvblR5cGUpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAsIG1fcGVuZGluZ1NoZWV0VHlwZShOb25l
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxpbmtUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBIVE1MTGlu
a0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjZW5kaWYKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX3NoYXBlKFVua25vd24pCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoYXJlYVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IEhUTUxBcmVhRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNiArNTcsNyBAQAogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGlvblRhZykpOwogICAg
IHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGVtcGxhdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRlbXBs
YXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogaW5saW5l
IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OkhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBIVE1MVGVtcGxhdGVFbGVtZW50Ojp+SFRNTFRlbXBsYXRlRWxlbWVudCgpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHRpdGxlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxUaXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAg
ICAsIG1fZnJhbWVCb3JkZXJTZXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJh
bWVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTEZyYW1lRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogewogICAg
IExPRyhNZWRpYSwgIkhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudCAtICVwIiwg
dGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc291cmNlVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTb3VyY2VFbGVtZW50PiBI
VE1MU291cmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgICwgbV9kZWZhdWx0VmFsdWUoIiIpCiAg
ICAgLCBtX3Rva2VucyhET01TZXR0YWJsZVRva2VuTGlzdDo6Y3JlYXRlKCkpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPdXRwdXRFbGVt
ZW50PiBIVE1MT3V0cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShiYXNlZm9udFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBIVE1MQmFzZUZvbnRF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShsaVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50PiBIVE1MTElFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6OkhUTUxNb2RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMyw2ICsxMDMsNyBAQAogICAgICwgbV9pc09wZW4oZmFsc2UpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpJbmRleDogV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5o
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgYm9vbCB2YWxpZCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFZhbGlkaXR5U3RhdGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9s
KSA6IG1fY29udHJvbChjb250cm9sKSB7IH0KKyAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCogY29udHJvbCk7CiAKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIG1fY29u
dHJvbDsKIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKHNwYW5UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNwYW5FbGVtZW50PiBIVE1MU3BhbkVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDcgQEAKICAgICAsIG1fbGlua1JlbGF0aW9ucygwKQogICAgICwgbV9jYWNoZWRW
aXNpdGVkTGlua0hhc2goMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBACiAgICAgLCBtX2RpZENsZWFySW1hZ2VC
dWZmZXIoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoY2FudmFzVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxDYW52YXNF
bGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUodWxUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGxUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4g
SFRNTERMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWV0YVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWV0YUVsZW1lbnQ+IEhUTUxN
ZXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYm9keVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9SYWRp
b05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIDogTGl2ZU5vZGVMaXN0KHJvb3RO
b2RlLCBSYWRpb05vZGVMaXN0VHlwZSwgSW52YWxpZGF0ZUZvckZvcm1Db250cm9scywgcm9vdE5v
ZGUtPmhhc1RhZ05hbWUoZm9ybVRhZykgPyBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudCA6IE5v
ZGVMaXN0SXNSb290ZWRBdE5vZGUpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJhZGlvTm9kZUxpc3Q6On5SYWRpb05vZGVMaXN0
KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGlyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50PiBI
VE1MRGlyZWN0b3J5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaHJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDogSFRN
TFRhYmxlUGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUodHJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYg
KzE2Nyw3IEBACiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCB0eXBlKQog
ewogICAgIEFTU0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L01lZGlhS2V5RXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvTWVk
aWFLZXlFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKIAogTWVkaWFL
ZXlFdmVudDo6TWVkaWFLZXlFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBNZWRpYUtleUV2ZW50OjpNZWRpYUtleUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtNTMsNiAr
NTQsNyBAQAogICAgICwgbV9lcnJvckNvZGUoaW5pdGlhbGl6ZXIuZXJyb3JDb2RlKQogICAgICwg
bV9zeXN0ZW1Db2RlKGluaXRpYWxpemVyLnN5c3RlbUNvZGUpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYUtleUV2ZW50Ojp+TWVkaWFLZXlFdmVudCgpCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKICAgICA6IEhUTUxNZWRpYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRC
eVBhcnNlcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdWRpb1RhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50
PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFVua25vd25FbGVtZW50LmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VW5rbm93bkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogICAgIEhU
TUxVbmtub3duRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAg
eworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogfTsKIApJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAgICAgLCBtX3ZhbHVlKDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
cHJvZ3Jlc3NUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhU
TUxQcm9ncmVzc0VsZW1lbnQ6On5IVE1MUHJvZ3Jlc3NFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJh
c2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYmFz
ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBACiAgICAgOiBMaXZlTm9kZUxp
c3RCYXNlKG93bmVyTm9kZSwgcm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSksIGludmFs
aWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKHR5cGUpLAogICAgICAgICBX
ZWJDb3JlOjpzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKHR5cGUpLCB0eXBlLCBpdGVt
QWZ0ZXJPdmVycmlkZVR5cGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKE5v
ZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAsIG1fcGFkZGluZygx
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRhYmxlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxU
YWJsZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
TGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
TGVnZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGxlZ2VuZFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gSFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRGlhbG9nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAK
ICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGRpYWxvZ1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MRGlhbG9nRWxlbWVudD4gSFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIGlubGluZSBIVE1MSGVhZGluZ0VsZW1lbnQ6OkhUTUxIZWFkaW5nRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBIVE1MSGVhZGlu
Z0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fZG9jdW1lbnRWZXJzaW9uKDApCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRN
TEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxI
dG1sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSHRt
bEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShodG1s
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBA
CiBIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKICAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCB0cnVlKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBjbGVhclhNTFZlcnNpb24oKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShsYWJlbFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MTGFiZWxFbGVtZW50PiBIVE1MTGFiZWxFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OCw2ICs3OCw3IEBACiAgICAgICAgICwgbV93YXNDbGVhbihmYWxzZSkKICAgICAg
ICAgLCBtX2NvZGUoMCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICB9CiAKICAgICBDbG9zZUV2ZW50KGJvb2wgd2FzQ2xlYW4sIGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKQEAgLTg2LDYgKzg3LDcgQEAKICAgICAgICAgLCBtX2NvZGUoY29k
ZSkKICAgICAgICAgLCBtX3JlYXNvbihyZWFzb24pCiAgICAgeworICAgICAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgQ2xvc2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IENsb3NlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTk0LDYg
Kzk2LDcgQEAKICAgICAgICAgLCBtX2NvZGUoaW5pdGlhbGl6ZXIuY29kZSkKICAgICAgICAgLCBt
X3JlYXNvbihpbml0aWFsaXplci5yZWFzb24pCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBtX3dhc0NsZWFuOwpJbmRleDogV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiBOb3RpZmljYXRpb246Ok5vdGlm
aWNhdGlvbigpCiAgICAgOiBBY3RpdmVET01PYmplY3QoMCwgdGhpcykKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCkBAIC02NSw2ICs2Niw3IEBACiAgICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX25vdGlm
aWNhdGlvbkNlbnRlcihwcm92aWRlcikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBO
b3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7CiAgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOwogICAgICAgICByZXR1cm47CkBAIC04OCw2ICs5MCw3IEBACiAgICAgLCBtX3N0
YXRlKElkbGUpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxv
d2VkKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0x
MDksNiArMTEyLDcgQEAKICAgICAsIG1fc3RhdGUoSWRsZSkKICAgICAsIG1fdGFza1RpbWVyKGFk
b3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246OnRhc2tU
aW1lckZpcmVkKSkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAg
ICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXRO
b3RpZmljYXRpb25zKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygp
KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgIEFTU0VSVChtX29iamVjdFN0b3Jl
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKG1fbWV0YWRhdGEuaWQg
IT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIElEQkluZGV4Ojp+SURCSW5kZXgoKQpJbmRleDogV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKIHsK
ICAgICBBU1NFUlQoIW1fcmVzdWx0KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIElEQk9wZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KCkKSW5kZXg6IFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNiArNjcsNyBAQAogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhp
cyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1
aXJlbWVudCgpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCRGF0
YWJhc2U6On5JREJEYXRhYmFzZSgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAKIElEQkN1cnNvcldpdGhWYWx1ZTo6SURCQ3Vyc29yV2l0aFZhbHVl
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkq
IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogSURCQ3Vyc29yKGJh
Y2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikKIHsKKyAgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJDdXJzb3JXaXRoVmFsdWU6On5J
REJDdXJzb3JXaXRoVmFsdWUoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiB7CiAgICAg
Ly8gV2UgcGFzcyBhIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFk
b3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBJREJGYWN0b3J5Ojp+SURCRmFjdG9yeSgpCkluZGV4OiBX
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisr
KyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDcgQEAKICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKICAgICBBU1NFUlQobV9z
b3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQk9iamVjdFN0b3JlVHlwZSB8fCBtX3NvdXJjZS0+
dHlwZSgpID09IElEQkFueTo6SURCSW5kZXhUeXBlKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bik7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJDdXJzb3I6On5J
REJDdXJzb3IoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAg
QVNTRVJUKG1fdHJhbnNhY3Rpb24pOwogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2UgdG8gdGhp
cyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1
aXJlbWVudCgpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0Cklu
ZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQAogICAgICwgbV9jb250ZXh0
U3RvcHBlZChmYWxzZSkKICAgICAsIG1fcHJldmlvdXNNZXRhZGF0YShwcmV2aW91c01ldGFkYXRh
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBpZiAobW9kZSA9PSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkgewogICAgICAgICAvLyBOb3QgYWN0
aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9zdGF0ZSA9IEluYWN0aXZlOwpJbmRl
eDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAgICAgLCBtX3ByZXZlbnRQcm9wYWdhdGlvbihmYWxz
ZSkKICAgICAsIG1fcmVxdWVzdFN0YXRlKGNvbnRleHQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCkluZGV4OiBXZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICAsIG1fbG93ZXJUeXBlKGxvd2VyVHlwZSkKICAgICAs
IG1fdXBwZXJUeXBlKHVwcGVyVHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFNjcmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkFueS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuaWRsCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgVjhOb1dy
YXBwZXJDYWNoZSwKLSAgICBKU05vU3RhdGljVGFibGVzCisgICAgSlNOb1N0YXRpY1RhYmxlcywK
IF0gaW50ZXJmYWNlIElEQkFueSB7CiAgICAgLy8gVGhpcyBzcGFjZSBpcyBpbnRlbnRpb25hbGx5
IGxlZnQgYmxhbmsuCiB9OwpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAgICAgLCBtX2ludGVnZXIoMCkKIHsK
ICAgICBBU1NFUlQodHlwZSA9PSBVbmRlZmluZWRUeXBlIHx8IHR5cGUgPT0gTnVsbFR5cGUpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55Ojp+SURCQW55KCkK
QEAgLTEzNSw2ICsxMzYsNyBAQAogICAgICwgbV9kb21TdHJpbmdMaXN0KHZhbHVlKQogICAgICwg
bV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJ
REJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gdmFsdWUpCkBAIC0x
NDIsNiArMTQ0LDcgQEAKICAgICAsIG1faWRiQ3Vyc29yV2l0aFZhbHVlKHZhbHVlKQogICAgICwg
bV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJ
REJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkN1cnNvcj4gdmFsdWUpCkBAIC0xNDksNiArMTUy
LDcgQEAKICAgICAsIG1faWRiQ3Vyc29yKHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlPiB2YWx1ZSkKQEAgLTE1Niw2ICsxNjAsNyBAQAogICAgICwgbV9p
ZGJEYXRhYmFzZSh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJGYWN0
b3J5PiB2YWx1ZSkKQEAgLTE2Myw2ICsxNjgsNyBAQAogICAgICwgbV9pZGJGYWN0b3J5KHZhbHVl
KQogICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkluZGV4PiB2YWx1ZSkKQEAgLTE3
MCw2ICsxNzYsNyBAQAogICAgICwgbV9pZGJJbmRleCh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigw
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJB
bnkoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdmFsdWUpCkBAIC0xNzcsNiArMTg0LDcgQEAK
ICAgICAsIG1faWRiVHJhbnNhY3Rpb24odmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IHZhbHVlKQpAQCAtMTg0LDYgKzE5Miw3IEBACiAgICAgLCBt
X2lkYk9iamVjdFN0b3JlKHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShjb25zdCBTY3JpcHRW
YWx1ZSYgdmFsdWUpCkBAIC0xOTEsNiArMjAwLDcgQEAKICAgICAsIG1fc2NyaXB0VmFsdWUodmFs
dWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIElEQkFueTo6SURCQW55KGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQpAQCAtMTk4
LDYgKzIwOCw3IEBACiAgICAgLCBtX2lkYktleVBhdGgodmFsdWUpCiAgICAgLCBtX2ludGVnZXIo
MCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURC
QW55KGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yMDUsMTIgKzIxNiwxNCBAQAogICAgICwgbV9z
dHJpbmcodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KGludDY0X3QgdmFsdWUpCiAgICAgOiBt
X3R5cGUoSW50ZWdlclR5cGUpCiAgICAgLCBtX2ludGVnZXIodmFsdWUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZl
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAK
ICAgICAsIG1fb2xkVmVyc2lvbihvbGRWZXJzaW9uKQogICAgICwgbV9uZXdWZXJzaW9uKG5ld1Zl
cnNpb24pCiB7CisgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCVmVy
c2lvbkNoYW5nZUV2ZW50Ojp+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCkKSW5kZXg6IFdlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAKIFJU
Q0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENJY2VDYW5kaWRhdGVFdmVudDo6UlRDSWNl
Q2FuZGlkYXRlRXZlbnQoYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0
cjxSVENJY2VDYW5kaWRhdGU+IGNhbmRpZGF0ZSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5p
Y2VjYW5kaWRhdGVFdmVudCwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jYW5kaWRh
dGUoY2FuZGlkYXRlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UlRDSWNlQ2FuZGlkYXRlRXZlbnQ6On5SVENJY2VDYW5kaWRhdGVFdmVudCgpCkluZGV4OiBXZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxNCBAQAogCiBS
VENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFD
aGFubmVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsKQogICAgIDog
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jaGFubmVsKGNoYW5u
ZWwpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEYXRhQ2hh
bm5lbEV2ZW50Ojp+UlRDRGF0YUNoYW5uZWxFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDE4ICs1NCwyMSBAQAogCiBNZWRpYVN0cmVhbUV2ZW50OjpNZWRp
YVN0cmVhbUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBzdHJlYW0pCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAg
ICAgLCBtX3N0cmVhbShzdHJlYW0pCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBNZWRpYVN0cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgTWVkaWFTdHJlYW1FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAg
IDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3N0cmVhbShpbml0aWFsaXplci5z
dHJlYW0pCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYVN0
cmVhbUV2ZW50Ojp+TWVkaWFTdHJlYW1FdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFu
Z2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE4ICs1MCwyMSBAQAogCiBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKQogICAgIDogRXZlbnQoZXZlbnRO
YW1lcygpLnRvbmVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV90b25lKHRvbmUp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEVE1GVG9uZUNo
YW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hh
bmdlRXZlbnQsIGluaXRpYWxpemVyKQogICAgICwgbV90b25lKGluaXRpYWxpemVyLnRvbmUpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEVE1GVG9uZUNoYW5n
ZUV2ZW50Ojp+UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxNCBAQAogCiBNZWRpYVN0
cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudCgpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3Ry
ZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2spCiAgICAg
OiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3RyYWNrKHRyYWNr
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1U
cmFja0V2ZW50Ojp+TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBBdWRpb1Byb2Nlc3NpbmdFdmVu
dDo6QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KFBh
c3NSZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
PiBvdXRwdXRCdWZmZXIpCkBAIC01Miw2ICs1Myw3IEBACiAgICAgLCBtX2lucHV0QnVmZmVyKGlu
cHV0QnVmZmVyKQogICAgICwgbV9vdXRwdXRCdWZmZXIob3V0cHV0QnVmZmVyKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6On5B
dWRpb1Byb2Nlc3NpbmdFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxNCBAQAogCiBPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQ6Ok9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCi0KIE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudDo6T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KFBhc3NSZWZQdHI8QXVkaW9CdWZm
ZXI+IHJlbmRlcmVkQnVmZmVyKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZl
bnQsIHRydWUsIGZhbHNlKQogICAgICwgbV9yZW5kZXJlZEJ1ZmZlcihyZW5kZXJlZEJ1ZmZlcikK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudDo6fk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCgpCkluZGV4OiBXZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0NCw2ICsyNDQsNyBAQAogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCiAgICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24o
KQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
RXJyb3IuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBA
CiAgICAgLCBtX2Vycm9yKGVycm9yKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9y
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBj
b25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9ySW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04NSw2ICs4
Niw3IEBACiAgICAgLCBtX2Vycm9yKGluaXRpYWxpemVyLmVycm9yKQogICAgICwgbV9tZXNzYWdl
KGluaXRpYWxpemVyLm1lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OmludGVy
ZmFjZU5hbWUoKSBjb25zdApJbmRleDogV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBACiAKIFNwZWVjaFN5bnRoZXNpc0V2ZW50OjpTcGVlY2hTeW50aGVzaXNFdmVudCgp
CiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3BlZWNoU3ludGhlc2lzRXZlbnQ6
OlNwZWVjaFN5bnRoZXNpc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQg
bG9uZyBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCklu
ZGV4OiBXZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAg
ICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShp
bml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdD4gcmVzdWx0LCBzaG9ydCByZXN1bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3RvcnkpCkBAIC04NSw2ICs4Niw3IEBACiAg
ICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEhpc3RvcnkocmVzdWx0SGlzdG9y
eSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29n
bml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpCkBAIC05Miw2ICs5NCw3IEBACiAg
ICAgLCBtX3Jlc3VsdEluZGV4KHJlc3VsdEluZGV4KQogICAgICwgbV9yZXN1bHRzKFNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0TGlzdDo6Y3JlYXRlKHJlc3VsdHMpKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVjaFJl
Y29nbml0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0b3JhZ2VFdmVudDo6flN0
b3JhZ2VFdmVudCgpCkBAIC02Niw2ICs2Nyw3IEBACiAgICAgLCBtX3VybCh1cmwpCiAgICAgLCBt
X3N0b3JhZ2VBcmVhKHN0b3JhZ2VBcmVhKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogU3RvcmFnZUV2ZW50OjpTdG9yYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBTdG9yYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTc2LDYgKzc4
LDcgQEAKICAgICAsIG1fdXJsKGluaXRpYWxpemVyLnVybCkKICAgICAsIG1fc3RvcmFnZUFyZWEo
aW5pdGlhbGl6ZXIuc3RvcmFnZUFyZWEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiB2b2lkIFN0b3JhZ2VFdmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBjb25zdCBTdHJpbmcmIHVybCwgU3RvcmFnZSogc3RvcmFnZUFyZWEpCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7
CiAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWEpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKICAgICBpZiAobV9zdG9yYWdlQXJlYSkKICAgICAgICAgbV9zdG9yYWdlQXJlYS0+aW5j
cmVtZW50QWNjZXNzQ291bnQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQAogQmxvYjo6QmxvYigpCiAgICAgOiBtX3NpemUoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBpbnRlcm5hbCBVUkwgYW5kIHJlZ2lz
dGVyIGl0IHdpdGggdGhlIHByb3ZpZGVkIGJsb2IgZGF0YS4KQEAgLTY2LDYgKzY3LDcgQEAKICAg
ICAsIG1fc2l6ZShzaXplKQogewogICAgIEFTU0VSVChibG9iRGF0YSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGludGVybmFsIFVSTCBh
bmQgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgcHJvdmlkZWQgYmxvYiBkYXRhLgogICAgIG1faW50ZXJu
YWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtNzYsNiArNzgsOCBAQAog
ICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CisKICAgICAvLyBDcmVhdGUgYSBuZXcgaW50ZXJuYWwgVVJMIGFu
ZCByZWdpc3RlciBpdCB3aXRoIHRoZSBzYW1lIGJsb2IgZGF0YSBhcyB0aGUgc291cmNlIFVSTC4K
ICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoMCwgbV9pbnRlcm5hbFVSTCwg
c3JjVVJMKTsKSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogCiBGaWxlTGlzdDo6RmlsZUxpc3QoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogRmlsZSogRmlsZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cklu
ZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogICAgICwgbV9zbmFwc2hvdE1v
ZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCiAjZW5kaWYKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTExMyw2ICsxMTQsNyBA
QAogICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCiAj
ZW5kaWYKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgbV9uYW1lID0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIC8vIEZJWE1FOiBGaWxlIG9iamVjdCBzZXJpYWxp
emF0aW9uL2Rlc2VyaWFsaXphdGlvbiBkb2VzIG5vdCBpbmNsdWRlCiAgICAgLy8gbmV3ZXIgZmls
ZSBvYmplY3QgZGF0YSBtZW1iZXJzOiBtX25hbWUgYW5kIG1fcmVsYXRpdmVQYXRoLgpAQCAtMTI4
LDYgKzEzMCw3IEBACiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmls
ZVRpbWUoKSkKICNlbmRpZgogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKQEAgLTEzOCw2ICsxNDEsNyBAQAogICAgICwgbV9z
bmFwc2hvdFNpemUobWV0YWRhdGEubGVuZ3RoKQogICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlv
blRpbWUobWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIEZpbGU6OkZpbGUoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVSTCwg
Y29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTE0Niw2ICsxNTAsNyBAQAogICAgICwg
bV9zbmFwc2hvdFNpemUobWV0YWRhdGEubGVuZ3RoKQogICAgICwgbV9zbmFwc2hvdE1vZGlmaWNh
dGlvblRpbWUobWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9kb20vUGFnZVRyYW5z
aXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25F
dmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9u
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCArMzgsMjEgQEAKIFBhZ2VUcmFuc2l0
aW9uRXZlbnQ6OlBhZ2VUcmFuc2l0aW9uRXZlbnQoKQogICAgIDogbV9wZXJzaXN0ZWQoZmFsc2Up
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlv
bkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBwZXJzaXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVlKQogICAgICwgbV9wZXJz
aXN0ZWQocGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IFBhZ2VUcmFuc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikK
ICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9wZXJzaXN0ZWQoaW5pdGlh
bGl6ZXIucGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFnZVRyYW5zaXRpb25FdmVudDo6flBhZ2VUcmFuc2l0aW9uRXZlbnQoKQpJbmRleDogV2Vi
Q29yZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RleHQuaAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwx
MCArNTUsNyBAQAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFRleHQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICAg
ICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhLCB0eXBlKQotICAgIHsKLSAgICB9Cisg
ICAgVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgQ29uc3RydWN0
aW9uVHlwZSB0eXBlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsNyBAQAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKLSAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogTm9k
ZShkb2N1bWVudCwgdHlwZSkKLSAgICAgICAgLCBtX2RhdGEoIXRleHQuaXNOdWxsKCkgPyB0ZXh0
IDogZW1wdHlTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IENyZWF0ZU90
aGVyIHx8IHR5cGUgPT0gQ3JlYXRlVGV4dCB8fCB0eXBlID09IENyZWF0ZUVkaXRpbmdUZXh0KTsK
LSAgICB9CisgICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKTsKIAogICAgIHZvaWQgc2V0RGF0YVdpdGhv
dXRVcGRhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0Ns
aWVudFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMTYgKzMxLDE5IEBACiAKIENsaWVudFJlY3Q6OkNsaWVudFJlY3QoKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ2xpZW50UmVjdDo6Q2xpZW50
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIDogbV9yZWN0KHJlY3QpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDbGllbnRSZWN0OjpDbGllbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICA6IG1fcmVjdChyZWN0KQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxpbmUgQ0RBVEFT
ZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgOiBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IENE
QVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRh
KQpJbmRleDogV2ViQ29yZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
VGV4dC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1RleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Rl
eHQ6OlRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENvbnN0cnVj
dGlvblR5cGUgdHlwZSkKKyAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIHR5cGUp
Cit7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworfQorCiBQYXNzUmVmUHRyPFRl
eHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRl
eHQpKTsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTm9kZUxpc3QuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vTm9kZUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogCiAgICAgY2xhc3MgTm9kZUxp
c3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxOb2RlTGlzdD4g
ewogICAgIHB1YmxpYzoKKyAgICAgICAgTm9kZUxpc3QoKTsKICAgICAgICAgdmlydHVhbCB+Tm9k
ZUxpc3QoKSB7IH0KIAogICAgICAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5v
ZGVMaXN0CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmlt
YXRpb25FdmVudCgpCiAgICAgOiBtX2VsYXBzZWRUaW1lKDAuMCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmlt
YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYktpdEFuaW1hdGlv
bkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkluZGV4OiBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw2ICsxMDUsNyBAQAogICAgIDogbV9idXR0b24oMCkKICAgICAsIG1fYnV0dG9uRG93bihmYWxz
ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1vdXNlRXZlbnQ6
Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LApAQCAtMTI2
LDYgKzEyNyw3IEBACiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQocmVsYXRlZFRhcmdldCkKICAgICAs
IG1fY2xpcGJvYXJkKGNsaXBib2FyZCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTE0MCw2ICsxNDIs
NyBAQAogICAgICwgbV9yZWxhdGVkVGFyZ2V0KGluaXRpYWxpemVyLnJlbGF0ZWRUYXJnZXQpCiAg
ICAgLCBtX2NsaXBib2FyZCgwIC8qIGNsaXBib2FyZCAqLykKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgaW5pdENvb3JkaW5hdGVzKEludFBvaW50KGluaXRpYWxpemVy
LmNsaWVudFgsIGluaXRpYWxpemVyLmNsaWVudFkpKTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgOiBtX2RlbHRhTW9kZShET01fREVMVEFfUElY
RUwpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZShmYWxzZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXaGVlbEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCkBAIC01MCw3ICs1MSw3IEBACiAgICAgLCBtX3doZWVsRGVsdGEoSW50UG9pbnQoaW5pdGlh
bGl6ZXIud2hlZWxEZWx0YVgsIGluaXRpYWxpemVyLndoZWVsRGVsdGFZKSkKICAgICAsIG1fZGVs
dGFNb2RlKGluaXRpYWxpemVyLmRlbHRhTW9kZSkKIHsKLX0KKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7fQogCiBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEZsb2F0UG9pbnQm
IHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRhLCB1bnNpZ25lZCBkZWx0YU1v
ZGUsCiAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IEludFBvaW50JiBz
Y3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKQEAgLTY3LDYgKzY4
LDcgQEAKICAgICAsIG1fZGVsdGFNb2RlKGRlbHRhTW9kZSkKICAgICAsIG1fZGlyZWN0aW9uSW52
ZXJ0ZWRGcm9tRGV2aWNlKGRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgV2hlZWxFdmVudDo6aW5pdFdoZWVs
RXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+IHZpZXcsCkluZGV4OiBXZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwyMSBAQAog
CiBGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIEZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0
Vmlldz4gdmlldywgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRh
cmdldCkKICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBk
ZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQocmVsYXRlZFRhcmdldCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBGb2N1c0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CiAgICAgOiBVSUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0
KGluaXRpYWxpemVyLnJlbGF0ZWRUYXJnZXQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yPiBGb2N1
c0V2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8Rm9jdXNFdmVudD4gZm9j
dXNFdmVudCkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSwxMyBAQAogICAgIHJldHVy
biAwOwogfQogCitFbGVtZW50OjpFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQorICAgIDogQ29udGFp
bmVyTm9kZShkb2N1bWVudCwgdHlwZSkKKyAgICAsIG1fdGFnTmFtZSh0YWdOYW1lKQoreworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKK30KKwogUGFzc1JlZlB0cjxFbGVtZW50PiBF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgQ3JlYXRlRWxlbWVudCkpOwpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQ6OldlYktpdFRyYW5zaXRpb25FdmVudCgpCiAgICAgOiBtX2VsYXBzZWRUaW1lKDAp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQ6OldlYktpdFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0
cmluZyYgcHNldWRvRWxlbWVudCkKQEAgLTQ2LDYgKzQ3LDcgQEAKICAgICAsIG1fZWxhcHNlZFRp
bWUoZWxhcHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYktpdFRyYW5zaXRpb25F
dmVudDo6V2ViS2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01NCw2ICs1Niw3
IEBACiAgICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVyLmVsYXBzZWRUaW1lKQogICAgICwg
bV9wc2V1ZG9FbGVtZW50KGluaXRpYWxpemVyLnBzZXVkb0VsZW1lbnQpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6On5XZWJL
aXRUcmFuc2l0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwx
MiArMzYsMTQgQEAKIAogQ3VzdG9tRXZlbnQ6OkN1c3RvbUV2ZW50KCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEN1c3RvbUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fZGV0YWlsKGluaXRpYWxp
emVyLmRldGFpbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEN1
c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw3IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hv
dWxkTWF0Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCkBAIC03
Nyw2ICs3OCw3IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1f
c2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2
aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFz
dGluZ0ZyYWdtZW50LApAQCAtODgsNiArOTAsNyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxh
Y2Uoc2hvdWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1h
dGNoU3R5bGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBUZXh0
RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCkBAIC05OCw2ICsxMDEsNyBAQAogICAgICwgbV9zaG91bGRNYXRjaFN0eWxl
KGZhbHNlKQogICAgICwgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVGV4dEV2ZW50
Ojp+VGV4dEV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3Bw
CShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBACiBEZXZpY2VPcmllbnRhdGlv
bkV2ZW50OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50KCkKICAgICA6IG1fb3JpZW50YXRpb24oRGV2
aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmljZU9yaWVudGF0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9yaWVudGF0aW9uRGF0
YSogb3JpZW50YXRpb24pCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkgLy8g
Q2FuJ3QgYnViYmxlLCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRh
dGlvbikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgRGV2aWNlT3Jp
ZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikKSW5kZXg6IFdlYkNvcmUvZG9tL1Byb2dyZXNzRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgICwgbV9sb2FkZWQoMCkKICAgICAsIG1fdG90YWwo
MCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFByb2dyZXNzRXZl
bnQ6OlByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQcm9ncmVz
c0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBACiAgICAgLCBtX2xvYWRl
ZChpbml0aWFsaXplci5sb2FkZWQpCiAgICAgLCBtX3RvdGFsKGluaXRpYWxpemVyLnRvdGFsKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUHJvZ3Jlc3NFdmVudDo6
UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0
YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
KQpAQCAtNTgsNiArNjAsNyBAQAogICAgICwgbV9sb2FkZWQobG9hZGVkKQogICAgICwgbV90b3Rh
bCh0b3RhbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAgICAgCiBj
b25zdCBBdG9taWNTdHJpbmcmIFByb2dyZXNzRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdApJ
bmRleDogV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
VUlFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1VJRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiBVSUV2ZW50OjpVSUV2ZW50KCkKICAg
ICA6IG1fZGV0YWlsKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4g
dmlld0FyZywgaW50IGRldGFpbEFyZykKSW5kZXg6IFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDaGFyYWN0ZXJE
YXRhOjpDaGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBOb2RlKGRvY3VtZW50LCB0eXBlKQorICAg
ICwgbV9kYXRhKCF0ZXh0LmlzTnVsbCgpID8gdGV4dCA6IGVtcHR5U3RyaW5nKCkpCit7CisgICAg
QVNTRVJUKHR5cGUgPT0gQ3JlYXRlT3RoZXIgfHwgdHlwZSA9PSBDcmVhdGVUZXh0IHx8IHR5cGUg
PT0gQ3JlYXRlRWRpdGluZ1RleHQpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
K30KKwogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhj
ZXB0aW9uQ29kZSYpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBub25OdWxsRGF0YSA9ICFkYXRhLmlz
TnVsbCgpID8gZGF0YSA6IGVtcHR5U3RyaW5nKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICAgICAsIG1fcHVibGljSWQocHVibGljSWQpCiAgICAg
LCBtX3N5c3RlbUlkKHN5c3RlbUlkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogS1VSTCBEb2N1bWVudFR5cGU6OmJhc2VVUkkoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTkxLDYgKzE1OTEsNyBAQAogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0
KDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIGlmICghbV90cmVl
U2NvcGUpCiAgICAgICAgIG1fdHJlZVNjb3BlID0gVHJlZVNjb3BlOjpub0RvY3VtZW50SW5zdGFu
Y2UoKTsKICAgICBtX3RyZWVTY29wZS0+Z3VhcmRSZWYoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRvdWNoRXZlbnQ6OlRvdWNoRXZl
bnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCkBAIC01OSw2
ICs2MCw3IEBACiAgICAgLCBtX2RvdWJsZVRhcChmYWxzZSkKICNlbmRpZgogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVG91Y2hFdmVudDo6flRvdWNoRXZlbnQoKQpJ
bmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTgsMTEgKzU5OCw3IEBACiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVk
OgotICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogQ29udGFpbmVyTm9kZShk
b2N1bWVudCwgdHlwZSkKLSAgICAgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkKLSAgICB7Ci0gICAg
fQorICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsK
SW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogTWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogICAgIDogbV9kYXRhVHlwZShEYXRhVHlwZVNjcmlwdFZh
bHVlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdl
RXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTUxLDYgKzUyLDcgQEAKICAgICAsIG1fc291cmNl
KGluaXRpYWxpemVyLnNvdXJjZSkKICAgICAsIG1fcG9ydHMoYWRvcHRQdHIobmV3IE1lc3NhZ2VQ
b3J0QXJyYXkoaW5pdGlhbGl6ZXIucG9ydHMpKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFNjcmlwdFZh
bHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cykKQEAgLTYyLDYgKzY0LDcgQEAKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAg
ICAsIG1fcG9ydHMocG9ydHMpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMpCkBAIC03Nyw2ICs4MCw3IEBACiAgICAgaWYgKG1fZGF0YUFzU2VyaWFs
aXplZFNjcmlwdFZhbHVlKQogICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+
cmVnaXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKICNlbmRp
ZgorICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKQEAg
LTg2LDYgKzkwLDcgQEAKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50
SWQoIiIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+IGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQpAQCAtOTUsNiArMTAwLDcgQEAKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAs
IG1fbGFzdEV2ZW50SWQoIiIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKQEAgLTEwNCw2ICsxMTAsNyBAQAogICAgICwgbV9v
cmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZCgiIikKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCklu
ZGV4OiBXZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCwxNCBAQAogRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2ZW50KCkKICAgICA6IG1f
ZGV2aWNlTW90aW9uRGF0YShEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIERldmljZU1vdGlvbkV2ZW50OjpEZXZpY2VN
b3Rpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0
YSogZGV2aWNlTW90aW9uRGF0YSkKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNl
KSAvLyBDYW4ndCBidWJibGUsIG5vdCBjYW5jZWxhYmxlCiAgICAgLCBtX2RldmljZU1vdGlvbkRh
dGEoZGV2aWNlTW90aW9uRGF0YSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIHZvaWQgRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBEZXZp
Y2VNb3Rpb25EYXRhKiBkZXZpY2VNb3Rpb25EYXRhKQpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCShy
ZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCwxNCBAQAogICAgIHJldHVybiBlICYmIGUtPmRvY3VtZW50KCkt
PmlzSFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwogfQogCitOYW1lZE5vZGVN
YXA6Ok5hbWVkTm9kZU1hcChFbGVtZW50KiBlbGVtZW50KSA6IG1fZWxlbWVudChlbGVtZW50KQor
eworICAgIC8vIE9ubHkgc3VwcG9ydHMgTmFtZWROb2RlTWFwcyB3aXRoIEVsZW1lbnQgYXNzb2Np
YXRlZCwgRG9jdW1lbnRUeXBlLmVudGl0aWVzIGFuZCBEb2N1bWVudFR5cGUubm90YXRpb25zIGFy
ZSBub3Qgc3VwcG9ydGVkIHlldC4KKyAgICBBU1NFUlQobV9lbGVtZW50KTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7Cit9CisKKwogdm9pZCBOYW1lZE5vZGVNYXA6OnJlZigpCiB7
CiAgICAgbV9lbGVtZW50LT5yZWYoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsNyBAQAogICAgICwgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAodHlwZSA9PSBTaGFkb3dSb290
OjpBdXRob3JTaGFkb3dSb290KSB7CkluZGV4OiBXZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50
KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2Vk
VGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQpAQCAtNDcsNiArNDgsNyBAQAogICAg
ICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKICAgICAsIG1fcHNldWRvRWxlbWVudChwc2V1
ZG9FbGVtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJh
bnNpdGlvbkV2ZW50OjpUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBUcmFuc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTU1LDYgKzU3LDcgQEAK
ICAgICAsIG1fZWxhcHNlZFRpbWUoaW5pdGlhbGl6ZXIuZWxhcHNlZFRpbWUpCiAgICAgLCBtX3Bz
ZXVkb0VsZW1lbnQoaW5pdGlhbGl6ZXIucHNldWRvRWxlbWVudCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6flRyYW5zaXRpb25FdmVu
dCgpCkluZGV4OiBXZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAK
IHByaXZhdGU6CiAgICAgSGFzaENoYW5nZUV2ZW50KCkKICAgICB7CisgICAgICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBIYXNoQ2hhbmdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKQpAQCAtNzgsNiArNzksNyBAQAog
ICAgICAgICAsIG1fb2xkVVJMKG9sZFVSTCkKICAgICAgICAgLCBtX25ld1VSTChuZXdVUkwpCiAg
ICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAg
SGFzaENoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSGFzaENoYW5n
ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04NSw2ICs4Nyw3IEBACiAgICAgICAgICwgbV9v
bGRVUkwoaW5pdGlhbGl6ZXIub2xkVVJMKQogICAgICAgICAsIG1fbmV3VVJMKGluaXRpYWxpemVy
Lm5ld1VSTCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICB9CiAKICAgICBTdHJpbmcgbV9vbGRVUkw7CkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fc2VyaWFsaXplZFN0YXRlKDApCiAgICAg
LCBtX2hpc3RvcnkoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBACiAg
ICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQogICAgICwgbV9oaXN0b3J5KDApCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2
ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUsIFBh
c3NSZWZQdHI8SGlzdG9yeT4gaGlzdG9yeSkKQEAgLTU3LDYgKzU5LDcgQEAKICAgICAsIG1fc2Vy
aWFsaXplZFN0YXRlKHNlcmlhbGl6ZWRTdGF0ZSkKICAgICAsIG1faGlzdG9yeShoaXN0b3J5KQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVudDo6
flBvcFN0YXRlRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAy
NikKKysrIFdlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiBNdXRhdGlvbkV2ZW50OjpNdXRhdGlvbkV2ZW50KCkKICAgICA6IG1fYXR0
ckNoYW5nZSgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTXV0
YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZE5vZGUs
CkluZGV4OiBXZWJDb3JlL2RvbS9BdXRvY29tcGxldGVFcnJvckV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5oCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL2RvbS9BdXRvY29tcGxldGVFcnJvckV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDE4ICs2MCwyMSBAQAogcHJpdmF0ZToKICAgICBBdXRvY29tcGxldGVFcnJvckV2ZW50
KCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAK
ICAgICBBdXRvY29tcGxldGVFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAg
ICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBmYWxzZSwgZmFs
c2UpCiAgICAgICAgICwgbV9yZWFzb24ocmVhc29uKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAogICAgIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF1dG9jb21wbGV0ZUVycm9yRXZl
bnRJbml0JiBpbml0aWFsaXplcikKICAgICAgICAgOiBFdmVudChldmVudFR5cGUsIGluaXRpYWxp
emVyKQogICAgICAgICAsIG1fcmVhc29uKGluaXRpYWxpemVyLnJlYXNvbikKICAgICB7CisgICAg
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBTdHJpbmcgbV9y
ZWFzb247CkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAKICAgICA6IExpdmVOb2RlTGlzdChyb290Tm9kZSwgUHJvcGVydHlOb2RlTGlz
dFR5cGUsIEludmFsaWRhdGVPbkl0ZW1BdHRyQ2hhbmdlLCBOb2RlTGlzdElzUm9vdGVkQXREb2N1
bWVudElmT3duZXJIYXNJdGVtcmVmQXR0cikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIGlu
aXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFByb3BlcnR5Tm9kZUxpc3Q6On5Qcm9wZXJ0eU5vZGVM
aXN0KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2Rv
bS9FcnJvckV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogCiBFcnJv
ckV2ZW50OjpFcnJvckV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBFcnJvckV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01Miw2ICs1Myw3IEBACiAgICAg
LCBtX2ZpbGVOYW1lKGluaXRpYWxpemVyLmZpbGVuYW1lKQogICAgICwgbV9saW5lTnVtYmVyKGlu
aXRpYWxpemVyLmxpbmVubykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQpAQCAtNjAsNiArNjIsNyBAQAog
ICAgICwgbV9maWxlTmFtZShmaWxlTmFtZSkKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVy
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXJyb3JFdmVudDo6
fkVycm9yRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vTm90YXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9kb20vTm90YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAg
LCBtX3B1YmxpY0lkKHB1YmxpY0lkKQogICAgICwgbV9zeXN0ZW1JZChzeXN0ZW1JZCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0cmluZyBOb3RhdGlvbjo6bm9k
ZU5hbWUoKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vQ29tbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
ZG9tL0NvbW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxpbmUg
Q29tbWVudDo6Q29tbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIHRleHQsIENyZWF0ZU90aGVyKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDb21tZW50PiBD
b21tZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCklu
ZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9BdHRy
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vQXR0ci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1faW5DaGlsZHJlbkNoYW5nZWQoZmFsc2Up
CiAgICAgLCBtX3NwZWNpZmllZCh0cnVlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogQXR0cjo6QXR0cihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhbG9uZVZhbHVlKQpAQCAtNTcs
NiArNTgsNyBAQAogICAgICwgbV9pbkNoaWxkcmVuQ2hhbmdlZChmYWxzZSkKICAgICAsIG1fc3Bl
Y2lmaWVkKHRydWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0ZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKQpJbmRleDogV2ViQ29yZS9kb20vRW50aXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRW50aXR5LmgJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9t
L0VudGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSwxMCBAQAogICAgIFN0cmluZyBu
b3RhdGlvbk5hbWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5n
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBFbnRpdHkoKSA6IENvbnRhaW5lck5vZGUoMCkge30KKyAg
ICBFbnRpdHkoKSA6IENvbnRhaW5lck5vZGUoMCkKKyAgICB7CisgICAgICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKKyAgICB9CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAogICAgIDogbV9rZXlM
b2NhdGlvbihET01LZXlMb2NhdGlvblN0YW5kYXJkKQogICAgICwgbV9hbHRHcmFwaEtleShmYWxz
ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEtleWJvYXJkRXZl
bnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIEFic3Ry
YWN0VmlldyogdmlldykKQEAgLTExNSw2ICsxMTYsNyBAQAogICAgICwgbV9rZXlMb2NhdGlvbihr
ZXlMb2NhdGlvbkNvZGUoa2V5KSkKICAgICAsIG1fYWx0R3JhcGhLZXkoZmFsc2UpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBLZXlib2FyZEV2ZW50OjpLZXlib2Fy
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBLZXlib2FyZEV2ZW50
SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICAsIG1fa2V5TG9jYXRp
b24oaW5pdGlhbGl6ZXIua2V5TG9jYXRpb24pCiAgICAgLCBtX2FsdEdyYXBoS2V5KGZhbHNlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogS2V5Ym9hcmRFdmVudDo6
S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgQWJzdHJhY3RWaWV3ICp2aWV3LApAQCAtMTMzLDYgKzEzNiw3
IEBACiAgICAgLCBtX2tleUxvY2F0aW9uKGtleUxvY2F0aW9uKQogICAgICwgbV9hbHRHcmFwaEtl
eShhbHRHcmFwaEtleSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYgKzIzNiw3IEBACiBET01JbXBsZW1lbnRh
dGlvbjo6RE9NSW1wbGVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9kb2N1
bWVudChkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IGJvb2wgRE9NSW1wbGVtZW50YXRpb246Omhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJl
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIERvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50
RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlv
blR5cGUpCiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOCAr
MzcsMjEgQEAKIAogQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudCgpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21w
b3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFj
dFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICA6IFVJRXZlbnQodHlwZSwgdHJ1
ZSwgdHJ1ZSwgdmlldywgMCkKICAgICAsIG1fZGF0YShkYXRhKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IENvbXBvc2l0aW9uRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX2Rh
dGEoaW5pdGlhbGl6ZXIuZGF0YSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAgICAgLCBtX3RlbXBsYXRlRG9jdW1lbnRIb3N0
KDApCiAjZW5kaWYKIHsKKyAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIG1f
cHJpbnRpbmcgPSBmYWxzZTsKICAgICBtX3BhZ2luYXRlZEZvclNjcmVlbiA9IGZhbHNlOwogCklu
ZGV4OiBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
Tm9kZUxpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vTm9kZUxpc3QuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm9kZUxpc3Q6Ok5v
ZGVMaXN0KCkKK3sKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL05vZGVM
aXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBX
ZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9P
dmVyZmxvd0V2ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20vT3ZlcmZs
b3dFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAsIG1faG9y
aXpvbnRhbE92ZXJmbG93KGZhbHNlKQogICAgICwgbV92ZXJ0aWNhbE92ZXJmbG93KGZhbHNlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogT3ZlcmZsb3dFdmVudDo6
T3ZlcmZsb3dFdmVudChib29sIGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQsIGJvb2wgaG9yaXpv
bnRhbE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIHZlcnRpY2Fs
T3ZlcmZsb3cpCkBAIC01MSw2ICs1Miw3IEBACiAgICAgLCBtX3ZlcnRpY2FsT3ZlcmZsb3codmVy
dGljYWxPdmVyZmxvdykKIHsKICAgICBBU1NFUlQoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCB8
fCB2ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogCiAgICAgaWYgKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQgJiYgdmVydGljYWxPdmVy
Zmxvd0NoYW5nZWQpCiAgICAgICAgIG1fb3JpZW50ID0gQk9USDsKQEAgLTY2LDYgKzY4LDcgQEAK
ICAgICAsIG1faG9yaXpvbnRhbE92ZXJmbG93KGluaXRpYWxpemVyLmhvcml6b250YWxPdmVyZmxv
dykKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhpbml0aWFsaXplci52ZXJ0aWNhbE92ZXJmbG93
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBPdmVyZmxvd0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKSW5kZXg6IFdlYkNv
cmUvZG9tL0RPTVN0cmluZ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmlu
Z01hcC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsNyBAQAogICAgIHZpcnR1YWwgRWxlbWVudCogZWxl
bWVudCgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIERPTVN0cmluZ01hcCgpCi0gICAgewotICAg
IH0KKyAgICBET01TdHJpbmdNYXAoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0JlZm9yZUxvYWRFdmVudC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9C
ZWZvcmVMb2FkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTggKzY0LDIxIEBACiBwcml2
YXRlOgogICAgIEJlZm9yZUxvYWRFdmVudCgpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgQmVmb3JlTG9hZEV2ZW50KGNv
bnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVsb2Fk
RXZlbnQsIGZhbHNlLCB0cnVlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICB7CisgICAgICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBCZWZvcmVMb2FkRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBCZWZvcmVMb2FkRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAgICAg
LCBtX3VybChpbml0aWFsaXplci51cmwpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fdXJsOwpJbmRleDogV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3
IEBACiAgICAgLCBtX2lzWFNMKGZhbHNlKQogI2VuZGlmCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJbmRleDogV2ViQ29yZS9kb20vRW50aXR5
UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2Uu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgOiBDb250YWluZXJOb2RlKGRv
Y3VtZW50KQogICAgICwgbV9lbnRpdHlOYW1lKGVudGl0eU5hbWUpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50
aXR5UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVu
dGl0eU5hbWUpCkluZGV4OiBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRE9NU3RyaW5nTWFwOjpET01TdHJpbmdNYXAo
KQoreworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKK30KKwogRE9NU3RyaW5nTWFw
Ojp+RE9NU3RyaW5nTWFwKCkKIHsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L05vZGVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL05vZGVJ
dGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKIHsKICAgICAvLyBE
b2N1bWVudCB0eXBlIG5vZGVzIG1heSBoYXZlIGEgbnVsbCBkb2N1bWVudC4gQnV0IHNpbmNlIHRo
ZXkgY2FuJ3QgaGF2ZSBjaGlsZHJlbiwgdGhlcmUgaXMgbm8gbmVlZCB0byBsaXN0ZW4gZm9yIG1v
ZGlmaWNhdGlvbnMgdG8gdGhlc2UuCiAgICAgQVNTRVJUKHJvb3QoKS0+ZG9jdW1lbnQoKSB8fCBy
b290KCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKERvY3VtZW50KiBvd25lckRvY3VtZW50
ID0gcm9vdCgpLT5kb2N1bWVudCgpKQogICAgICAgICBvd25lckRvY3VtZW50LT5hdHRhY2hOb2Rl
SXRlcmF0b3IodGhpcyk7CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKICAgICA6IFRyYXZlcnNhbChyb290Tm9kZSwgd2hhdFRvU2hvdywgZmlsdGVyLCBleHBh
bmRFbnRpdHlSZWZlcmVuY2VzKQogICAgICwgbV9jdXJyZW50KHJvb3QoKSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVu
dE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFdl
YkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2Ny
ZWF0ZVRpbWUoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEV2ZW50OjpFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2Vs
YWJsZUFyZykKQEAgLTY3LDYgKzY4LDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAg
ICwgbV9jcmVhdGVUaW1lKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUo
KSkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFdmVudDo6RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCkBAIC04Miw2ICs4NCw3IEBACiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAs
IG1fY3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkp
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXZlbnQ6On5FdmVu
dCgpCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9kb20v
TmFtZWROb2RlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEyICs2Niw3IEBACiAgICAgRWxl
bWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IE5hbWVkTm9kZU1hcChFbGVtZW50KiBlbGVtZW50KQotICAgICAgICA6IG1f
ZWxlbWVudChlbGVtZW50KQotICAgIHsKLSAgICAgICAgLy8gT25seSBzdXBwb3J0cyBOYW1lZE5v
ZGVNYXBzIHdpdGggRWxlbWVudCBhc3NvY2lhdGVkLCBEb2N1bWVudFR5cGUuZW50aXRpZXMgYW5k
IERvY3VtZW50VHlwZS5ub3RhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgICAgICBB
U1NFUlQobV9lbGVtZW50KTsKLSAgICB9CisgICAgZXhwbGljaXQgTmFtZWROb2RlTWFwKEVsZW1l
bnQqIGVsZW1lbnQpOwogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogfTsKSW5kZXg6IFdlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbkFycmF5LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbkFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
RE9NUGx1Z2luQXJyYXk6OkRPTVBsdWdpbkFycmF5KEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogRE9NUGx1Z2luQXJyYXk6On5ET01QbHVnaW5BcnJheSgpCkluZGV4OiBXZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvRE9NUGx1
Z2luLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICAsIG1fcGx1Z2luRGF0YShw
bHVnaW5EYXRhKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIERPTVBsdWdpbjo6fkRPTVBsdWdpbigpCkluZGV4OiBXZWJDb3Jl
L3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKIERPTU1pbWVUeXBlQXJyYXk6OkRPTU1pbWVUeXBlQXJyYXkoRnJhbWUqIGZyYW1lKQogICAg
IDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBET01NaW1lVHlwZUFycmF5Ojp+RE9NTWltZVR5cGVBcnJheSgpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHVmlld0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAs
IG1fdmlld1RhcmdldChTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnZpZXdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdWaWV3RWxlbWVudCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAg
ICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQUVs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptZXRhZGF0YVRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNZXRh
ZGF0YUVsZW1lbnQ+IFNWR01ldGFkYXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Rp
dGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
dGl0bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHVGl0bGVFbGVtZW50PiBTVkdUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3RvcEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1fb2Zmc2V0KDAp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdTdG9wRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICAgICAsIG1fc3BhY2luZyhTVkdU
ZXh0UGF0aFNwYWNpbmdFeGFjdCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
dGV4dFBhdGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UGF0aEVsZW1lbnQoKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
c3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
CiAgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6Y3Vyc29yVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ3Vyc29yRWxlbWVudCgpOwogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnZrZXJuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgLCBtX3N0ZERldmlhdGlvblkoMikKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEcm9wU2hhZG93VGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVEcm9wU2hhZG93RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
b2x5Z29uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR1BvbHlF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5Z29uVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPFNWR1BvbHlnb25FbGVtZW50PiBTVkdQb2x5Z29uRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQAogICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICwgbV9n
cmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdHcmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNUGF0
aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgOiBTVkdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjptcGF0aFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01QYXRoRWxlbWVudCgpOwogfQogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAsIG1fdHlwZShTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4gU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICAsIG1fY2FsY01vZGUoQ2FsY01v
ZGVMaW5lYXIpCiAgICAgLCBtX2FuaW1hdGlvbk1vZGUoTm9BbmltYXRpb24pCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHQW5pbWF0aW9uRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpnVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAg
ICAgLCBtX2lzQW5pbVZhbE9ic2VydmVkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjpwYXRoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0aEVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNv
cmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3
IEBACiAgICAgLCBtX3N2Z0xvYWRFdmVudFRpbWVyKHRoaXMsICZTVkdFbGVtZW50OjpzdmdMb2Fk
RXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzY3Jp
cHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTY3JpcHRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NiArNTUsNyBAQAogICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgOiBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50KHRhZ05hbWUsIGRvYykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6dGV4dFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRFbGVtZW50KCk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QAogICAgICwgbV9tb2RlKEZFQkxFTkRfTU9ERV9OT1JNQUwpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZlQmxlbmRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUJsZW5kRWxlbWVu
dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBo
SXRlbVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdBbHRHbHlwaEl0ZW1FbGVtZW50PiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3Iv
ZnIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1
ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6cmFkaWFsR3JhZGllbnRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX2R5KDApCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmdseXBoUmVmVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR2x5cGhSZWZFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUw
MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNiArODQsNyBAQAogewogICAgIC8vIFNwZWM6IElmIHRoZSBtYXJrZXJXaWR0aC9tYXJr
ZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6Om1hcmtlclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01hcmtlckVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1Myw3IEBACiAgICAgLCBtX2ZvbnRFbGVtZW50KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoZm9udF9mYWNlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0
eVNldDo6Y3JlYXRlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQcm9w
ZXJ0aWVzKHN0eWxlRGVjbGFyYXRpb24ucmVsZWFzZSgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsNyBAQAogICAgICwgbV9zdXJmYWNlU2NhbGUoMSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VOYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVtZW50
PiBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZlVGlsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFVGlsZUVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAgICAgLCBtX3NwZWNpZmllZFRleHRMZW5ndGgo
TGVuZ3RoTW9kZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRqdXN0U3Bh
Y2luZykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0Q29udGVudEVsZW1lbnQoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5
bGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR1BvbHlF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5bGluZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdQb2x5bGluZUVsZW1lbnQ+IFNWR1BvbHlsaW5lRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1
MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb250X2ZhY2VfZm9ybWF0VGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRG
YWNlRm9ybWF0RWxlbWVudD4gU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaERlZlRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbHRHbHlwaERlZkVsZW1lbnQ+
IFNWR0FsdEdseXBoRGVmRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQAogU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU1ZHU1ZHRWxlbWVudCog
U1ZHRG9jdW1lbnQ6OnJvb3RFbGVtZW50KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01p
c3NpbmdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01pc3Np
bmdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdN
aXNzaW5nR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
ICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNaXNzaW5nR2x5cGhFbGVtZW50
PiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgLCBtX19v
cGVyYXRvcihGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29tcG9zaXRl
RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRzcGFuVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNW
R1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3
IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIFNWR1N0eWxlZEVs
ZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCiAgICAg
OiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR1N0eWxlZEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBACiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFTWVyZ2VFbGVtZW50PiBT
VkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgICwgbV9hbmltYXRlZFByb3BlcnR5VHlwZShB
bmltYXRlZFN0cmluZykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0
ZVRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSB8fCBoYXNUYWdOYW1lKFNWR05h
bWVzOjphbmltYXRlQ29sb3JUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFu
c2Zvcm1UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZUVsZW1lbnQ+IFNWR0FuaW1hdGVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAgICAg
LCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmVsbGlwc2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAK
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdT
eW1ib2xFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlRnVuY0JUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVGdW5jQkVsZW1lbnQ+IFNWR0ZFRnVuY0JFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAgICAgLCBtX2hlaWdodChMZW5ndGhNb2RlSGVp
Z2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFRnVuY1JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jUkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAg
ICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jUlRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNS
RWxlbWVudD4gU1ZHRkVGdW5jUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50
TGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGln
aHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVQb2lu
dExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6
IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD4gU1ZH
RkVQb2ludExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogICAgICwgbV9yKExlbmd0aE1vZGVPdGhlcikKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y2lyY2xlVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHQ2lyY2xlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fY2xpcFBhdGhVbml0
cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNsaXBQYXRoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2xp
cFBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9pc0dseXBoQ2FjaGVWYWxpZChmYWxzZSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udFRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZvbnRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDog
U1ZHRkVMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudD4g
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9y
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVD
b2xvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBT
VkdBbmltYXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVDb2xvckVsZW1lbnQ+IFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUx
LDcgQEAKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUp
CiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBl
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBzZXRIYXNDdXN0b21T
dHlsZUNhbGxiYWNrcygpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21w
b25lbnRUcmFuc2ZlclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z2x5cGhUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHR2x5cGhFbGVtZW50
PiBTVkdHbHlwaEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDcgQEAKICAgICAsIG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb250X2ZhY2VfdXJpVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0ZvbnRGYWNlVXJpRWxlbWVudD4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlR2F1c3NpYW5CbHVyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNiArNTcsNyBAQAogICAgICwgbV9hbXBsaXR1ZGUoMSkKICAgICAsIG1fZXhwb25lbnQoMSkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAK
ICAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6cmVjdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1JlY3RFbGVtZW50KCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogICAgICwg
bV90aW1lQ29udGFpbmVyKFNNSUxUaW1lQ29udGFpbmVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1NWR0Vs
ZW1lbnQoKTsKICAgICBkb2MtPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNr
cyh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZGVzY1RhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdEZXNjRWxlbWVudD4gU1ZH
RGVzY0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAs
IG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRkVM
aWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlU3BvdExpZ2h0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFU3BvdExpZ2h0RWxlbWVudD4gU1ZHRkVTcG90TGln
aHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgLCBtX19vcGVyYXRvcihGRU1P
UlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlTW9ycGhvbG9neVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
ICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTW9ycGhvbG9neUVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3
IEBACiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCkpOwogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVtZW50
KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQAogICAgICwgbV9zdmdMb2FkRXZlbnRUaW1lcih0aGlzLCAmU1ZHRWxlbWVudDo6
c3ZnTG9hZEV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6c3R5bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFNW
R1N0eWxlRWxlbWVudDo6flNWR1N0eWxlRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQAogICAgICwgbV90YXJnZXRMaXN0ZW5l
cihTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjp0cmVmVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVFJlZkVsZW1l
bnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiB7CiAgICAgc2V0Q2FsY01vZGUo
Q2FsY01vZGVQYWNlZCk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYW5pbWF0ZU1vdGlvblRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdB
bmltYXRlTW90aW9uRWxlbWVudD4gU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUZ1bmNBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAg
ICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNBVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRnVuY0FF
bGVtZW50PiBTVkdGRUZ1bmNBRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogICAgIDogbV9uZXdTY2FsZSgwLjBmKQogICAgICwgbV9wcmV2
aW91c1NjYWxlKDAuMGYpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBGbG9hdFJlY3QgU1ZHWm9vbUV2ZW50Ojp6b29tUmVjdFNjcmVlbigpIGNvbnN0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAK
ICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRl
cm5UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXR0ZXJuRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAv
LyBTcGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6
IElmIHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZl
Y3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlckVs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2
KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSw3IEBACiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3Bl
Y2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHTWFza0VsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSw3IEBACiAgICAgLCBtX2VkZ2VNb2RlKEVER0VNT0RFX0RVUExJQ0FURSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb252b2x2ZU1hdHJpeFRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUltYWdlVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RkVJbWFnZUVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBTVkdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFj
ZV9zcmNUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHRm9udEZhY2VTcmNFbGVtZW50PiBTVkdGb250RmFjZVNyY0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGbG9vZFRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdG
RUZsb29kRWxlbWVudD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDYgKzYxLDcgQEAKICAgICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHQWx0R2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgOiBT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FsdEds
eXBoRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVPZmZzZXRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNldEVsZW1l
bnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpoa2VyblRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdIS2VybkVsZW1lbnQ+IFNWR0hL
ZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlRnVuY0dUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVGdW5jR0VsZW1lbnQ+IFNWR0ZFRnVuY0dFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBACiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJ
WCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0RlZnNF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogICAgIDogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmRlZnNUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdEZWZzRWxlbWVu
dCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDYgKzY2LDcgQEAKICAgICAsIG1faW1hZ2VMb2FkZXIodGhpcykKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdJbWFnZUVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdl
YkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiB7CiAgICAgc2V0QW5pbWF0aW9uTW9kZShUb0FuaW1hdGlvbik7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdTZXRFbGVtZW50PiBTVkdTZXRFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBA
CiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHU3dpdGNoRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDcgQEAKIERPTUFwcGxpY2F0aW9uQ2FjaGU6OkRPTUFwcGxpY2F0aW9u
Q2FjaGUoRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
KiBjYWNoZUhvc3QgPSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogICAgIGlmIChjYWNoZUhvc3Qp
CiAgICAgICAgIGNhY2hlSG9zdC0+c2V0RE9NQXBwbGljYXRpb25DYWNoZSh0aGlzKTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5jcHAJKHJldmlzaW9uIDE0NTAyNikKKysrIFdlYkNvcmUv
cGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDE0
IEBACiAKIFNwZWVjaElucHV0RXZlbnQ6OlNwZWVjaElucHV0RXZlbnQoKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoSW5wdXRFdmVudDo6U3BlZWNoSW5w
dXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSYgcmVzdWx0cykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2Up
IC8vIENhbiBidWJibGUsIG5vdCBjYW5jZWxhYmxlCiAgICAgLCBtX3Jlc3VsdHMoU3BlZWNoSW5w
dXRSZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBTcGVlY2hJbnB1dEV2ZW50Ojp+U3BlZWNoSW5wdXRFdmVudCgpCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAKIENvbnNvbGU6OkNvbnNvbGUoRnJh
bWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDb25zb2xlOjp+Q29uc29sZSgpCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIE5hdmlnYXRvcjo6TmF2aWdhdG9y
KEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTmF2aWdhdG9yOjp+TmF2aWdhdG9yKCkK
SW5kZXg6IFdlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9DcnlwdG8uY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBXZWJDb3JlL3BhZ2UvQ3J5cHRvLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogCiBDcnlwdG86OkNyeXB0bygpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB2b2lkIENyeXB0bzo6Z2V0
UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQpJ
bmRleDogV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9IaXN0b3J5LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2ViQ29yZS9wYWdlL0hpc3Rvcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBET01XaW5kb3dQcm9w
ZXJ0eShmcmFtZSkKICAgICAsIG1fbGFzdFN0YXRlT2JqZWN0UmVxdWVzdGVkKDApCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB1bnNpZ25lZCBIaXN0b3J5OjpsZW5n
dGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3
IEBACiAgICAgLCBtX3VzZXJUaW1pbmcoMCkKICNlbmRpZiAvLyBFTkFCTEUoVVNFUl9USU1JTkcp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQZXJmb3JtYW5jZTo6
flBlcmZvcm1hbmNlKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
TG9jYXRpb246OkxvY2F0aW9uKEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogaW5saW5l
IGNvbnN0IEtVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdApJbmRleDogV2ViQ29yZS9wYWdlL0Jh
ckluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9CYXJJbmZvLmNwcAkocmV2aXNp
b24gMTQ1MDI2KQorKysgV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKICAgICAsIG1f
dHlwZSh0eXBlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQmFy
SW5mbzo6VHlwZSBCYXJJbmZvOjp0eXBlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGFnZS9TY3Jl
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCShyZXZpc2lvbiAx
NDUwMjYpCisrKyBXZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQAogU2NyZWVuOjpTY3JlZW4oRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93
UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiB1bnNpZ25lZCBTY3JlZW46Omhvcml6b250YWxEUEkoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193663</attachid>
            <date>2013-03-18 14:59:24 -0700</date>
            <delta_ts>2013-03-21 12:17:42 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>patch_112191.txt</filename>
            <type>text/plain</type>
            <size>184234</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0F0dHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0F0
dHIuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9BdHRyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9pbkNoaWxkcmVuQ2hhbmdlZChmYWxz
ZSkKICAgICAsIG1fc3BlY2lmaWVkKHRydWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBBdHRyOjpBdHRyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFsb25lVmFsdWUpCkBAIC01
Nyw2ICs1OCw3IEBACiAgICAgLCBtX2luQ2hpbGRyZW5DaGFuZ2VkKGZhbHNlKQogICAgICwgbV9z
cGVjaWZpZWQodHJ1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FbnRpdHkuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9k
b20vRW50aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEwIEBACiAgICAgU3RyaW5n
IG5vdGF0aW9uTmFtZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJp
bmcoKTsgfQogCiBwcml2YXRlOgotICAgIEVudGl0eSgpIDogQ29udGFpbmVyTm9kZSgwKSB7fQor
ICAgIEVudGl0eSgpIDogQ29udGFpbmVyTm9kZSgwKQorICAgIHsKKyAgICAgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOworICAgIH0KIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdl
YkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgOiBtX2tl
eUxvY2F0aW9uKERPTUtleUxvY2F0aW9uU3RhbmRhcmQpCiAgICAgLCBtX2FsdEdyYXBoS2V5KGZh
bHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgQWJz
dHJhY3RWaWV3KiB2aWV3KQpAQCAtMTE1LDYgKzExNiw3IEBACiAgICAgLCBtX2tleUxvY2F0aW9u
KGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9hbHRHcmFwaEtleShmYWxzZSkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6OktleWJv
YXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEtleWJvYXJkRXZl
bnRJbml0JiBpbml0aWFsaXplcikKQEAgLTEyMyw2ICsxMjUsNyBAQAogICAgICwgbV9rZXlMb2Nh
dGlvbihpbml0aWFsaXplci5rZXlMb2NhdGlvbikKICAgICAsIG1fYWx0R3JhcGhLZXkoZmFsc2Up
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBLZXlib2FyZEV2ZW50
OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBBYnN0cmFjdFZpZXcgKnZpZXcsCkBAIC0xMzMsNiArMTM2
LDcgQEAKICAgICAsIG1fa2V5TG9jYXRpb24oa2V5TG9jYXRpb24pCiAgICAgLCBtX2FsdEdyYXBo
S2V5KGFsdEdyYXBoS2V5KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogS2V5Ym9hcmRFdmVudDo6fktleWJvYXJkRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDcgQEAKIERPTUltcGxlbWVu
dGF0aW9uOjpET01JbXBsZW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1
cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3Bw
CShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1l
bnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0
aW9uVHlwZSkKICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysg
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE4
ICszNywyMSBAQAogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPEFic3Ry
YWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIDogVUlFdmVudCh0eXBlLCB0
cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ29tcG9zaXRpb25FdmVudEluaXQm
IGluaXRpYWxpemVyKQogICAgIDogVUlFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1f
ZGF0YShpbml0aWFsaXplci5kYXRhKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKQpJbmRleDogV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTcsNiArNDk3LDcgQEAKICAgICAsIG1fZm9udGxvYWRlcigwKQogI2Vu
ZGlmCiB7CisgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBtX3ByaW50aW5n
ID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKIApJbmRleDogV2Vi
Q29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vT3Zl
cmZsb3dFdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL092ZXJmbG93
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgLCBtX2hvcml6
b250YWxPdmVyZmxvdyhmYWxzZSkKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhmYWxzZSkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE92ZXJmbG93RXZlbnQ6Ok92
ZXJmbG93RXZlbnQoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIGhvcml6b250
YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCwgYm9vbCB2ZXJ0aWNhbE92
ZXJmbG93KQpAQCAtNTEsNiArNTIsNyBAQAogICAgICwgbV92ZXJ0aWNhbE92ZXJmbG93KHZlcnRp
Y2FsT3ZlcmZsb3cpCiB7CiAgICAgQVNTRVJUKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQgfHwg
dmVydGljYWxPdmVyZmxvd0NoYW5nZWQpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIAogICAgIGlmIChob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkICYmIHZlcnRpY2FsT3ZlcmZs
b3dDaGFuZ2VkKQogICAgICAgICBtX29yaWVudCA9IEJPVEg7CkBAIC02Niw2ICs2OCw3IEBACiAg
ICAgLCBtX2hvcml6b250YWxPdmVyZmxvdyhpbml0aWFsaXplci5ob3Jpem9udGFsT3ZlcmZsb3cp
CiAgICAgLCBtX3ZlcnRpY2FsT3ZlcmZsb3coaW5pdGlhbGl6ZXIudmVydGljYWxPdmVyZmxvdykK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgT3ZlcmZsb3dFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CkluZGV4OiBXZWJDb3Jl
L2RvbS9CZWZvcmVMb2FkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9CZWZvcmVM
b2FkRXZlbnQuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDE4ICs2NCwyMSBAQAogcHJpdmF0ZToKICAgICBC
ZWZvcmVMb2FkRXZlbnQoKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIH0KIAogICAgIGV4cGxpY2l0IEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcm
IHVybCkKICAgICAgICAgOiBFdmVudChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBmYWxz
ZSwgdHJ1ZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgQmVmb3JlTG9hZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQmVmb3JlTG9hZEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CiAgICAgICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgICAgICwgbV91cmwoaW5p
dGlhbGl6ZXIudXJsKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIH0KIAogICAgIFN0cmluZyBtX3VybDsKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTVN0cmlu
Z01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNiArNTUsNyBAQAogcHJvdGVjdGVkOgogICAgIERPTVN0cmluZ01hcCgpCiAgICAgewor
ICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogfTsKIApJbmRleDog
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw2ICs1MSw3IEBACiAgICAgLCBtX2lzWFNMKGZhbHNlKQogI2VuZGlmCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVj
dGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJbmRleDogV2ViQ29yZS9k
b20vRW50aXR5UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbnRpdHlS
ZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9FbnRpdHlSZWZl
cmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgOiBDb250YWlu
ZXJOb2RlKGRvY3VtZW50KQogICAgICwgbV9lbnRpdHlOYW1lKGVudGl0eU5hbWUpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEVudGl0eVJlZmVy
ZW5jZT4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGVudGl0eU5hbWUpCkluZGV4OiBXZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTEyMTYsNyArMTIx
Niw4IEBACiA7CiAgICAgfQogCi0gICAgcHJpbnRXcmFwcGVyRnVuY3Rpb25zKCRGLCAkd3JhcHBl
ckZhY3RvcnlUeXBlKTsKKyAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBuZSAiVjgiKSB7ICMg
c3RhcnQgZnVubnkgaW5kZW50CisgICAgICAgIHByaW50V3JhcHBlckZ1bmN0aW9ucygkRiwgJHdy
YXBwZXJGYWN0b3J5VHlwZSk7CiAKICAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMi
KSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKQEAgLTEzMTQsNiArMTMxNSw4IEBACiBFTkQKIDsK
IAorICAgIH0gIyBlbmQgZnVubnkgaW5kZW50CisKICAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlw
ZSBlcSAiVjgiKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKIApJbmRleDogV2ViQ29yZS9kb20v
Tm9kZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBACiB7CiAgICAgLy8gRG9jdW1lbnQgdHlwZSBu
b2RlcyBtYXkgaGF2ZSBhIG51bGwgZG9jdW1lbnQuIEJ1dCBzaW5jZSB0aGV5IGNhbid0IGhhdmUg
Y2hpbGRyZW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gbGlzdGVuIGZvciBtb2RpZmljYXRpb25zIHRv
IHRoZXNlLgogICAgIEFTU0VSVChyb290KCktPmRvY3VtZW50KCkgfHwgcm9vdCgpLT5ub2RlVHlw
ZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIGlmIChEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IHJvb3QoKS0+ZG9j
dW1lbnQoKSkKICAgICAgICAgb3duZXJEb2N1bWVudC0+YXR0YWNoTm9kZUl0ZXJhdG9yKHRoaXMp
OwogfQpJbmRleDogV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9t
L1RyZWVXYWxrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBU
cmF2ZXJzYWwocm9vdE5vZGUsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJl
bmNlcykKICAgICAsIG1fY3VycmVudChyb290KCkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiB2b2lkIFRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYw
NTYpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcpCkBAIC02
Nyw2ICs2OCw3IEBACiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGlt
ZShjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtODIs
NiArODQsNyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUo
Y29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEV2ZW50Ojp+RXZlbnQoKQpJbmRleDogV2Vi
Q29yZS9kb20vTmFtZWROb2RlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmgJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAgICAgewogICAgICAgICAvLyBPbmx5
IHN1cHBvcnRzIE5hbWVkTm9kZU1hcHMgd2l0aCBFbGVtZW50IGFzc29jaWF0ZWQsIERvY3VtZW50
VHlwZS5lbnRpdGllcyBhbmQgRG9jdW1lbnRUeXBlLm5vdGF0aW9ucyBhcmUgbm90IHN1cHBvcnRl
ZCB5ZXQuCiAgICAgICAgIEFTU0VSVChtX2VsZW1lbnQpOworICAgICAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwpJbmRleDog
V2ViQ29yZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RleHQuaAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw2ICs1OCw3IEBACiAgICAgVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9j
dW1lbnQsIGRhdGEsIHR5cGUpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRp
b25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVu
dC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCArMzgsMjEgQEAKIFBhZ2VUcmFuc2l0aW9u
RXZlbnQ6OlBhZ2VUcmFuc2l0aW9uRXZlbnQoKQogICAgIDogbV9wZXJzaXN0ZWQoZmFsc2UpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlvbkV2
ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBw
ZXJzaXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVlKQogICAgICwgbV9wZXJzaXN0
ZWQocGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IFBhZ2VUcmFuc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAg
ICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9wZXJzaXN0ZWQoaW5pdGlhbGl6
ZXIucGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFnZVRyYW5zaXRpb25FdmVudDo6flBhZ2VUcmFuc2l0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgICAgICwgbV9kYXRhKCF0ZXh0
LmlzTnVsbCgpID8gdGV4dCA6IGVtcHR5U3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NFUlQo
dHlwZSA9PSBDcmVhdGVPdGhlciB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwgdHlwZSA9PSBDcmVh
dGVFZGl0aW5nVGV4dCk7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICB9CiAKICAgICB2b2lkIHNldERhdGFXaXRob3V0VXBkYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkK
SW5kZXg6IFdlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0NsaWVudFJlY3QuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9DbGll
bnRSZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDE5IEBACiAKIENsaWVudFJl
Y3Q6OkNsaWVudFJlY3QoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogQ2xpZW50UmVjdDo6Q2xpZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIDogbV9y
ZWN0KHJlY3QpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDbGll
bnRSZWN0OjpDbGllbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICA6IG1fcmVjdChy
ZWN0KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiBpbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgOiBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVh
dGVUZXh0KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJbmRleDogV2ViQ29yZS9kb20vTm9kZUxpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5oCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL2RvbS9Ob2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMiBAQAog
CiAgICAgICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICAgICAgdmly
dHVhbCBib29sIGlzTGl2ZU5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
cHJvdGVjdGVkOgorICAgICAgICBOb2RlTGlzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKKyAgICAgICAgfQogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogV2ViS2l0QW5pbWF0aW9uRXZlbnQ6Oldl
YktpdEFuaW1hdGlvbkV2ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMC4wKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViS2l0QW5pbWF0aW9uRXZlbnQ6Oldl
YktpdEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2ViS2l0
QW5pbWF0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKSW5kZXg6IFdlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgOiBtX2J1dHRvbigwKQogICAgICwgbV9idXR0b25E
b3duKGZhbHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTW91
c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
CkBAIC0xMjYsNiArMTI3LDcgQEAKICAgICAsIG1fcmVsYXRlZFRhcmdldChyZWxhdGVkVGFyZ2V0
KQogICAgICwgbV9jbGlwYm9hcmQoY2xpcGJvYXJkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtMTQw
LDYgKzE0Miw3IEBACiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoaW5pdGlhbGl6ZXIucmVsYXRlZFRh
cmdldCkKICAgICAsIG1fY2xpcGJvYXJkKDAgLyogY2xpcGJvYXJkICovKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBpbml0Q29vcmRpbmF0ZXMoSW50UG9pbnQoaW5p
dGlhbGl6ZXIuY2xpZW50WCwgaW5pdGlhbGl6ZXIuY2xpZW50WSkpOwogfQogCkluZGV4OiBXZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IG1fZGVsdGFNb2RlKERPTV9E
RUxUQV9QSVhFTCkKICAgICAsIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2hlZWxFdmVudDo6V2hl
ZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFdoZWVsRXZlbnRJbml0JiBp
bml0aWFsaXplcikKQEAgLTUwLDcgKzUxLDcgQEAKICAgICAsIG1fd2hlZWxEZWx0YShJbnRQb2lu
dChpbml0aWFsaXplci53aGVlbERlbHRhWCwgaW5pdGlhbGl6ZXIud2hlZWxEZWx0YVkpKQogICAg
ICwgbV9kZWx0YU1vZGUoaW5pdGlhbGl6ZXIuZGVsdGFNb2RlKQogewotfQorICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTt9CiAKIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQoY29uc3QgRmxv
YXRQb2ludCYgd2hlZWxUaWNrcywgY29uc3QgRmxvYXRQb2ludCYgcmF3RGVsdGEsIHVuc2lnbmVk
IGRlbHRhTW9kZSwKICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgSW50
UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0aW9uLApAQCAt
NjcsNiArNjgsNyBAQAogICAgICwgbV9kZWx0YU1vZGUoZGVsdGFNb2RlKQogICAgICwgbV9kaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBXaGVlbEV2ZW50Ojpp
bml0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4gdmlldywKSW5kZXg6IFdlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTggKzUx
LDIxIEBACiAKIEZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBy
ZWxhdGVkVGFyZ2V0KQogICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHZpZXcsIGRldGFpbCkKICAgICAsIG1fcmVsYXRlZFRhcmdldChyZWxhdGVkVGFyZ2V0KQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRm9jdXNFdmVudDo6Rm9jdXNF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEZvY3VzRXZlbnRJbml0JiBpbml0
aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3JlbGF0
ZWRUYXJnZXQoaW5pdGlhbGl6ZXIucmVsYXRlZFRhcmdldCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8Rm9jdXNFdmVudERpc3BhdGNoTWVkaWF0
b3I+IEZvY3VzRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2
ZW50PiBmb2N1c0V2ZW50KQpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
CShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQ6OldlYktpdFRyYW5zaXRpb25FdmVudCgpCiAgICAgOiBtX2VsYXBzZWRUaW1lKDApCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQ6OldlYktpdFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYg
cHNldWRvRWxlbWVudCkKQEAgLTQ2LDYgKzQ3LDcgQEAKICAgICAsIG1fZWxhcHNlZFRpbWUoZWxh
cHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYktpdFRyYW5zaXRpb25FdmVudDo6
V2ViS2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01NCw2ICs1Niw3IEBACiAg
ICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVyLmVsYXBzZWRUaW1lKQogICAgICwgbV9wc2V1
ZG9FbGVtZW50KGluaXRpYWxpemVyLnBzZXVkb0VsZW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6On5XZWJLaXRUcmFu
c2l0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysg
V2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYs
MTQgQEAKIAogQ3VzdG9tRXZlbnQ6OkN1c3RvbUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IEN1c3RvbUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAg
OiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fZGV0YWlsKGluaXRpYWxpemVyLmRl
dGFpbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEN1c3RvbUV2
ZW50Ojp+Q3VzdG9tRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3
IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hvdWxkTWF0
Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCkBAIC03Nyw2ICs3
OCw3IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hvdWxk
TWF0Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0Zy
YWdtZW50LApAQCAtODgsNiArOTAsNyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2Uoc2hv
dWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1hdGNoU3R5
bGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBUZXh0RXZlbnQ6
OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpCkBAIC05OCw2ICsxMDEsNyBAQAogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKGZhbHNl
KQogICAgICwgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVGV4dEV2ZW50Ojp+VGV4
dEV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBACiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50KCkKICAgICA6IG1fb3JpZW50YXRpb24oRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmljZU9yaWVudGF0aW9uRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9yaWVudGF0aW9uRGF0YSogb3Jp
ZW50YXRpb24pCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkgLy8gQ2FuJ3Qg
YnViYmxlLCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgRGV2aWNlT3JpZW50YXRp
b25EYXRhKiBvcmllbnRhdGlvbikKSW5kZXg6IFdlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCShyZXZpc2lvbiAx
NDYwNTYpCisrKyBXZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsNyBAQAogICAgICwgbV9sb2FkZWQoMCkKICAgICAsIG1fdG90YWwoMCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFByb2dyZXNzRXZlbnQ6OlBy
b2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQcm9ncmVzc0V2ZW50
SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBACiAgICAgLCBtX2xvYWRlZChpbml0
aWFsaXplci5sb2FkZWQpCiAgICAgLCBtX3RvdGFsKGluaXRpYWxpemVyLnRvdGFsKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jl
c3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwg
dW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQpAQCAt
NTgsNiArNjAsNyBAQAogICAgICwgbV9sb2FkZWQobG9hZGVkKQogICAgICwgbV90b3RhbCh0b3Rh
bCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAgICAgCiBjb25zdCBB
dG9taWNTdHJpbmcmIFByb2dyZXNzRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdApJbmRleDog
V2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVUlFdmVu
dC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiBVSUV2ZW50OjpVSUV2ZW50KCkKICAgICA6IG1f
ZGV0YWlsKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBVSUV2
ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJs
ZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogICAgICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQo
c3lzdGVtSWQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBLVVJM
IERvY3VtZW50VHlwZTo6YmFzZVVSSSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE0NjA1
NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NDgsNiAr
MTY0OCw3IEBACiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKCFtX3RyZWVTY29wZSkKICAgICAg
ICAgbV90cmVlU2NvcGUgPSBUcmVlU2NvcGU6Om5vRG9jdW1lbnRJbnN0YW5jZSgpOwogICAgIG1f
dHJlZVNjb3BlLT5ndWFyZFJlZigpOwpJbmRleDogV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1
NikKKysrIFdlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAKIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVG91Y2hFdmVudDo6VG91Y2hFdmVudChUb3VjaExpc3Qq
IHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKQEAgLTU5LDYgKzYwLDcgQEAKICAg
ICAsIG1fZG91YmxlVGFwKGZhbHNlKQogI2VuZGlmCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpCkluZGV4OiBXZWJDb3Jl
L2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYxMSw2ICs2MTEsNyBAQAogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUp
CiAgICAgICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CkluZGV4
OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIE1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KCkKICAgICA6IG1fZGF0YVR5cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50
SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MSw2ICs1Miw3IEBACiAgICAgLCBtX3NvdXJjZShpbml0
aWFsaXplci5zb3VyY2UpCiAgICAgLCBtX3BvcnRzKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFy
cmF5KGluaXRpYWxpemVyLnBvcnRzKSkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBh
c3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMpCkBAIC02Miw2ICs2NCw3IEBACiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBt
X3BvcnRzKHBvcnRzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IHBvcnRzKQpAQCAtNzcsNiArODAsNyBAQAogICAgIGlmIChtX2RhdGFBc1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkKICAgICAgICAgbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUtPnJlZ2lz
dGVyTWVtb3J5QWxsb2NhdGVkV2l0aEN1cnJlbnRTY3JpcHRDb250ZXh0KCk7CiAjZW5kaWYKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC04Niw2
ICs5MCw3IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIi
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
bikKQEAgLTk1LDYgKzEwMCw3IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xh
c3RFdmVudElkKCIiKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC0xMDQsNiArMTEwLDcgQEAKICAgICAsIG1fb3JpZ2lu
KG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQoIiIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQpJbmRleDog
V2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9k
b20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTQg
QEAKIERldmljZU1vdGlvbkV2ZW50OjpEZXZpY2VNb3Rpb25FdmVudCgpCiAgICAgOiBtX2Rldmlj
ZU1vdGlvbkRhdGEoRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKCkpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBEZXZpY2VNb3Rpb25FdmVudDo6RGV2aWNlTW90aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlvbkRhdGEqIGRl
dmljZU1vdGlvbkRhdGEpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkgLy8g
Q2FuJ3QgYnViYmxlLCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9kZXZpY2VNb3Rpb25EYXRhKGRl
dmljZU1vdGlvbkRhdGEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiB2b2lkIERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgRGV2aWNlTW90
aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkKSW5kZXg6IFdlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAx
NDYwNTYpCisrKyBXZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNiArNjMsNyBAQAogICAgICwgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAodHlwZSA9PSBTaGFkb3dS
b290OjpBdXRob3JTaGFkb3dSb290KSB7CkluZGV4OiBXZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2
ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFw
c2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQpAQCAtNDcsNiArNDgsNyBAQAog
ICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKICAgICAsIG1fcHNldWRvRWxlbWVudChw
c2V1ZG9FbGVtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
VHJhbnNpdGlvbkV2ZW50OjpUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBUcmFuc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTU1LDYgKzU3LDcg
QEAKICAgICAsIG1fZWxhcHNlZFRpbWUoaW5pdGlhbGl6ZXIuZWxhcHNlZFRpbWUpCiAgICAgLCBt
X3BzZXVkb0VsZW1lbnQoaW5pdGlhbGl6ZXIucHNldWRvRWxlbWVudCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6flRyYW5zaXRpb25F
dmVudCgpCkluZGV4OiBXZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2Vi
Q29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcg
QEAKIHByaXZhdGU6CiAgICAgSGFzaENoYW5nZUV2ZW50KCkKICAgICB7CisgICAgICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBIYXNoQ2hhbmdlRXZlbnQoY29u
c3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKQpAQCAtNzgsNiArNzksNyBA
QAogICAgICAgICAsIG1fb2xkVVJMKG9sZFVSTCkKICAgICAgICAgLCBtX25ld1VSTChuZXdVUkwp
CiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAg
ICAgSGFzaENoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSGFzaENo
YW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04NSw2ICs4Nyw3IEBACiAgICAgICAgICwg
bV9vbGRVUkwoaW5pdGlhbGl6ZXIub2xkVVJMKQogICAgICAgICAsIG1fbmV3VVJMKGluaXRpYWxp
emVyLm5ld1VSTCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
ICAgICB9CiAKICAgICBTdHJpbmcgbV9vbGRVUkw7CkluZGV4OiBXZWJDb3JlL2RvbS9Qb3BTdGF0
ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fc2VyaWFsaXplZFN0YXRlKDApCiAg
ICAgLCBtX2hpc3RvcnkoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBA
CiAgICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQogICAgICwgbV9oaXN0b3J5KDApCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0
ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUs
IFBhc3NSZWZQdHI8SGlzdG9yeT4gaGlzdG9yeSkKQEAgLTU3LDYgKzU5LDcgQEAKICAgICAsIG1f
c2VyaWFsaXplZFN0YXRlKHNlcmlhbGl6ZWRTdGF0ZSkKICAgICAsIG1faGlzdG9yeShoaXN0b3J5
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVu
dDo6flBvcFN0YXRlRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0
NjA1NikKKysrIFdlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiBNdXRhdGlvbkV2ZW50OjpNdXRhdGlvbkV2ZW50KCkKICAgICA6IG1f
YXR0ckNoYW5nZSgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
TXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZE5v
ZGUsCkluZGV4OiBXZWJDb3JlL2RvbS9BdXRvY29tcGxldGVFcnJvckV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5oCShyZXZpc2lvbiAxNDYw
NTYpCisrKyBXZWJDb3JlL2RvbS9BdXRvY29tcGxldGVFcnJvckV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDE4ICs2MCwyMSBAQAogcHJpdmF0ZToKICAgICBBdXRvY29tcGxldGVFcnJvckV2
ZW50KCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9
CiAKICAgICBBdXRvY29tcGxldGVFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAg
ICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpCiAgICAgICAgICwgbV9yZWFzb24ocmVhc29uKQogICAgIHsKKyAgICAgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAogICAgIEF1dG9jb21wbGV0ZUVycm9yRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF1dG9jb21wbGV0ZUVycm9y
RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICAgICAgOiBFdmVudChldmVudFR5cGUsIGluaXRp
YWxpemVyKQogICAgICAgICAsIG1fcmVhc29uKGluaXRpYWxpemVyLnJlYXNvbikKICAgICB7Cisg
ICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBTdHJpbmcg
bV9yZWFzb247CkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDcgQEAKICAgICA6IExpdmVOb2RlTGlzdChyb290Tm9kZSwgUHJvcGVydHlOb2Rl
TGlzdFR5cGUsIEludmFsaWRhdGVPbkl0ZW1BdHRyQ2hhbmdlLCBOb2RlTGlzdElzUm9vdGVkQXRE
b2N1bWVudElmT3duZXJIYXNJdGVtcmVmQXR0cikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAg
IGluaXRXcmFwcGFibGUodGhpcyk7CiB9CiAKIFByb3BlcnR5Tm9kZUxpc3Q6On5Qcm9wZXJ0eU5v
ZGVMaXN0KCkKSW5kZXg6IFdlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZG9t
L05vdGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgICwgbV9w
dWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lzdGVtSWQpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTdHJpbmcgTm90YXRpb246Om5vZGVOYW1l
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L2RvbS9FcnJvckV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogCiBF
cnJvckV2ZW50OjpFcnJvckV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBFcnJvckV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01Miw2ICs1Myw3IEBACiAg
ICAgLCBtX2ZpbGVOYW1lKGluaXRpYWxpemVyLmZpbGVuYW1lKQogICAgICwgbV9saW5lTnVtYmVy
KGluaXRpYWxpemVyLmxpbmVubykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyKQpAQCAtNjAsNiArNjIsNyBA
QAogICAgICwgbV9maWxlTmFtZShmaWxlTmFtZSkKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVt
YmVyKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXJyb3JFdmVu
dDo6fkVycm9yRXZlbnQoKQpJbmRleDogV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vQ29tbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvZG9tL0NvbW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxp
bmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4
dCkKICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIHRleHQsIENyZWF0ZU90aGVyKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDb21tZW50
PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQp
CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKIERPTVBsdWdpbkFycmF5OjpET01QbHVnaW5BcnJheShGcmFtZSogZnJhbWUp
CiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIERPTVBsdWdpbkFycmF5Ojp+RE9NUGx1Z2luQXJyYXkoKQpJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysg
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiBET01NaW1lVHlwZUFycmF5OjpET01NaW1lVHlwZUFycmF5KEZyYW1lKiBm
cmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRE9NTWltZVR5cGVBcnJheTo6fkRPTU1pbWVUeXBlQXJy
YXkoKQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAgICAgLCBtX3BsdWdpbkRhdGEocGx1Z2luRGF0YSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBET01QbHVnaW46On5ET01Q
bHVnaW4oKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNo
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBA
CiBET01BcHBsaWNhdGlvbkNhY2hlOjpET01BcHBsaWNhdGlvbkNhY2hlKEZyYW1lKiBmcmFtZSkK
ICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGlj
YXRpb25DYWNoZUhvc3QoKTsKICAgICBpZiAoY2FjaGVIb3N0KQogICAgICAgICBjYWNoZUhvc3Qt
PnNldERPTUFwcGxpY2F0aW9uQ2FjaGUodGhpcyk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb250
RmFjZU5hbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZU5hbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VOYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAg
ICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZvbnRfZmFjZV9uYW1lVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ+IFNWR0Zv
bnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2
MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDYgKzkzLDcgQEAKICAgICAsIG1fdGltZUNvbnRhaW5lcihTTUlMVGltZUNvbnRhaW5lcjo6
Y3JlYXRlKHRoaXMpKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcp
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdTVkdFbGVtZW50KCk7CiAgICAgZG9jLT5yZWdpc3RlckZvclBhZ2VD
YWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAgICAsIG1fcihMZW5ndGhN
b2RlT3RoZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0NpcmNsZUVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHSEtlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdIS2VybkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpo
a2VyblRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdIS2VybkVsZW1lbnQ+IFNWR0hLZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogICAgIDogU1ZHRkVMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudD4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogICAgICwgbV9pbWFnZUxv
YWRlcih0aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjppbWFnZVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0ltYWdlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
U3BvdExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwb3RMaWdodFRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVNwb3RMaWdodEVsZW1lbnQ+
IFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBA
QAogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICAsIG1fbW9kZShGRUJM
RU5EX01PREVfTk9STUFMKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJs
ZW5kVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVCbGVuZEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlR2F1c3NpYW5CbHVyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
bWlzc2luZ19nbHlwaFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdNaXNzaW5nR2x5cGhFbGVtZW50PiBTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0aXRsZVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUaXRsZUVsZW1lbnQ+IFNWR1Rp
dGxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YWx0
R2x5cGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRHbHlwaEVsZW1lbnQoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBACiB7CiAgICAgQVNT
RVJUKGhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCkpOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjp1c2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVtZW50KCk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
NyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU9mZnNldFRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0ZFT2Zmc2V0RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1ZLZXJu
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnZrZXJuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VTcmNFbGVtZW50PiBTVkdGb250
RmFjZVNyY0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHTVBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogICAgICwgbV9hbXBsaXR1ZGUoMSkKICAgICAs
IG1fZXhwb25lbnQoMSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1ldGFkYXRhVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR01l
dGFkYXRhRWxlbWVudD4gU1ZHTWV0YWRhdGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVQ
b2ludExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAgICAgOiBTVkdGRUxpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVQb2ludExpZ2h0VGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFUG9pbnRMaWdodEVsZW1l
bnQ+IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICAgICAsIG1fc3BhY2luZyhT
VkdUZXh0UGF0aFNwYWNpbmdFeGFjdCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6dGV4dFBhdGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UGF0aEVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9z
dmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAg
ICAgLCBtX2lzR2x5cGhDYWNoZVZhbGlkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjpmb250VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9udEVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1l
cmdlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogICAgIDogU1ZHQW5pbWF0ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlQ29s
b3JFbGVtZW50PiBTVkdBbmltYXRlQ29sb3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgLCBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3RyaW5nKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpIHx8
IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgfHwgaGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlRWxlbWVudD4gU1ZHQW5pbWF0ZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAsIG1feUNoYW5u
ZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQAogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlz
IG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2Vy
ZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHRmlsdGVyRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAgICAsIG1feTIoTGVuZ3Ro
TW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0xpbmVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1NldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogewogICAgIHNldEFuaW1hdGlvbk1vZGUo
VG9BbmltYXRpb24pOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU2V0
RWxlbWVudD4gU1ZHU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogICAgICwgbV9zcHJlYWRNZXRob2Qo
U1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdHcmFkaWVu
dEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVG
dW5jQkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNCRWxlbWVudD4gU1ZHRkVG
dW5jQkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAsIG1f
dHlwZShTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVU5LTk9XTikKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudD4gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUZ1bmNSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGdW5j
UkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNS
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNSVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRnVuY1JFbGVtZW50PiBT
VkdGRUZ1bmNSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQsNiArNjQsNyBAQAogICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVjdEVs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpkZXNjVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVtZW50PiBT
VkdEZXNjRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN3
aXRjaFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N3aXRjaEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw2ICs1MCw3IEBACiAgICAgLCBtX19vcGVyYXRvcihGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJP
REUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTW9ycGhvbG9neVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdHbHlwaFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdHbHlwaFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAg
ICAgLCBtX2R5KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdseXBoUmVm
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR2x5cGhSZWZFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAog
ICAgICwgbV9mb250RWxlbWVudCgwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFj
ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gc3R5bGVEZWNsYXJhdGlvbiA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0
ZShDU1NTdHJpY3RNb2RlKTsKICAgICBtX2ZvbnRGYWNlUnVsZS0+c2V0UHJvcGVydGllcyhzdHls
ZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUU3BhbkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnRzcGFuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDcgQEAKICAgICAsIG1fdGFy
Z2V0TGlzdGVuZXIoU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlzKSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dHJlZlRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R1RSZWZFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmN1cnNvclRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0N1cnNvckVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdQb2x5RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
cG9seWxpbmVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHUG9seWxpbmVFbGVtZW50PiBTVkdQb2x5bGluZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICAgICAvLyBT
cGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlz
IGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElm
IHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6Om1hc2tUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNYXNrRWxlbWVudCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAg
ICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQUVs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAgICAgLCBtX2hlaWdodChM
ZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmb3Jl
aWduT2JqZWN0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoKTsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1
MCw3IEBACiAgICAgLCBtX3N2Z0xvYWRFdmVudFRpbWVyKHRoaXMsICZTVkdFbGVtZW50OjpzdmdM
b2FkRXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpz
Y3JpcHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTY3JpcHRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZFRnVuY0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
ICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0FUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVGdW5j
QUVsZW1lbnQ+IFNWR0ZFRnVuY0FFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBACiAgICAgLCBtX3BhdHRlcm5Db250
ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHUGF0dGVybkVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAgICAgLCBtX3Nw
ZWNpZmllZFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3Qo
U1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0Q29udGVudEVsZW1l
bnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9k
ZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICAgICA6IFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpkZWZzVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRGVmc0Vs
ZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYw
NTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpnbHlwaFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdHbHlwaEVsZW1l
bnQ+IFNWR0dseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmZUltYWdlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVJbWFnZUVsZW1lbnQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaERlZlRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdBbHRHbHlwaERlZkVsZW1lbnQ+IFNWR0FsdEdseXBoRGVmRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysg
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNiArNjksNyBAQAogewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9jeS9yL2ZyIGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjUw
JSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlh
bEdyYWRpZW50VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KCk7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBA
QAogICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1ZpZXdF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgICwgbV9fb3BlcmF0b3IoRkVD
T01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6ZmVDb21wb3NpdGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
Rmxvb2RUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHRkVGbG9vZEVsZW1lbnQ+IFNWR0ZFRmxvb2RFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBA
CiAgICAgLCBtX2NhbGNNb2RlKENhbGNNb2RlTGluZWFyKQogICAgICwgbV9hbmltYXRpb25Nb2Rl
KE5vQW5pbWF0aW9uKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FuaW1hdGlvbkVsZW1lbnQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3
IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIG1hcmtlcldpZHRoL21hcmtlckhlaWdodCBhdHRy
aWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIz
IiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFya2Vy
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFya2VyRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1fb2Zmc2V0
KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdTdG9wRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpnVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1
MCw3IEBACiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjbGlw
UGF0aFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0NsaXBQYXRoRWxlbWVudCgpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUaWxlVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHRkVUaWxlRWxlbWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdab29t
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA6IG1fbmV3U2NhbGUoMC4wZikKICAgICAsIG1f
cHJldmlvdXNTY2FsZSgwLjBmKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogRmxvYXRSZWN0IFNWR1pvb21FdmVudDo6em9vbVJlY3RTY3JlZW4oKSBjb25zdApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAgICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jR1RhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdG
RUZ1bmNHRWxlbWVudD4gU1ZHRkVGdW5jR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDYgKzUxLDcgQEAKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNv
bnN0cnVjdGlvblR5cGUpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
b25zdHJ1Y3Rpb25UeXBlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICAgICAsIG1fc3RkRGV2aWF0aW9uWSgyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRURyb3BTaGFkb3dFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogU1ZHRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb250X2ZhY2Vf
Zm9ybWF0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNz
UmVmUHRyPFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudD4gU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAgICAgLCBtX3N1cmZh
Y2VTY2FsZSgxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFy
TGlnaHRpbmdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogICAgICwgbV9zdXJm
YWNlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNl
TGlnaHRpbmdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhl
IHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpsaW5lYXJHcmFkaWVudFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDYgKzgxLDcgQEAKICAgICAsIG1faXNBbmltVmFsT2JzZXJ2ZWQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXRoRWxl
bWVudCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1
NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDcgQEAKICAgICAsIG1fc3ZnTG9hZEV2ZW50VGltZXIodGhpcywgJlNWR0VsZW1l
bnQ6OnN2Z0xvYWRFdmVudFRpbWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnN0eWxlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBTVkdTdHlsZUVsZW1lbnQ6On5TVkdTdHlsZUVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiBTVkdTdHlsZWRFbGVt
ZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAog
ewogICAgIHNldENhbGNNb2RlKENhbGNNb2RlUGFjZWQpOwogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGFuaW1hdGVNb3Rpb25UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ+IFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9uZW50VHJhbnNmZXJU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDcgQEAKICAgICAsIG1fdHlwZShGRVRVUkJVTEVOQ0VfVFlQRV9UVVJC
VUxFTkNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0RWxlbWVudCgpOwog
fQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICAgICA6IFNWR1BvbHlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BvbHlnb25FbGVtZW50
PiBTVkdQb2x5Z29uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6YWx0R2x5cGhJdGVtVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPFNWR0FsdEdseXBoSXRlbUVsZW1lbnQ+IFNWR0FsdEdseXBoSXRlbUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFNW
R0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAg
ICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFNWR1NWR0VsZW1lbnQqIFNWR0RvY3VtZW50Ojpyb290
RWxlbWVudCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MDU2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR1N5bWJvbEVsZW1lbnQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb250
RmFjZVVyaUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGZvbnRfZmFjZV91cmlUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VVcmlFbGVtZW50PiBTVkdGb250RmFjZVVyaUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICAgICA6IENTU1J1bGUocGFyZW50KQogICAgICwgbV9mb250RmFjZVJ1bGUoZm9u
dEZhY2VSdWxlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ1NT
Rm9udEZhY2VSdWxlOjp+Q1NTRm9udEZhY2VSdWxlKCkKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlTG9hZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZUxvYWRFdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlTG9hZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBDU1NG
b250RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ1NTRm9udEZhY2VMb2FkRXZlbnQ6OkNTU0ZvbnRG
YWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxDU1NGb250
RmFjZVJ1bGU+IGZvbnRmYWNlLCBQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvcikKQEAgLTQ0LDYg
KzQ1LDcgQEAKICAgICAsIG1fZm9udGZhY2UoZm9udGZhY2UpCiAgICAgLCBtX2Vycm9yKGVycm9y
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ1NTRm9udEZhY2VM
b2FkRXZlbnQ6OkNTU0ZvbnRGYWNlTG9hZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgQ1NTRm9udEZhY2VMb2FkRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTUxLDYgKzUz
LDcgQEAKICAgICAsIG1fZm9udGZhY2UoaW5pdGlhbGl6ZXIuZm9udGZhY2UpCiAgICAgLCBtX2Vy
cm9yKGluaXRpYWxpemVyLmVycm9yKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogQ1NTRm9udEZhY2VMb2FkRXZlbnQ6On5DU1NGb250RmFjZUxvYWRFdmVudCgpCklu
ZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwxMiBA
QAogV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG0pCiAgICAgOiBtX21hdHJpeChtKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgU3Ry
aW5nJiBzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgc2V0TWF0cml4VmFsdWUocywgZWMpOwogfQogCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDEwIEBACiAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCA9IDA7
CiAKIHByb3RlY3RlZDoKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkgeyB9CisgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbigpCisgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHJldmlzaW9uIDE0NjA1NikKKysrIFdl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMCArNTAsMTUgQEAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQ7IH0KIAogcHJpdmF0ZToKLSAgICBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQoKSB7IH0KKyAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKQorICAg
IHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworICAgIH0KKwogICAgIFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
bGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsKQogICAgICAgICA6IFByb2dyZXNzRXZlbnQodHlwZSwgbGVuZ3RoQ29tcHV0
YWJsZSwgbG9hZGVkLCB0b3RhbCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKICAgICB9CiB9OwogCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMyw2ICsyMDMsNyBAQAogI2lmbmRlZiBOREVCVUcKICAgICB4bWxIdHRwUmVxdWVz
dENvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0Ojp+WE1MSHR0cFJlcXVlc3QoKQpJbmRleDogV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiAgICAgLCBtX2Vy
cm9yKGVycm9yKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9ySW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04NSw2ICs4Niw3IEBACiAgICAg
LCBtX2Vycm9yKGluaXRpYWxpemVyLmVycm9yKQogICAgICwgbV9tZXNzYWdlKGluaXRpYWxpemVy
Lm1lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OmludGVyZmFjZU5hbWUoKSBj
b25zdApJbmRleDogV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNF
dmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAK
IFNwZWVjaFN5bnRoZXNpc0V2ZW50OjpTcGVlY2hTeW50aGVzaXNFdmVudCgpCiB7CisgICAgaW5p
dFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3BlZWNoU3ludGhlc2lzRXZlbnQ6OlNwZWVjaFN5bnRo
ZXNpc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBjaGFySW5k
ZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBXZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25F
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICAgICAsIG1fcmVzdWx0
KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAsIG1fcmVzdWx0SGlzdG9yeShpbml0aWFsaXplci5y
ZXN1bHRIaXN0b3J5KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
U3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4g
cmVzdWx0LCBzaG9ydCByZXN1bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3Q+IHJlc3VsdEhpc3RvcnkpCkBAIC04NSw2ICs4Niw3IEBACiAgICAgLCBtX3Jlc3Vs
dChyZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEhpc3RvcnkocmVzdWx0SGlzdG9yeSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6
OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIHVu
c2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpCkBAIC05Miw2ICs5NCw3IEBACiAgICAgLCBtX3Jlc3Vs
dEluZGV4KHJlc3VsdEluZGV4KQogICAgICwgbV9yZXN1bHRzKFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0TGlzdDo6Y3JlYXRlKHJlc3VsdHMpKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZl
bnQoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiBOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCiAgICAgOiBBY3RpdmVET01PYmplY3QoMCwgdGhpcykK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCkBAIC02NSw2ICs2Niw3IEBACiAgICAgLCBtX3N0YXRlKElkbGUp
CiAgICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Bl
cm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7CiAg
ICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm47CkBAIC04OCw2ICs5MCw3
IEBACiAgICAgLCBtX3N0YXRlKElkbGUpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92
aWRlcikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKG1fbm90
aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb25BbGxvd2VkKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAg
ICByZXR1cm47CkBAIC0xMDksOCArMTEyLDkgQEAKICAgICAsIG1fc3RhdGUoSWRsZSkKICAgICAs
IG1fdGFza1RpbWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3Rp
ZmljYXRpb246OnRhc2tUaW1lckZpcmVkKSkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01XaW5kb3dOb3RpZmlj
YXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHRvRG9jdW1lbnQoY29udGV4dCktPmRvbVdpbmRv
dygpKTsKLSAgICAKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKTsK
ICAgICBtX3Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOwogfQpJbmRleDogV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3
OCw3IEBACiAgICAgICAgICwgbV93YXNDbGVhbihmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoMCkK
ICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAg
ICBDbG9zZUV2ZW50KGJvb2wgd2FzQ2xlYW4sIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bikKQEAgLTg2LDYgKzg3LDcgQEAKICAgICAgICAgLCBtX2NvZGUoY29kZSkKICAgICAgICAgLCBt
X3JlYXNvbihyZWFzb24pCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgfQogCiAgICAgQ2xvc2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IENsb3NlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTk0LDYgKzk2LDcgQEAKICAgICAg
ICAgLCBtX2NvZGUoaW5pdGlhbGl6ZXIuY29kZSkKICAgICAgICAgLCBtX3JlYXNvbihpbml0aWFs
aXplci5yZWFzb24pCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAgICAgfQogCiAgICAgYm9vbCBtX3dhc0NsZWFuOwpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw2ICs1Nyw3IEBACiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwogICAgIC8vIFdlIHBh
c3MgYSByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgog
ICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6
aW5kZXhOYW1lcygpIGNvbnN0CkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIs
NyBAQAogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAsIG1fcHJldmlvdXNNZXRh
ZGF0YShwcmV2aW91c01ldGFkYXRhKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICBpZiAobW9kZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSkg
ewogICAgICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9z
dGF0ZSA9IEluYWN0aXZlOwpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAgICAgLCBtX3By
ZXZlbnRQcm9wYWdhdGlvbihmYWxzZSkKICAgICAsIG1fcmVxdWVzdFN0YXRlKGNvbnRleHQpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJSZXF1ZXN0Ojp+SURC
UmVxdWVzdCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAgICAsIG1faW50ZWdlcigwKQogewogICAgIEFT
U0VSVCh0eXBlID09IFVuZGVmaW5lZFR5cGUgfHwgdHlwZSA9PSBOdWxsVHlwZSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJBbnk6On5JREJBbnkoKQpAQCAtMTM1
LDYgKzEzNiw3IEBACiAgICAgLCBtX2RvbVN0cmluZ0xpc3QodmFsdWUpCiAgICAgLCBtX2ludGVn
ZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiB2YWx1ZSkKQEAgLTE0Miw2ICsx
NDQsNyBAQAogICAgICwgbV9pZGJDdXJzb3JXaXRoVmFsdWUodmFsdWUpCiAgICAgLCBtX2ludGVn
ZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yPiB2YWx1ZSkKQEAgLTE0OSw2ICsxNTIsNyBAQAog
ICAgICwgbV9pZGJDdXJzb3IodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IHZhbHVlKQpAQCAtMTU2LDYgKzE2MCw3IEBACiAgICAgLCBtX2lkYkRhdGFi
YXNlKHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkZhY3Rvcnk+IHZh
bHVlKQpAQCAtMTYzLDYgKzE2OCw3IEBACiAgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCiAgICAg
LCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQpAQCAtMTcwLDYgKzE3
Niw3IEBACiAgICAgLCBtX2lkYkluZGV4KHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB2YWx1ZSkKQEAgLTE3Nyw2ICsxODQsNyBAQAogICAgICwg
bV9pZGJUcmFuc2FjdGlvbih2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gdmFsdWUpCkBAIC0xODQsNiArMTkyLDcgQEAKICAgICAsIG1faWRiT2Jq
ZWN0U3RvcmUodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSkKQEAgLTE5MSw2ICsyMDAsNyBAQAogICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKICAg
ICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogSURCQW55OjpJREJBbnkoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCkBAIC0xOTgsNiArMjA4
LDcgQEAKICAgICAsIG1faWRiS2V5UGF0aCh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTIwNSwxMiArMjE2LDE0IEBACiAgICAgLCBtX3N0cmluZyh2
YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoaW50NjRfdCB2YWx1ZSkKICAgICA6IG1fdHlwZShJ
bnRlZ2VyVHlwZSkKICAgICAsIG1faW50ZWdlcih2YWx1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNiArNjcsNyBAQAogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhp
cyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1
aXJlbWVudCgpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCRGF0
YWJhc2U6On5JREJEYXRhYmFzZSgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICAgICBBU1NF
UlQobV9yZXF1ZXN0KTsKICAgICBBU1NFUlQobV9zb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklE
Qk9iamVjdFN0b3JlVHlwZSB8fCBtX3NvdXJjZS0+dHlwZSgpID09IElEQkFueTo6SURCSW5kZXhU
eXBlKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBJREJDdXJzb3I6On5JREJDdXJzb3IoKQpJbmRleDogV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBACiAgICAgLCBtX2xvd2VyVHlwZShsb3dlclR5cGUpCiAgICAgLCBtX3Vw
cGVyVHlwZSh1cHBlclR5cGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSBjb25zdApJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgQVNTRVJU
KG1fb2JqZWN0U3RvcmUpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQo
bV9tZXRhZGF0YS5pZCAhPSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCSW5kZXg6On5JREJJbmRleCgpCkluZGV4
OiBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAsIG1fdmVyc2lv
bih2ZXJzaW9uKQogewogICAgIEFTU0VSVCghbV9yZXN1bHQpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCT3BlbkRCUmVxdWVzdDo6fklEQk9wZW5EQlJlcXVlc3Qo
KQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBACiAgICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKICAgICAsIG1fbmV3VmVyc2lv
bihuZXdWZXJzaW9uKQogeworICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IElEQlZlcnNpb25DaGFuZ2VFdmVudDo6fklEQlZlcnNpb25DaGFuZ2VFdmVudCgpCkluZGV4OiBX
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldp
dGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIElEQkN1cnNvcldp
dGhWYWx1ZTo6SURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJ
REJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIDogSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291
cmNlLCB0cmFuc2FjdGlvbikKIHsKKyAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBJREJDdXJzb3JXaXRoVmFsdWU6On5JREJDdXJzb3JXaXRoVmFsdWUoKQpJbmRleDogV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw2ICs1OSw3IEBACiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSB0byB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJGYWN0
b3J5Ojp+SURCRmFjdG9yeSgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDE4ICs1MCwyMSBAQAogCiBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV90b25lKHRvbmUpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpS
VENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIGlu
aXRpYWxpemVyKQogICAgICwgbV90b25lKGluaXRpYWxpemVyLnRvbmUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50Ojp+UlRD
RFRNRlRvbmVDaGFuZ2VFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQor
KysgV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxNCBAQAogCiBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2spCiAgICAgOiBFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3RyYWNrKHRyYWNrKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojp+
TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKSW5kZXg6IFdlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENJY2VDYW5kaWRhdGVFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQor
KysgV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAKIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50
OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBSVENJY2VDYW5kaWRhdGVFdmVudDo6UlRDSWNlQ2FuZGlkYXRlRXZlbnQoYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGU+
IGNhbmRpZGF0ZSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5pY2VjYW5kaWRhdGVFdmVudCwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jYW5kaWRhdGUoY2FuZGlkYXRlKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUlRDSWNlQ2FuZGlkYXRlRXZl
bnQ6On5SVENJY2VDYW5kaWRhdGVFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYp
CisrKyBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxNCBAQAogCiBSVENEYXRhQ2hhbm5lbEV2ZW50
OjpSVENEYXRhQ2hhbm5lbEV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jaGFubmVsKGNoYW5uZWwpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENEYXRhQ2hhbm5lbEV2ZW50Ojp+UlRDRGF0
YUNoYW5uZWxFdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDE4ICs1NCwyMSBAQAogCiBNZWRpYVN0cmVhbUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6
Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCiAgICAg
OiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3N0cmVhbShzdHJl
YW0pCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYVN0cmVh
bUV2ZW50OjpNZWRpYVN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
TWVkaWFTdHJlYW1FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIpCiAgICAgLCBtX3N0cmVhbShpbml0aWFsaXplci5zdHJlYW0pCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbUV2ZW50Ojp+TWVkaWFT
dHJlYW1FdmVudCgpCkluZGV4OiBXZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNz
aW5nRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1Byb2Nlc3NpbmdFdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAKIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50
KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEF1ZGlvUHJvY2Vz
c2luZ0V2ZW50OjpBdWRpb1Byb2Nlc3NpbmdFdmVudChQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBp
bnB1dEJ1ZmZlciwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gb3V0cHV0QnVmZmVyKQpAQCAtNTIs
NiArNTMsNyBAQAogICAgICwgbV9pbnB1dEJ1ZmZlcihpbnB1dEJ1ZmZlcikKICAgICAsIG1fb3V0
cHV0QnVmZmVyKG91dHB1dEJ1ZmZlcikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50Ojp+QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKQpJ
bmRleDogV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMyArNDUsMTQgQEAKIAogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OjpPZmZs
aW5lQXVkaW9Db21wbGV0aW9uRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAotCiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6Ok9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudChQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiByZW5kZXJlZEJ1ZmZlcikKICAg
ICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCB0cnVlLCBmYWxzZSkKICAgICAs
IG1fcmVuZGVyZWRCdWZmZXIocmVuZGVyZWRCdWZmZXIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6On5PZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQoKQpJbmRleDogV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0
LDcgQEAKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9hbGxv
d0dlb2xvY2F0aW9uKFVua25vd24pCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBHZW9sb2NhdGlvbjo6fkdlb2xvY2F0aW9uKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9M
b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQAogTG9jYXRpb246OkxvY2F0aW9uKEZyYW1lKiBmcmFtZSkKICAg
ICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogaW5saW5lIGNvbnN0IEtVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdApJ
bmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBACiBDb25zb2xlOjpDb25zb2xlKEZy
YW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ29uc29sZTo6fkNvbnNvbGUoKQpJbmRleDog
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiBOYXZpZ2F0b3I6Ok5hdmlnYXRv
cihGcmFtZSogZnJhbWUpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE5hdmlnYXRvcjo6fk5hdmlnYXRvcigp
CkluZGV4OiBXZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0hpc3RvcnkuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IERPTVdpbmRvd1By
b3BlcnR5KGZyYW1lKQogICAgICwgbV9sYXN0U3RhdGVPYmplY3RSZXF1ZXN0ZWQoMCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhpc3Rvcnk6Omxl
bmd0aCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYy
LDcgQEAKICAgICAsIG1fdXNlclRpbWluZygwKQogI2VuZGlmIC8vIEVOQUJMRShVU0VSX1RJTUlO
RykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBlcmZvcm1hbmNl
Ojp+UGVyZm9ybWFuY2UoKQpJbmRleDogV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvcGFnZS9TY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiBTY3Jl
ZW46OlNjcmVlbihGcmFtZSogZnJhbWUpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHVuc2lnbmVkIFNjcmVl
bjo6aG9yaXpvbnRhbERQSSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRF
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuY3Bw
CShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCwxNCBAQAogCiBTcGVlY2hJbnB1dEV2ZW50OjpT
cGVlY2hJbnB1dEV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFNwZWVjaElucHV0RXZlbnQ6OlNwZWVjaElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpCiAgICAg
OiBFdmVudChldmVudFR5cGUsIHRydWUsIGZhbHNlKSAvLyBDYW4gYnViYmxlLCBub3QgY2FuY2Vs
YWJsZQogICAgICwgbV9yZXN1bHRzKFNwZWVjaElucHV0UmVzdWx0TGlzdDo6Y3JlYXRlKHJlc3Vs
dHMpKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoSW5w
dXRFdmVudDo6flNwZWVjaElucHV0RXZlbnQoKQpJbmRleDogV2ViQ29yZS9wYWdlL0JhckluZm8u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9CYXJJbmZvLmNwcAkocmV2aXNpb24gMTQ2
MDU2KQorKysgV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKICAgICAsIG1fdHlwZSh0
eXBlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQmFySW5mbzo6
VHlwZSBCYXJJbmZvOjp0eXBlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGFnZS9DcnlwdG8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCShyZXZpc2lvbiAxNDYwNTYp
CisrKyBXZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQAogCiBDcnlwdG86OkNyeXB0bygpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiB2b2lkIENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyog
YXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsMTMg
KzUwNCwxMSBAQAogCiAgICAgbXkgJG5vVG9WOCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTdXBwcmVzc1RvSlNPYmplY3QifTsKICAgICBteSAkbm9XcmFwID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Tm9XcmFwcGVyQ2FjaGUifSB8fCAkbm9Ub1Y4Owot
ICAgIGlmICghJG5vV3JhcCkgewotICAgICAgICBteSAkY3JlYXRlV3JhcHBlckFyZ3VtZW50VHlw
ZSA9IEdldFBhc3NSZWZQdHJUeXBlKCRuYXRpdmVUeXBlKTsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOworCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpIGlmICEk
bm9XcmFwOwogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoJHtuYXRpdmVU
eXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoJHtj
cmVhdGVXcmFwcGVyQXJndW1lbnRUeXBlfSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRlV3JhcHBlcigke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiBFTkQKLSAgICB9CiAKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwpAQCAtNTM5LDcgKzUzNyw2IEBACiB9CiBFTkQKICAg
ICB9IGVsc2UgewotCiAgICAgICAgIG15ICRjcmVhdGVXcmFwcGVyQ2FsbCA9ICRjdXN0b21XcmFw
ID8gIiR7djhJbnRlcmZhY2VOYW1lfTo6d3JhcCIgOiAiJHt2OEludGVyZmFjZU5hbWV9OjpjcmVh
dGVXcmFwcGVyIjsKICAgICAgICAgbXkgJHJldHVybmluZ1dyYXBwZXIgPSAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6
dG9GdW5jdGlvbih3cmFwcGVyKSIgOiAid3JhcHBlciI7CiAgICAgICAgIG15ICRyZXR1cm5pbmdD
cmVhdGVkV3JhcHBlck9wZW5pbmcgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6dG9GdW5jdGlvbigiIDogIiI7CkBA
IC01NTcsNiArNTU0LDEwIEBACiB7CiAgICAgQVNTRVJUKGltcGwpOwogICAgIEFTU0VSVChET01E
YXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKKyAgICBpZiAo
U2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChpbXBsKSkgeworICAg
ICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSBTY3JpcHRXcmFwcGFibGU6OmdldFR5
cGVJbmZvRnJvbU9iamVjdChpbXBsKTsKKyAgICAgICAgcmV0dXJuIGluZm8tPndyYXBPYmplY3RG
dW5jdGlvbihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIH0KICAgICByZXR1
cm4gJHtyZXR1cm5pbmdDcmVhdGVkV3JhcHBlck9wZW5pbmd9JGNyZWF0ZVdyYXBwZXJDYWxsKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSkke3JldHVybmluZ0NyZWF0ZWRXcmFwcGVyQ2xv
c2luZ307CiB9CiBFTkQKQEAgLTIwNDgsNyArMjA0OSw3IEBACiAKICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5y
ZWxlYXNlKCkuZ2V0KCksICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1
cm4gd3JhcHBlcjsKIEVORAogCkBAIC0yMTE4LDcgKzIxMTksNyBAQAogICAgIFJlZlB0cjwke2lu
dGVyZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0eXBlLCBldmVu
dEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50
LnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgpLmdldCgpLCAm
Vjgke2ludGVyZmFjZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiBF
TkQKQEAgLTIyMDQsNyArMjIwNSw3IEBACiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUu
aCIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVyVHlwZUluZm8gJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNv
bnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwg
JHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9
OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2Jq
ZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Q29uc3Ry
dWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0
ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9NT2JqZWN0LCAk
dG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewpAQCAtMjI2Miw3ICsyMjYz
LDcgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmJHt2OEludGVy
ZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLmdldCgpLCAmJHt2OEludGVyZmFj
ZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAog
CkBAIC0yNjk1LDYgKzI2OTYsNyBAQAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJCaW5kaW5nU3Rh
dGUuaCIpOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDb250ZXh0RmVhdHVyZXMuaCIpOwogICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKKyAgICBBZGRU
b0ltcGxJbmNsdWRlcygiU2NyaXB0V3JhcHBhYmxlLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiVjhCaW5kaW5nLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01XcmFwcGVyLmgi
KTsKIApAQCAtMjc1NSwxNiArMjc1Nyw0MSBAQAogCiBFTkQKIAotCiAgICAgbXkgJHBhcmVudENs
YXNzSW5mbyA9ICRwYXJlbnRDbGFzcyA/ICImJHtwYXJlbnRDbGFzc306OmluZm8iIDogIjAiOwot
CiAgICAgbXkgJFdyYXBwZXJUeXBlUHJvdG90eXBlID0gJGludGVyZmFjZS0+aXNFeGNlcHRpb24g
PyAiV3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSIgOiAiV3JhcHBlclR5cGVPYmplY3RQcm90b3R5
cGUiOworICAgIG15ICRub1dyYXAgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhOb1dyYXBwZXJDYWNoZSJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJT
dXBwcmVzc1RvSlNPYmplY3QifTsKKyAgICBteSAkd3JhcHBlckZ1bmN0aW9uID0gJG5vV3JhcCA/
ICIwIiA6ICJyZWludGVycHJldF9jYXN0PFdyYXBPYmplY3RGdW5jdGlvbj4oJHt2OEludGVyZmFj
ZU5hbWV9OjpjcmVhdGVXcmFwcGVyKSI7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIldyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNlTmFtZX06OmluZm8gPSB7ICR7djhJbnRl
cmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZGVyZWZPYmplY3Qs
ICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJnZXQsICRyb290Rm9yR0MsICR7djhJbnRl
cmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAkcGFyZW50
Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUgfTtcblxuIik7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsICJuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWwg
e1xuXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOworV3JhcHBl
clR5cGVJbmZvICR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbyA9IHsgJHt2OEludGVyZmFjZU5hbWV9
OjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZl
RE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgJHJvb3RGb3JHQywgJHt2OEludGVyZmFjZU5hbWV9
OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsICRwYXJlbnRDbGFzc0luZm8s
ICRXcmFwcGVyVHlwZVByb3RvdHlwZSwgJHt3cmFwcGVyRnVuY3Rpb259IH07CiAKLSAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgInRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VT
RShUKSB7IH1cblxuIik7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxF
TkQpIGlmICEkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFj
ZU5hbWUpOwordm9pZCBzY3JpcHR3cmFwcGFibGVfaW5pdCgke2ludGVyZmFjZU5hbWV9KiBvYmpl
Y3QpCit7CisgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmpl
Y3Qob2JqZWN0KSkKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRUeXBlSW5mb0luT2JqZWN0
KG9iamVjdCwgJiR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbyk7Cit9CiAKKy8vIERPIE5PVCBDSS4g
IEFubm95YW5jZSBnZW5lcmF0b3IgdG8gaWRlbnRpZnkgd3JhcHBhYmxlIGNsYXNzZXMgZnJvbSBj
b21waWxlciwgb2guCisvLyBzdHJ1Y3QgQ2hlY2ske2ludGVyZmFjZU5hbWV9IHsKKy8vICAgIENo
ZWNrJHtpbnRlcmZhY2VOYW1lfSgpCisvLyAgICB7CisvLyAgICAgICAgaWYgKFNjcmlwdFdyYXBw
YWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3QoKCR7aW50ZXJmYWNlTmFtZX0qKTApKQor
Ly8gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRFUlA6ICR7aW50ZXJmYWNlTmFtZX0gaXMg
JHtuYXRpdmVUeXBlfVxcbiIpOworLy8gICAgfQorLy8gfTsKKy8vIHN0YXRpYyBDaGVjayR7aW50
ZXJmYWNlTmFtZX0gY2hlY2tfJHtpbnRlcmZhY2VOYW1lfTsKKworRU5ECisKKyAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgPDxFTkQpOworbmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1W
OEludGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQor
CitFTkQKKwogICAgIG15ICRoYXNDb25zdHJ1Y3RvcnMgPSAwOwogICAgIG15ICRoYXNSZXBsYWNl
YWJsZSA9IDA7CiAKQEAgLTM1ODMsMjIgKzM2MTAsMjIgQEAKIAogICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHt2OEludGVyZmFjZU5hbWV9
OjpjcmVhdGVXcmFwcGVyKCR7Y3JlYXRlV3JhcHBlckFyZ3VtZW50VHlwZX0gaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIo
JHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIEFTU0VSVChpbXBsLmdldCgpKTsKLSAg
ICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwuZ2V0KCksIGlzb2xhdGUpLklz
RW1wdHkoKSk7CisgICAgQVNTRVJUKGltcGwpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6Omdl
dFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKIEVORAogCiAgICAgbXkgJHZ0YWJs
ZU5hbWVHbnUgPSBHZXRHbnVWVGFibGVOYW1lRm9ySW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCkgaWYgJHZ0YWJsZU5hbWVHbnU7CiAKICNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY2hlY2tUeXBlT3JEaWVUcnlpbmcoaW1wbC5nZXQo
KSk7CisgICAgY2hlY2tUeXBlT3JEaWVUcnlpbmcoaW1wbCk7CiAjZW5kaWYKIEVORAogCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAoJGJhc2VUeXBlIG5lICRpbnRlcmZhY2VOYW1l
KTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PCR7YmFzZVR5cGV9
Kj4oaW1wbC5nZXQoKSkpID09IHN0YXRpY19jYXN0PHZvaWQqPihpbXBsLmdldCgpKSk7CisgICAg
QVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDwke2Jhc2VUeXBlfSo+KGltcGwp
KSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbCkpOwogRU5ECiAKICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJEb2N1bWVudCIpKSB7CkBAIC0z
NjA2LDcgKzM2MzMsNyBAQAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKSB7
CiAgICAgICAgIGlmIChmcmFtZS0+c2NyaXB0KCktPmluaXRpYWxpemVNYWluV29ybGQoKSkgewog
ICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVhdGVkIGEgd3Jh
cHBlciBmb3IgdGhlIG9iamVjdCwgcmV0cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXIo
aW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSk7CiAgICAg
ICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgICAgICB9CkBAIC0zNjE2LDExICszNjQzLDExIEBACiAKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGlt
cGwuZ2V0KCksIGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBs
LCBpc29sYXRlKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAotICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFw
cGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXMod3JhcHBlciwgaW1wbCwgaXNvbGF0ZSk7CiAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5k
ZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNv
bmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5l
ckdsb2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxPYmplY3QobV9jb250ZXh0LmdldCgpKTsKICAg
ICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8oaW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdp
bmRvdzo6aW5mbywgd2luZG93KTsKICAgICBpbm5lckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBl
KHdpbmRvd1dyYXBwZXIpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywg
d2luZG93V3JhcHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHdpbmRvdywg
JlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lzb2xhdGUsIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6
aW5nV2luZG93KGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsOCBAQAogICAgICAg
ICAvLyB3YXkgaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgd3JhcHBhYmxlJ3Mgd3JhcHBlciBpcyB0
aGUgc2FtZSBhcwogICAgICAgICAvLyB0aGUgaG9sZGVyLgogICAgICAgICBpZiAoKCFET01XcmFw
cGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmpl
Y3QpKSB8fCBob2xkZXJDb250YWluc1dyYXBwZXIoY29udGFpbmVyLCBob2xkZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZ2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKKyAgICAg
ICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9i
amVjdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFdyYXBwYWJsZTo6Z2V0V3JhcHBl
ckZyb21PYmplY3Qob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBtYWluV29ybGRTdG9yZSgp
LT5tX3dyYXBwZXJNYXAuZ2V0KG9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGN1
cnJlbnQoY29udGFpbmVyLkdldElzb2xhdGUoKSktPmdldChvYmplY3QpOwpAQCAtNzYsOSArNzYs
OSBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0V3JhcHBlcihUKiBvYmplY3QsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAg
IHsKLSAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkg
JiYgaXNNYWluV29ybGRPYmplY3Qob2JqZWN0KSkgeworICAgICAgICBpZiAoU2NyaXB0V3JhcHBh
YmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2Jq
ZWN0KG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6
aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V3JhcHBl
ckZyb21PYmplY3Qob2JqZWN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBh
YmxlOjpnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBjdXJyZW50KGlzb2xhdGUpLT5nZXQob2JqZWN0KTsKICAgICB9CkBAIC04Niw5ICs4Niw5
IEBACiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVy
KFQqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAg
ewotICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAm
JiBpc01haW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFi
bGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmpl
Y3Qob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpKSB7Ci0gICAgICAgICAgICAgICAgc2V0V3JhcHBlckluT2Jq
ZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CisgICAgICAgICAg
ICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVy
LCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk4LDggKzk4LDggQEAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChUKiBvYmplY3Qp
CiAgICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2Jq
ZWN0KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKQotICAgICAgICAgICAgcmV0dXJuIGdldFdyYXBw
ZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBw
ZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5Xb3JsZCkKKyAg
ICAgICAgICAgIHJldHVybiBTY3JpcHRXcmFwcGFibGU6OmdldFdyYXBwZXJGcm9tT2JqZWN0KG9i
amVjdCk7CiAgICAgICAgIHJldHVybiBtX3dyYXBwZXJNYXAuZ2V0KG9iamVjdCk7CiAgICAgfQog
CkBAIC0xMTEsOCArMTExLDggQEAKICAgICB7CiAgICAgICAgIEFTU0VSVCghIW9iamVjdCk7CiAg
ICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBpZiAobWFpbldvcmxk
V3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKSB7
Ci0gICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRl
LCBjb25maWd1cmF0aW9uKTsKKyAgICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNh
bkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKSB7CisgICAg
ICAgICAgICBTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBw
ZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIG1fd3JhcHBlck1hcC5zZXQob2JqZWN0LCB3cmFwcGVyLCBjb25maWd1cmF0
aW9uKTsKQEAgLTEyMCw5ICsxMjAsNiBAQAogCiAgICAgc3RhdGljIERPTURhdGFTdG9yZSogbWFp
bldvcmxkU3RvcmUoKTsKIAotICAgIHN0YXRpYyBib29sIG1haW5Xb3JsZFdyYXBwZXJJc1N0b3Jl
ZEluT2JqZWN0KHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIG1haW5X
b3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSopIHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIHN0YXRpYyBib29sIGlzTWFpbldvcmxkT2JqZWN0KHZvaWQqKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGlzTWFpbldvcmxkT2JqZWN0KE5vZGUqKSB7IHJl
dHVybiB0cnVlOyB9CiAKQEAgLTEzMSw2ICsxMjgsNyBAQAogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhvbGRlckNvbnRhaW5lcj4K
ICAgICBzdGF0aWMgYm9vbCBob2xkZXJDb250YWluc1dyYXBwZXIoY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFNjcmlwdFdyYXBwYWJsZSogd3JhcHBhYmxlKQogICAgIHsKQEAgLTEz
OSwyNSArMTM3LDYgQEAKICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5Ib2xkZXIoKSA9PSB3cmFw
cGFibGUtPndyYXBwZXIoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2b2lkKikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwot
ICAgIH0KLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9i
amVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvYmpl
Y3QtPndyYXBwZXIoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmpl
Y3Qodm9pZCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgY29uc3QgV3Jh
cHBlckNvbmZpZ3VyYXRpb24mKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFi
bGUqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCi0gICAg
ewotICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJh
dGlvbik7Ci0gICAgfQotCiAgICAgV3JhcHBlcldvcmxkVHlwZSBtX3R5cGU7CiAgICAgRE9NV3Jh
cHBlck1hcDx2b2lkPiBtX3dyYXBwZXJNYXA7CiB9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEN1c3RvbUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhDdXN0b21FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
CiAgICAgaWYgKCFDdXN0b21FbGVtZW50SGVscGVyczo6aXNGZWF0dXJlQWxsb3dlZChjcmVhdGlv
bkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250
ZXh0LCAmVjhIVE1MRWxlbWVudDo6aW5mbywgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CiAgICAgICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZWOEhUTUxFbGVtZW50OjppbmZvLCB3cmFwcGVy
LCBpc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICAgICAgICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5nZXQoKSwgJlY4
SFRNTEVsZW1lbnQ6OmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKQEAgLTcwLDcg
KzcwLDcgQEAKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKIAogICAg
IHdyYXBwZXItPlNldFByb3RvdHlwZShwcm90b3R5cGUpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgdHlwZUluZm8sIHdyYXBwZXIsIGlzb2xhdGUs
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5nZXQoKSwgdHlwZUluZm8sIHdyYXBwZXIsIGlz
b2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFw
cGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFW
aWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNhbGwgdXNlZCB0byBjb25z
dHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAgIFJlZlB0cjxEYXRhVmll
dz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkYXRh
Vmlldy5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVy
OwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4QXJyYXlCdWZmZXI6Okhh
c0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJ
c29sYXRlKCkpKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250
ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNyArNzMsNyBAQAogICAgIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8g
YSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlvIGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVu
dCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0Nv
bnRleHQucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCks
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIAogICAgIHJldHVybiB3cmFw
cGVyOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJL
aXRQb2ludEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBACiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRQb2ludD4gcG9pbnQgPSBXZWJLaXRQ
b2ludDo6Y3JlYXRlKHgsIHkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihwb2ludC5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAkocmV2aXNpb24gMTQ2MDU2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20u
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgIGlmIChoYXNJbmRleGVyKQog
ICAgICAgICBhcmdzLkhvbGRlcigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJh
eURhdGEoYXJyYXkuZ2V0KCktPmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCkt
Pmxlbmd0aCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJy
YXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKS5nZXQoKSwgdHlwZSwgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgIH0KIAogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUs
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBl
bmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJy
YXkucmVsZWFzZSgpLmdldCgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0K
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw3ICs2MSw3IEBACiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9
IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw3IEBACiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhN
ZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotCiAgICAgUmVmUHRyPE1lc3NhZ2VDaGFubmVsPiBvYmogPSBNZXNz
YWdlQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQpOwotCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgZnJv
bSB0aGUgTWVzc2FnZUNoYW5uZWwgd3JhcHBlciB0byB0aGUgdHdvCkBAIC01Niw4ICs1NCw3IEBA
CiAgICAgLy8gc3RheSBhbGl2ZSBhcyBsb25nIGFzIHRoZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVy
IGlzIGFyb3VuZC4KICAgICBWOEhpZGRlblByb3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRkZW5SZWZl
cmVuY2Uod3JhcHBlciwgInBvcnQxIiwgdG9WOChvYmotPnBvcnQxKCksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVk
SGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwotCi0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKS5nZXQo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgUmVmUHRyPERP
TUZvcm1EYXRhPiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0
aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2LDcgKzc2LDcgQEAKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxv
Y2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUg
aG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJl
bGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2Jz
ZXJ2ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBACiAgICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhN
dXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGFy
ZyksIGNvbnRleHQsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBSZWZQdHI8TXV0
YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJh
Y2sucmVsZWFzZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLmdldCgpLCAmaW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ2
MDU2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDggQEAKIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcChIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAg
ICByZXR1cm4gY3JlYXRlVjhIVE1MV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5mbyA9IFNjcmlwdFdyYXBwYWJsZTo6
Z2V0VHlwZUluZm9Gcm9tT2JqZWN0KGltcGwpOworICAgIHJldHVybiBpbmZvLT53cmFwT2JqZWN0
RnVuY3Rpb24oaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogI2lmIEVOQUJM
RShNSUNST0RBVEEpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDggQEAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChTVkdFbGVtZW50KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwpOwotICAgIHJldHVybiBjcmVhdGVWOFNWR1dyYXBw
ZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBjb25zdCBXcmFwcGVyVHlw
ZUluZm8qIGluZm8gPSBTY3JpcHRXcmFwcGFibGU6OmdldFR5cGVJbmZvRnJvbU9iamVjdChpbXBs
KTsKKyAgICByZXR1cm4gaW5mby0+d3JhcE9iamVjdEZ1bmN0aW9uKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBl
SW5mbyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOEhUTUxJbWFnZUVsZW1lbnQ6OmRlcmVm
T2JqZWN0LCAwLCBWOEhUTUxJbWFnZUVsZW1lbnQ6OnRvRXZlbnRUYXJnZXQsIDAsIFY4SFRNTElt
YWdlRWxlbWVudDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFw
cGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yOjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUsIFY4SFRNTEltYWdlRWxlbWVudDo6ZGVyZWZPYmplY3QsIDAsIFY4SFRNTElt
YWdlRWxlbWVudDo6dG9FdmVudFRhcmdldCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50OjppbnN0YWxs
UGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90
eXBlLCAwIH07CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3JNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
QEAgLTc3LDcgKzc3LDcgQEAKIAogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIG9wdGlv
bmFsV2lkdGgsIG9wdGlvbmFsSGVpZ2h0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltYWdlLnJlbGVhc2UoKS5nZXQoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsNyBA
QAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zOSw0NiArMzksMTIzIEBACiAKIGNsYXNzIFNj
cmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0V3JhcHBhYmxlKCkgeyB9CisgICAg
U2NyaXB0V3JhcHBhYmxlKCkgOiBtX21hc2tlZFN0b3JhZ2UoMCkgeyB9CiAKKyAgICB+U2NyaXB0
V3JhcHBhYmxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21hc2tlZFN0b3JhZ2UpOyAgLy8g
QXNzZXJ0IGluaXRpYWxpemF0aW9uIHZpYSBpbml0KCkgZXZlbiBpZiBub3Qgd3JhcHBlZCBsYXRl
ci4KKyAgICAgICAgbV9tYXNrZWRTdG9yYWdlID0gMDsgICAgICAvLyBCcmVhayBVQUYgYXR0ZW1w
dHMgdG8gd3JhcC4KKyAgICB9CisKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4obWFz
a09yVW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7CisgICAgICAgIHY4OjpPYmplY3Qq
IG9iamVjdCA9IGNvbnRhaW5zV3JhcHBlcigpID8gcmVpbnRlcnByZXRfY2FzdDx2ODo6T2JqZWN0
Kj4obWFza09yVW5tYXNrVmFsdWUobV9tYXNrZWRTdG9yYWdlKSkgOiAwOworICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PihvYmplY3QpOwogICAgIH0KIAogICAgIHZvaWQgc2V0
V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJU
KCFjb250YWluc1dyYXBwZXIoKSk7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGlzb2xhdGUsIHdy
YXBwZXIpOwogICAgICAgICBjb25maWd1cmF0aW9uLmNvbmZpZ3VyZVdyYXBwZXIocGVyc2lzdGVu
dCwgaXNvbGF0ZSk7CiAgICAgICAgIHBlcnNpc3RlbnQuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywg
d2Vha0NhbGxiYWNrKTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9p
bnRlcigqcGVyc2lzdGVudCk7CisgICAgICAgIG1fbWFza2VkU3RvcmFnZSA9IG1hc2tPclVubWFz
a1ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigqcGVyc2lzdGVudCkpOwogICAgIH0K
IAorICAgIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8oKQorICAgIHsKKyAgICAgICAg
aWYgKGNvbnRhaW5zVHlwZUluZm8oKSkKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IFdyYXBwZXJUeXBlSW5mbyo+KG1fbWFza2VkU3RvcmFnZSAmIH4xKTsKKworICAg
ICAgICBpZiAoY29udGFpbnNXcmFwcGVyKCkpCisgICAgICAgICAgICByZXR1cm4gdG9XcmFwcGVy
VHlwZUluZm8od3JhcHBlcigpKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgIHZv
aWQgc2V0VHlwZUluZm8oY29uc3QgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQorICAgIHsKKyAgICAg
ICAgbV9tYXNrZWRTdG9yYWdlID0gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbmZvKSB8
IDEpOworICAgIH0KKwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsK
LSAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9tYXNrZWRXcmFwcGVyKTsKKyAgICAgICAgaW5m
by5pZ25vcmVNZW1iZXIobV9tYXNrZWRTdG9yYWdlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9v
bCB3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChjb25zdCB2b2lkKikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBzdGF0aWMgYm9vbCB3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChjb25zdCBTY3Jp
cHRXcmFwcGFibGUqKSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2b2lkKikKKyAgICB7CisgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7
CisgICAgfQorCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZy
b21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCisgICAgeworICAgICAgcmV0dXJuIG9i
amVjdC0+d3JhcHBlcigpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9i
amVjdCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBjb25zdCBX
cmFwcGVyQ29uZmlndXJhdGlvbiYpCisgICAgeworICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlwdFdyYXBw
YWJsZSogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKKyAg
ICB7CisgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJh
dGlvbik7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogZ2V0VHlw
ZUluZm9Gcm9tT2JqZWN0KHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
V3JhcHBlclR5cGVJbmZvKiBnZXRUeXBlSW5mb0Zyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0LT50eXBlSW5mbygpOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIHNldFR5cGVJbmZvSW5PYmplY3Qodm9pZCogb2JqZWN0LCBjb25z
dCBXcmFwcGVyVHlwZUluZm8qIGluZm8pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRUeXBlSW5mb0luT2JqZWN0KFNjcmlw
dFdyYXBwYWJsZSogb2JqZWN0LCBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8pCisgICAgewor
ICAgICAgICBvYmplY3QtPnNldFR5cGVJbmZvKGluZm8pOworICAgIH0KKworICAgIC8vIFdyYXBw
YWJsZXMgbmVlZCB0byBiZSBpbml0aWFsaXplZCB3aXRoIHRoZWlyIG1vc3QgZGVycml2ZWQgd3Jh
cHBlZCB0eXBlCisgICAgLy8gaW4gbXVjaCB0aGUgc2FtZSB3YXkgdGhhdCBjZXJ0YWluIG90aGVy
IHR5cGVzIG5lZWQgdG8gYmUgYWRvcHRlZCBhbmQKKyAgICAvLyBzbyBmb3J0aC4gVGhlIHRlbXBs
YXRlZCBJbml0KCkgbWV0aG9kcyBhcmUgaW5zdGFudGlhdGVkIGluIHRoZSBnZW5lcmF0ZWQKKyAg
ICAvLyBWOCBiaW5kaW5ncyBjb2RlLiBUaGUgSlNDIGNvZGUgd2lsbCBtYWludGFpbiBjb21wYXRp
YmlsaXR5IHZpYSBhIHNpbmdsZQorICAgIC8vIG5vLW9wIGluaXQodm9pZCopIG1ldGhvZCBoZXJl
LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPnN0YXRpYyB2b2lkIGluaXQoVCogb2JqZWN0KQor
ICAgIHsKKyAgICAgICAgZXh0ZXJuIHZvaWQgc2NyaXB0d3JhcHBhYmxlX2luaXQoVCopOyAgLy8g
R29vZCBvbGUgbGlua2VyIHdpbGwgaGVscCB1cyB3aGVyZSB0ZW1wbGF0ZXMgY29tZSBzaG9ydC4K
KyAgICAgICAgc2NyaXB0d3JhcHBhYmxlX2luaXQob2JqZWN0KTsKKyAgICB9CisKIHByaXZhdGU6
Ci0gICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgc3RhdGljIGlubGluZSB1aW50cHRy
X3QgbWFza09yVW5tYXNrVmFsdWUodWludHB0cl90IHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKCp2YWx1ZSA9
PSBtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKLSAgICAgICAgdmFsdWUu
RGlzcG9zZShpc29sYXRlKTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyLkNsZWFyKCk7CisgICAg
ICAgIGNvbnN0IHVpbnRwdHJfdCByYW5kb21NYXNrID0gfigocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KCZXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSkgPj4gMTMpIHwgMSk7IC8vIEVudHJvcHkg
dmlhIEFTTFIsIGJvdHRvbSBiaXQgY2xlYXIuCisgICAgICAgIHJldHVybiAodmFsdWUgXiByYW5k
b21NYXNrKSAmICghdmFsdWUgLSAxKTsgLy8gUHJlc2VydmUgbnVsbCB3aXRob3V0IGJyYW5jaGlu
Zy4KICAgICB9CiAKLSAgICAvLyBTdG9yZXMgYSBtYXNrZWQgd3JhcHBlciB0byBwcmV2ZW50IGF0
dGFja2VycyBmcm9tIG92ZXJ3cml0aW5nIHRoaXMgZmllbGQKLSAgICAvLyB3aXRoIGEgcGhvbnkg
d3JhcHBlci4KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX21hc2tlZFdyYXBwZXI7
CisgICAgaW5saW5lIGJvb2wgY29udGFpbnNUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIChtX21h
c2tlZFN0b3JhZ2UgJiAxKSA9PSAxOyB9CisgICAgaW5saW5lIGJvb2wgY29udGFpbnNXcmFwcGVy
KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrZWRTdG9yYWdlICYmICgobV9tYXNrZWRTdG9yYWdlICYg
MSkgPT0gMCk7IH0KIAotICAgIHN0YXRpYyBpbmxpbmUgdjg6Ok9iamVjdCogbWFza09yVW5tYXNr
UG9pbnRlcihjb25zdCB2ODo6T2JqZWN0KiBvYmplY3QpCisgICAgaW5saW5lIHZvaWQgZGlzcG9z
ZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5mbykKICAgICB7Ci0gICAgICAgIGNvbnN0
IHVpbnRwdHJfdCBvYmplY3RQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9i
amVjdCk7Ci0gICAgICAgIGNvbnN0IHVpbnRwdHJfdCByYW5kb21NYXNrID0gfihyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oJldlYkNvcmVNZW1vcnlUeXBlczo6RE9NKSA+PiAxMyk7IC8vIEVu
dHJvcHkgdmlhIEFTTFIuCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHY4OjpPYmpl
Y3QqPigob2JqZWN0UG9pbnRlciBeIHJhbmRvbU1hc2spICYgKCFvYmplY3RQb2ludGVyIC0gMSkp
OyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJhbmNoaW5nLgorICAgICAgICBBU1NFUlQoY29u
dGFpbnNXcmFwcGVyKCkgJiYgbV9tYXNrZWRTdG9yYWdlICE9IDApOworICAgICAgICBBU1NFUlQo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCp2YWx1ZSkgPT0gbWFza09yVW5tYXNrVmFsdWUo
bV9tYXNrZWRTdG9yYWdlKSk7CisgICAgICAgIHZhbHVlLkRpc3Bvc2UoaXNvbGF0ZSk7CisgICAg
ICAgIHNldFR5cGVJbmZvKGluZm8pOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxs
YmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1
ZSwgdm9pZCogY29udGV4dCkKQEAgLTkzLDEyICsxNzAsMTkgQEAKICAgICAgICAgV3JhcHBlclR5
cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CiAgICAgICAgIEFTU0VS
VChpbmZvLT5kZXJlZk9iamVjdEZ1bmN0aW9uKTsKIAotICAgICAgICBrZXktPmRpc3Bvc2VXcmFw
cGVyKHZhbHVlLCBpc29sYXRlKTsKKyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSwg
aXNvbGF0ZSwgaW5mbyk7CiAgICAgICAgIC8vIEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9m
IG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBiZSBjb25zdW1lZAogICAgICAgICAvLyBpbnNpZGUg
a2V5LT5kZXJlZigpLCB3aGljaCBjYXVzZXMgTm9kZSBkZXN0cnVjdGlvbnMuIFdlIHNob3VsZAog
ICAgICAgICAvLyBtYWtlIE5vZGUgZGVzdHJ1Y3Rpb25zIGluY3JlbWVudGFsLgogICAgICAgICBp
bmZvLT5kZXJlZk9iamVjdChvYmplY3QpOwogICAgIH0KKworICAgIC8vIElmIHplcm8sIHRoZW4g
dGhpcyBjb250YWlucyBub3RoaW5nLCBvdGhlcndpc2U6CisgICAgLy8gICBJZiB0aGUgYm90dG9t
IGJpdCBpdCBjbGVhciwgdGhlbiB0aGlzIGNvbnRhaW5zIGEgbWFza2VkIHBvaW50ZXIgdG8gYSB3
cmFwcGVyIG9iamVjdC4KKyAgICAvLyAgIElmIHRoZSBib3R0b20gYml0IGlzIHNldCwgdGhlbiB0
aGlzIGNvbnRhaW5zIGEgcG9pbnRlciB0byB0aGUgd3JhcHBlciB0eXBlIGluZm8gaW4gdGhlIHJl
bWFpbmluZyBiaXRzLgorICAgIC8vIE1hc2tpbmcgd3JhcHBlcnMgcHJldmVudHMgYXR0YWNrZXJz
IGZyb20gb3ZlcndyaXRpbmcgdGhpcyBmaWVsZCB3aXRoIHBvaW50ZXJzIHRvIHNwcmF5ZWQgZGF0
YS4KKyAgICAvLyBQb2ludGVycyBpbnNpZGUgV3JhcHBlciBUeXBlIEluZm8gYXJlIGFscmVhZHkg
cHJvdGVjdGVkIGJ5IEFTTFIuCisgICAgdWludHB0cl90IG1fbWFza2VkU3RvcmFnZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEFkYXB0b3JGdW5jdGlv
bjo6aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlLCAwLCAwLCAwLCAwLCAw
LCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4QWRh
cHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAs
IDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQp
LCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0LCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1
cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIobV93b3JrZXJDb250ZXh0LCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0LCBt
X2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogCiAgICAgLy8gSW5z
ZXJ0IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9i
amVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBACiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRl
V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5
cGVJbmZvKiwgdm9pZCosIHY4OjpJc29sYXRlKik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkxpZmV0aW1lKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFQqLCBXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZl
dGltZSk7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKICAgICAgICAgc3RhdGlj
IGlubGluZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFw
cGVyVHlwZUluZm8qKTsKIApAQCAtODksMTIgKzg5LDEzIEBACiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGlt
ZSkKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKFQqIG9iamVjdCwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCiAgICAgewotICAgICAgICBzZXRO
YXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdC5nZXQoKSk7CisgICAgICAgIG9iamVjdC0+
cmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGZ1bmN0aW9uIGZyb20gV3JhcHBlclR5cGVJbmZv
LgorICAgICAgICBzZXROYXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdCk7CiAgICAgICAg
IEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgICAgICBXcmFwcGVyQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbihvYmplY3Qu
Z2V0KCksIGxpZmV0aW1lKTsKLSAgICAgICAgRE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVyKG9iamVj
dC5sZWFrUmVmKCksIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOworICAgICAgICBX
cmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJh
dGlvbihvYmplY3QsIGxpZmV0aW1lKTsKKyAgICAgICAgRE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVy
KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlw
ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5m
by5oCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBl
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8djguaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0
OwogICAgIGNsYXNzIERPTURhdGFTdG9yZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKQEAgLTYx
LDYgKzYxLDcgQEAKICAgICB0eXBlZGVmIEV2ZW50VGFyZ2V0KiAoKlRvRXZlbnRUYXJnZXRGdW5j
dGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiB2b2lkKiAoKk9wYXF1
ZVJvb3RGb3JHQykodm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSopOwogICAgIHR5cGVkZWYgdm9pZCAoKkluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllc0Z1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAg
IHR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAoKldyYXBPYmplY3RGdW5jdGlvbikodm9p
ZCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7CiAKICAgICBlbnVtIFdy
YXBwZXJUeXBlUHJvdG90eXBlIHsKICAgICAgICAgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUs
CkBAIC03Niw4ICs3Nyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KHY4OjpFeHRlcm5hbDo6Q2FzdCgqdHlwZUluZm9X
cmFwcGVyKS0+VmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIAorCiAgICAg
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdGhhdCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMgPT0gdGhhdDsKQEAgLTkyLDE1ICs5MiwxOCBA
QAogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpIHsgcmV0dXJuIGdl
dFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsgfQotICAgICAgICAKKworICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlLCB3b3JsZFR5
cGUpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkZXJlZk9iamVjdCh2b2lkKiBvYmplY3Qp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9uKSAKKyAgICAg
ICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIGRlcmVmT2Jq
ZWN0RnVuY3Rpb24ob2JqZWN0KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHByb3RvLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKQpAQCAtMTM2
LDYgKzEzOSw3IEBACiAgICAgICAgIGNvbnN0IEluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllc0Z1bmN0aW9uIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0
aW9uOwogICAgICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIHBhcmVudENsYXNzOwogICAgICAg
ICBjb25zdCBXcmFwcGVyVHlwZVByb3RvdHlwZSB3cmFwcGVyVHlwZVByb3RvdHlwZTsKKyAgICAg
ICAgY29uc3QgV3JhcE9iamVjdEZ1bmN0aW9uIHdyYXBPYmplY3RGdW5jdGlvbjsKICAgICB9Owog
CiAgICAgaW5saW5lIHZvaWQqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
KQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBACiAKIFdyYXBwZXJUeXBlSW5mbyogbnBPYmplY3RUeXBlSW5mbygpCiB7Ci0g
ICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyB0eXBlSW5mbyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKKyAgc3RhdGljIFdyYXBwZXJUeXBlSW5m
byB0eXBlSW5mbyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90
b3R5cGUsIDAgfTsKICAgICByZXR1cm4gJnR5cGVJbmZvOwogfQogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAkocmV2aXNpb24gMTQ1MDI2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEhUTUxDdXN0b21FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDcgQEAKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEhU
TUxFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPEhUTUxFbGVtZW50Piwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGVXcmFwcGVyKEhUTUxFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKTsKIH07CiAKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ3VzdG9t
RWxlbWVudDo6dG9WOChIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEhUTUxDdXN0b21FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDUwMjYpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCwxMyArNTQsMTMgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOEhUTUxDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhIVE1MQ3VzdG9t
RWxlbWVudDo6Y3JlYXRlV3JhcHBlcihIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFT
U0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwuZ2V0KCkp
OworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwpOwogICAgIGlmICghY29uc3Ry
dWN0b3IpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IFdl
YkNvcmU6OnRvVjgodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbC5nZXQoKSksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFs
dWUgPSBXZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZXJWYWx1ZS5Jc0VtcHR5KCkgJiYg
d3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKICAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBG
dW5jdGlvblRlbXBsYXRlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwODEzOAogICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmlzRmVhdHVyZUFs
bG93ZWQoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSkpIHsKLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVy
KGNyZWF0aW9uQ29udGV4dCwgJlY4SFRNTEVsZW1lbnQ6OmluZm8sIGltcGwuZ2V0KCksIGlzb2xh
dGUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBw
ZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmVjhIVE1MRWxlbWVudDo6aW5mbywg
aW1wbCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
ICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZWOEhU
TUxFbGVtZW50OjppbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC04NSw3ICs4NSw3IEBACiAg
ICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBsLmdldCgpLCBpc29s
YXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCB0eXBlSW5mbywgaW1wbCwgaXNvbGF0ZSk7
CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgU2hvdWxkTm90UHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhcHBsZXRUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAKICAgICBtX3NlcnZpY2VUeXBlID0gImFwcGxp
Y2F0aW9uL3gtamF2YS1hcHBsZXQiOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9u
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShiYXNlZm9u
dFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBIVE1MQmFzZUZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxBdWRpb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAg
OiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXVkaW9UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlv
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGlmcmFtZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBzZXRI
YXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFVu
a25vd25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxl
bWVudC5oCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICBIVE1MVW5rbm93bkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgIHsKKyAgICAgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIH07CiAKSW5kZXg6IFdlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsNyBAQAogICAgIDogSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNoYWRvd0Vs
ZW1lbnQ+IEhUTUxTaGFkb3dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw4
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TSEFET1dfRE9NLAotICAgIFY4RW5hYmxlZEF0UnVu
dGltZT1zaGFkb3dET00KKyAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93RE9NLAorICAgIFY4
U2tpcFZUYWJsZVZhbGlkYXRpb24KIF0gaW50ZXJmYWNlIEhUTUxDb250ZW50RWxlbWVudCA6IEhU
TUxFbGVtZW50IHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBzZWxlY3Q7CiAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUluaGVyaXRhbmNlOwpJbmRleDogV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQor
KysgV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw2ICs2OCw3IEBACiAgICAgLCBtX3Nob3VsZFBhcnNlU2VsZWN0b3JMaXN0KGZh
bHNlKQogICAgICwgbV9pc1ZhbGlkU2VsZWN0b3IodHJ1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxDb250ZW50RWxlbWVudDo6fkhUTUxDb250ZW50RWxl
bWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKG1hcFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAsIG1fcGFkZGluZygxKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKHRhYmxlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQAogI2lmICFFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgQVNTRVJUX1VOVVNFRCh1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUsICF1
c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwogI2VuZGlmCisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dW53
aW5kU3RhdGVTdGFjaygpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyMSBAQAogCiBXZWJH
TENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViR0xDb250ZXh0RXZlbnQ6OldlYkdMQ29udGV4dEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9zdGF0dXNNZXNzYWdlKHN0YXR1c01lc3NhZ2UpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJHTENvbnRleHRFdmVu
dDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJH
TENvbnRleHRFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIpCiAgICAgLCBtX3N0YXR1c01lc3NhZ2UoaW5pdGlhbGl6ZXIuc3RhdHVzTWVzc2FnZSkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYkdMQ29udGV4dEV2
ZW50Ojp+V2ViR0xDb250ZXh0RXZlbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhjYW52YXMp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0
dGVybikKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw4IEBACiAgICAg
LCBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNv
bGUpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOworCiAgICAgbV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRl
KCk7CiAgICAgbV9jb250ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL1ZhbGlk
aXR5U3RhdGUuaAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsMTAgQEAKICAgICBib29sIHZhbGlkKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgVmFsaWRpdHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpIHsgfQorICAgIFZhbGlkaXR5U3RhdGUo
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sKSA6IG1fY29udHJvbChjb250cm9sKQorICAg
IHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworICAgIH0KIAogICAgIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwogfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU3BhbkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc3BhblRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
U3BhbkVsZW1lbnQ+IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQAogSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBm
YWxzZSwgdHJ1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgY2xl
YXJYTUxWZXJzaW9uKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9pc0FjdGl2YXRlZFN1Ym1p
dChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShidXR0b25UYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEJ1dHRvbkVsZW1l
bnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxMYWJlbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTExhYmVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGxhYmVsVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxNCBAQAog
CiBUcmFja0V2ZW50OjpUcmFja0V2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFRyYWNrRXZlbnQ6OlRyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBUcmFja0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudCh0eXBl
LCBpbml0aWFsaXplcikKICAgICAsIG1fdHJhY2soaW5pdGlhbGl6ZXIudHJhY2spCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBUcmFja0V2ZW50Ojp+VHJhY2tFdmVu
dCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysg
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKG1ldGFUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGJvZHlUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICA6IEhUTUxNZWRpYUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZSh2aWRlb1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkpCiAgICAgICAgIG1fZGVmYXVsdFBvc3RlclVSTCA9
IGRvY3VtZW50LT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKTsKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
NyBAQAogSFRNTEFsbENvbGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0aW9uKE5vZGUqIG5vZGUsIENv
bGxlY3Rpb25UeXBlIHR5cGUpCiAgICAgOiBIVE1MQ29sbGVjdGlvbihub2RlLCB0eXBlLCBEb2Vz
Tm90T3ZlcnJpZGVJdGVtQWZ0ZXIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBIVE1MQWxsQ29sbGVjdGlvbjo6fkhUTUxBbGxDb2xsZWN0aW9uKCkKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogICAgIDogSFRNTFRhYmxlUGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxl
Um93RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA
QAogaW5saW5lIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpIVE1MVGFibGVDZWxsRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1M
VGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+IEhU
TUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgLCBtX3Nob3VsZFJlY2FsY3VsYXRlSXRl
bUNvdW50KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9sVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1l
bnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDcgQEAKICAgICAsIG1fdmFsdWUoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwcm9n
cmVzc1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRNTFBy
b2dyZXNzRWxlbWVudDo6fkhUTUxQcm9ncmVzc0VsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxCYXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCYXNl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShiYXNlVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxCYXNlRWxlbWVudD4gSFRNTEJhc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxN
b2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6
OkhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTW9kRWxlbWVu
dD4gSFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogICAgICwgbV9pc09wZW4oZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBACiAgICAgLCBtX2RvY3VtZW50VmVyc2lvbigwKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGZpZWxkc2V0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxGaWVsZFNldEVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaHRtbFRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+
IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTWV0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogICAg
IDogTGFiZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShtZXRlclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogSFRNTE1ldGVyRWxlbWVudDo6fkhUTUxNZXRlckVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAgICAg
OiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKHRhZ05hbWUsIGRvY3VtZW50LCBmb3Jt
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGtleWdlblRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNlbGVjdCBlbGVtZW50IHdpdGgg
b25lIG9wdGlvbiBlbGVtZW50IGZvciBlYWNoIGtleSBzaXplLgogICAgIFZlY3RvcjxTdHJpbmc+
IGtleXM7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKHFUYWcpIHx8IGhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
UXVvdGVFbGVtZW50PiBIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgLCBTY3JpcHRF
bGVtZW50KHRoaXMsIHdhc0luc2VydGVkQnlQYXJzZXIsIGFscmVhZHlTdGFydGVkKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKHNjcmlwdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiAr
NjQsNyBAQAogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9iamVjdFRhZykpOwogICAgIHNldEZv
cm0oZm9ybSA/IGZvcm0gOiBmaW5kRm9ybUFuY2VzdG9yKCkpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50Ojp+SFRNTE9iamVj
dEVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fc3BhbigxKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVDb2xFbGVtZW50PiBIVE1M
VGFibGVDb2xFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBIVE1MQ29sbGVj
dGlvbihzZWxlY3QsIFNlbGVjdE9wdGlvbnMsIERvZXNOb3RPdmVycmlkZUl0ZW1BZnRlcikKIHsK
ICAgICBBU1NFUlQoc2VsZWN0LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRp
b25zQ29sbGVjdGlvbj4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUoTm9kZSogc2VsZWN0
LCBDb2xsZWN0aW9uVHlwZSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWVudVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IEhUTUxN
ZW51RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcsNiArNTcsNyBAQAogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGlvblRh
ZykpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1M
T3B0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudCAtICVw
IiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc291cmNlVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTb3VyY2VFbGVtZW50
PiBIVE1MU291cmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgICwgbV9kZWZhdWx0VmFsdWUoIiIp
CiAgICAgLCBtX3Rva2VucyhET01TZXR0YWJsZVRva2VuTGlzdDo6Y3JlYXRlKCkpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPdXRwdXRF
bGVtZW50PiBIVE1MT3V0cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBA
CiAgICAgLCBtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUoTm90UmVnaXN0ZXJlZCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShzdHlsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogSFRNTFN0eWxlRWxlbWVudDo6fkhUTUxTdHlsZUVsZW1lbnQoKQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1
OSw3IEBACiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRyYWNrRWxl
bWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJhY2tUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxUcmFja0VsZW1lbnQ6On5I
VE1MVHJhY2tFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGlUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAog
aW5saW5lIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBI
VE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZW1iZWRUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEVt
YmVkRWxlbWVudD4gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShvcHRncm91cFRhZykpOwogICAg
IHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+IEhUTUxPcHRHcm91
cEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE0NjA1NikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
NCw2ICsxODQsNyBAQAogICAgIDogTGl2ZU5vZGVMaXN0QmFzZShvd25lck5vZGUsIHJvb3RUeXBl
RnJvbUNvbGxlY3Rpb25UeXBlKHR5cGUpLCBpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmRO
YW1lQXR0cmlidXRlcyh0eXBlKSwKICAgICAgICAgV2ViQ29yZTo6c2hvdWxkT25seUluY2x1ZGVE
aXJlY3RDaGlsZHJlbih0eXBlKSwgdHlwZSwgaXRlbUFmdGVyT3ZlcnJpZGVUeXBlKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0
eXBlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1
NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiBpbmxpbmUgSFRNTEhlYWRpbmdFbGVtZW50OjpIVE1MSGVhZGlu
Z0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxIZWFkaW5nRWxlbWVudD4g
SFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJhbVRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50
PiBIVE1MUGFyYW1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShoZWFkVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gSFRN
TEhlYWRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShwVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogICAgICwgbV9saW5rUmVsYXRp
b25zKDApCiAgICAgLCBtX2NhY2hlZFZpc2l0ZWRMaW5rSGFzaCgwKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4g
SFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAK
ICAgICAsIG1fZGlkQ2xlYXJJbWFnZUJ1ZmZlcihmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShjYW52YXNUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDggQEAKICAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRp
b25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNDYXB0aW9ucygpOwogICAgIH0K
ICNlbmRpZgorCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBIVE1MTWVk
aWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQAogI2lmIEVOQUJMRShJTlBV
VF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsK
ICNlbmRpZgorICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlz
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBpbmxpbmUgSFRNTERh
dGFMaXN0RWxlbWVudDo6SFRNTERhdGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAog
ICAgICwgbV9jb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGltZ1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICBpZiAoZm9ybSkKICAgICAgICAgZm9ybS0+cmVnaXN0ZXJJbWdFbGVtZW50KHRoaXMp
OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw3IEBACiBpbmxpbmUgSFRNTFByZUVsZW1lbnQ6OkhUTUxQcmVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L1JhZGlvTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICAgICA6IExp
dmVOb2RlTGlzdChyb290Tm9kZSwgUmFkaW9Ob2RlTGlzdFR5cGUsIEludmFsaWRhdGVGb3JGb3Jt
Q29udHJvbHMsIHJvb3ROb2RlLT5oYXNUYWdOYW1lKGZvcm1UYWcpID8gTm9kZUxpc3RJc1Jvb3Rl
ZEF0RG9jdW1lbnQgOiBOb2RlTGlzdElzUm9vdGVkQXROb2RlKQogICAgICwgbV9uYW1lKG5hbWUp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSYWRpb05vZGVMaXN0
Ojp+UmFkaW9Ob2RlTGlzdCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0
aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNh
cHRpb25UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MDU2KQor
KysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBACiAgICAgLCBtX25vcmVzaXplKGZhbHNlKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGZyYW1lc2V0VGFnKSk7Ci0gICAgCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1M
SFJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaHJU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBACiAgICAgOiBTdHls
ZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCB0eXBlKQogewogICAgIEFTU0VSVCh0YWdOYW1l
LmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAsIG1fZnJhbWVCb3JkZXJT
ZXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJhbWVUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZyYW1lRWxlbWVu
dD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAJKHJldmlzaW9u
IDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQAogCiBNZWRpYUtleUV2ZW50OjpNZWRpYUtleUV2ZW50KCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhS2V5RXZlbnQ6Ok1l
ZGlhS2V5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleUV2ZW50
SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01Myw2ICs1NCw3IEBACiAgICAgLCBtX2Vycm9yQ29kZShp
bml0aWFsaXplci5lcnJvckNvZGUpCiAgICAgLCBtX3N5c3RlbUNvZGUoaW5pdGlhbGl6ZXIuc3lz
dGVtQ29kZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlh
S2V5RXZlbnQ6On5NZWRpYUtleUV2ZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9udEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRm9udEVsZW1l
bnQ+IEhUTUxGb250RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGVnZW5kVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxMZWdlbmRF
bGVtZW50PiBIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGlhbG9n
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaWFsb2dFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGlhbG9nVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxE
aWFsb2dFbGVtZW50PiBIVE1MRGlhbG9nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKHRleHRhcmVhVGFnKSk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1
ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkaXZUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTWFycXVlZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAg
ICAgLCBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUobWFycXVlZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA1NikKKysrIFdlYkNv
cmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUodWxUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGxUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4g
SFRNTERMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAog
ICAgIDogSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0
ZW1BZnRlcikKIHsKICAgICBBU1NFUlQob3duZXJOb2RlLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8
IG93bmVyTm9kZS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bj4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShOb2RlKiBvd25lck5vZGUsIENv
bGxlY3Rpb25UeXBlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjA1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw2ICs3NCw3IEBACiAgICAgLCBtX3BlbmRpbmdTaGVldFR5cGUoTm9uZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShsaW5rVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gSFRNTExpbmtFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQAogI2VuZGlmCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoZm9ybVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGlyVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXJlY3Rv
cnlFbGVtZW50PiBIVE1MRGlyZWN0b3J5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9zaGFwZShVbmtu
b3duKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGFyZWFUYWcpKTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBIVE1M
QXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIGlubGluZSBIVE1MVGVtcGxhdGVFbGVtZW50
OjpIVE1MVGVtcGxhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRNTFRlbXBsYXRlRWxlbWVu
dDo6fkhUTUxUZW1wbGF0ZUVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBACiAgICAgLCBtX3Nob3VsZFJlY2Fs
Y0xpc3RJdGVtcyhmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNl
bGVjdEVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCklu
ZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIHsKICAgICBBU1NF
UlQobV9mcmFtZSk7CiAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWEpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKICAgICBpZiAobV9zdG9yYWdlQXJlYSkKICAgICAgICAgbV9zdG9y
YWdlQXJlYS0+aW5jcmVtZW50QWNjZXNzQ291bnQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
RXZlbnQuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBTdG9yYWdlRXZlbnQ6
OlN0b3JhZ2VFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBTdG9yYWdlRXZlbnQ6On5TdG9yYWdlRXZlbnQoKQpAQCAtNjYsNiArNjcsNyBAQAogICAgICwg
bV91cmwodXJsKQogICAgICwgbV9zdG9yYWdlQXJlYShzdG9yYWdlQXJlYSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RvcmFnZUV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCkBAIC03Niw2ICs3OCw3IEBACiAgICAgLCBtX3VybChpbml0aWFsaXplci51cmwpCiAg
ICAgLCBtX3N0b3JhZ2VBcmVhKGluaXRpYWxpemVyLnN0b3JhZ2VBcmVhKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlRXZlbnQ6OmluaXRTdG9y
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0b3JhZ2UqIHN0b3JhZ2VB
cmVhKQpJbmRleDogV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24gMTQ2MDU2KQorKysgV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiBCbG9iOjpCbG9iKCkK
ICAgICA6IG1fc2l6ZSgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogCiAgICAg
Ly8gQ3JlYXRlIGEgbmV3IGludGVybmFsIFVSTCBhbmQgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgcHJv
dmlkZWQgYmxvYiBkYXRhLgpAQCAtNjYsNiArNjcsNyBAQAogICAgICwgbV9zaXplKHNpemUpCiB7
CiAgICAgQVNTRVJUKGJsb2JEYXRhKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgaW50ZXJuYWwgVVJMIGFuZCByZWdpc3RlciBpdCB3aXRo
IHRoZSBwcm92aWRlZCBibG9iIGRhdGEuCiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCk7CkBAIC03Niw2ICs3OCw4IEBACiAgICAgOiBtX3R5cGUodHlwZSkK
ICAgICAsIG1fc2l6ZShzaXplKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
KwogICAgIC8vIENyZWF0ZSBhIG5ldyBpbnRlcm5hbCBVUkwgYW5kIHJlZ2lzdGVyIGl0IHdpdGgg
dGhlIHNhbWUgYmxvYiBkYXRhIGFzIHRoZSBzb3VyY2UgVVJMLgogICAgIG1faW50ZXJuYWxVUkwg
PSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTCgwLCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOwpJbmRleDogV2Vi
Q29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkv
RmlsZUxpc3QuY3BwCShyZXZpc2lvbiAxNDYwNTYpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZUxp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIEZpbGVMaXN0OjpGaWxl
TGlzdCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGaWxlKiBG
aWxlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZmlsZWFw
aS9GaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAJKHJldmlz
aW9uIDE0NjA1NikKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDYgKzEwNCw3IEBACiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShpbnZh
bGlkRmlsZVRpbWUoKSkKICNlbmRpZgogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtMTE0LDYgKzExNSw3IEBACiAgICAgLCBtX3NuYXBzaG90
TW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKICNlbmRpZgogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBtX25hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0
aCk7CiAgICAgLy8gRklYTUU6IEZpbGUgb2JqZWN0IHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0
aW9uIGRvZXMgbm90IGluY2x1ZGUKICAgICAvLyBuZXdlciBmaWxlIG9iamVjdCBkYXRhIG1lbWJl
cnM6IG1fbmFtZSBhbmQgbV9yZWxhdGl2ZVBhdGguCkBAIC0xMjksNiArMTMxLDcgQEAKICAgICAs
IG1fc25hcHNob3RNb2RpZmljYXRpb25UaW1lKGludmFsaWRGaWxlVGltZSgpKQogI2VuZGlmCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiAjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQpAQCAtMTM5LDYgKzE0Miw3IEBACiAgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0
YS5sZW5ndGgpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS5tb2Rp
ZmljYXRpb25UaW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
RmlsZTo6RmlsZShjb25zdCBLVVJMJiBmaWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQpAQCAtMTQ3LDYgKzE1MSw3IEBACiAgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRh
ZGF0YS5sZW5ndGgpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS5t
b2RpZmljYXRpb25UaW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
ICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194314</attachid>
            <date>2013-03-21 12:17:42 -0700</date>
            <delta_ts>2013-03-29 11:00:29 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>patch_112191.txt</filename>
            <type>text/plain</type>
            <size>215439</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0
cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTAgKzM5LDEyIEBACiBXZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJp
eChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKICAgICA6IG1fbWF0cml4KG0pCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRDU1NNYXRyaXg6Oldl
YktpdENTU01hdHJpeChjb25zdCBTdHJpbmcmIHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBzZXRNYXRyaXhWYWx1ZShzLCBlYyk7
CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsMTAgQEAKICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVk
OgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24oKSB7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9u
KCkKKyAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKKyAgICB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlTG9hZEV2ZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKIAogQ1NTRm9udEZhY2VMb2FkRXZlbnQ6OkNTU0ZvbnRGYWNlTG9hZEV2ZW50KCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIENTU0ZvbnRGYWNlTG9h
ZEV2ZW50OjpDU1NGb250RmFjZUxvYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBh
c3NSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBmb250ZmFjZSwgUGFzc1JlZlB0cjxET01FcnJvcj4g
ZXJyb3IpCkBAIC00NCw2ICs0NSw3IEBACiAgICAgLCBtX2ZvbnRmYWNlKGZvbnRmYWNlKQogICAg
ICwgbV9lcnJvcihlcnJvcikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NGb250RmFjZUxvYWRFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IENTU0ZvbnRGYWNlTG9hZEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCkBAIC01MSw2ICs1Myw3IEBACiAgICAgLCBtX2ZvbnRmYWNlKGluaXRpYWxpemVyLmZvbnRm
YWNlKQogICAgICwgbV9lcnJvcihpbml0aWFsaXplci5lcnJvcikKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIENTU0ZvbnRGYWNlTG9hZEV2ZW50Ojp+Q1NTRm9udEZh
Y2VMb2FkRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgOiBDU1NSdWxlKHBhcmVu
dCkKICAgICAsIG1fZm9udEZhY2VSdWxlKGZvbnRGYWNlUnVsZSkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIENTU0ZvbnRGYWNlUnVsZTo6fkNTU0ZvbnRGYWNlUnVs
ZSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHJldmlzaW9u
IDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxNSBA
QAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudDsgfQogCiBwcml2YXRlOgotICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIHsg
fQorICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpCisgICAgeworICAgICAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAgfQorCiAgICAgWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxl
LCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpCiAg
ICAgICAgIDogUHJvZ3Jlc3NFdmVudCh0eXBlLCBsZW5ndGhDb21wdXRhYmxlLCBsb2FkZWQsIHRv
dGFsKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0K
IH07CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAzLDYgKzIwMyw3IEBACiAjaWZuZGVmIE5ERUJVRwogICAgIHhtbEh0dHBS
ZXF1ZXN0Q291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogWE1MSHR0cFJlcXVlc3Q6On5YTUxIdHRwUmVxdWVzdCgpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDYgKzc3LDcgQEAKICAgICAsIG1fcmVzdWx0KGluaXRpYWxpemVyLnJlc3VsdCkKICAgICAs
IG1fcmVzdWx0SGlzdG9yeShpbml0aWFsaXplci5yZXN1bHRIaXN0b3J5KQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVudDo6U3Bl
ZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgUGFzc1Jl
ZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4gcmVzdWx0LCBzaG9ydCByZXN1bHRJbmRleCwg
UGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q+IHJlc3VsdEhpc3RvcnkpCkBA
IC04NSw2ICs4Niw3IEBACiAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBtX3Jlc3VsdEhp
c3RvcnkocmVzdWx0SGlzdG9yeSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIHVuc2lnbmVkIGxvbmcgcmVzdWx0SW5kZXgsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+ID4mIHJlc3VsdHMpCkBA
IC05Miw2ICs5NCw3IEBACiAgICAgLCBtX3Jlc3VsdEluZGV4KHJlc3VsdEluZGV4KQogICAgICwg
bV9yZXN1bHRzKFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6Y3JlYXRlKHJlc3VsdHMpKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRp
b25FdmVudDo6flNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiAg
ICAgLCBtX2Vycm9yKGVycm9yKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25z
dCBTcGVlY2hSZWNvZ25pdGlvbkVycm9ySW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC04NSw2ICs4Niw3
IEBACiAgICAgLCBtX2Vycm9yKGluaXRpYWxpemVyLmVycm9yKQogICAgICwgbV9tZXNzYWdlKGlu
aXRpYWxpemVyLm1lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OmludGVyZmFj
ZU5hbWUoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIFNwZWVjaFN5bnRoZXNpc0V2ZW50OjpTcGVl
Y2hTeW50aGVzaXNFdmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlzKTsKIH0KIAogU3Bl
ZWNoU3ludGhlc2lzRXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG5hbWUpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdCgwLCB0aGlzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKQEAgLTY1
LDYgKzY2LDcgQEAKICAgICAsIG1fc3RhdGUoSWRsZSkKICAgICAsIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyKHByb3ZpZGVyKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBp
ZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7
CiAgICAgICAgIHJldHVybjsKQEAgLTg4LDYgKzkwLDcgQEAKICAgICAsIG1fc3RhdGUoSWRsZSkK
ICAgICAsIG1fbm90aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVy
bWlzc2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKICAg
ICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEwOSw4ICsxMTIs
OSBAQAogICAgICwgbV9zdGF0ZShJZGxlKQogICAgICwgbV90YXNrVGltZXIoYWRvcHRQdHIobmV3
IFRpbWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQp
KSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBtX25vdGlm
aWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlv
bnModG9Eb2N1bWVudChjb250ZXh0KS0+ZG9tV2luZG93KCkpOwotICAgIAogICAgIEFTU0VSVCht
X25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOwogICAgIG1fdGFza1RpbWVyLT5zdGFydE9u
ZVNob3QoMCk7CiB9CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaAkocmV2
aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcg
QEAKICAgICAgICAgLCBtX3dhc0NsZWFuKGZhbHNlKQogICAgICAgICAsIG1fY29kZSgwKQogICAg
IHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAogICAgIENs
b3NlRXZlbnQoYm9vbCB3YXNDbGVhbiwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQpA
QCAtODYsNiArODcsNyBAQAogICAgICAgICAsIG1fY29kZShjb2RlKQogICAgICAgICAsIG1fcmVh
c29uKHJlYXNvbikKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
ICAgICB9CiAKICAgICBDbG9zZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
Q2xvc2VFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtOTQsNiArOTYsNyBAQAogICAgICAgICAs
IG1fY29kZShpbml0aWFsaXplci5jb2RlKQogICAgICAgICAsIG1fcmVhc29uKGluaXRpYWxpemVy
LnJlYXNvbikKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICB9CiAKICAgICBib29sIG1fd2FzQ2xlYW47CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICAsIG1fbG93ZXJUeXBlKGxvd2VyVHlwZSkKICAg
ICAsIG1fdXBwZXJUeXBlKHVwcGVyVHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFNjcmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
cldpdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIElEQkN1cnNv
cldpdGhWYWx1ZTo6SURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
LCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uKQogICAgIDogSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwg
c291cmNlLCB0cmFuc2FjdGlvbikKIHsKKyAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBJREJDdXJzb3JXaXRoVmFsdWU6On5JREJDdXJzb3JXaXRoVmFsdWUoKQpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiB7CiAgICAgLy8gV2Ug
cGFzcyBhIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQu
CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBJREJGYWN0b3J5Ojp+SURCRmFjdG9yeSgpCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysr
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICAgICBBU1NF
UlQobV90cmFuc2FjdGlvbik7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSB0byB0aGlzIG9i
amVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVt
ZW50KCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
CiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01ldGFkYXRh
KHByZXZpb3VzTWV0YWRhdGEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIGlmIChtb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKSB7CiAg
ICAgICAgIC8vIE5vdCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgogICAgICAgICBtX3N0YXRl
ID0gSW5hY3RpdmU7CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAsIG1fcHJldmVudFByb3BhZ2F0aW9uKGZhbHNlKQogICAgICwgbV9yZXF1ZXN0
U3RhdGUoY29udGV4dCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQAogICAgIEFTU0VSVChtX29iamVjdFN0b3JlKTsKICAgICBBU1NFUlQobV90
cmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKG1fbWV0YWRhdGEuaWQgIT0gSURCSW5kZXhNZXRhZGF0
YTo6SW52YWxpZElkKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElE
QkluZGV4Ojp+SURCSW5kZXgoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2
ICs4Niw3IEBACiAgICAgQVNTRVJUKG1fcmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fc291cmNlLT50
eXBlKCkgPT0gSURCQW55OjpJREJPYmplY3RTdG9yZVR5cGUgfHwgbV9zb3VyY2UtPnR5cGUoKSA9
PSBJREJBbnk6OklEQkluZGV4VHlwZSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQ3Vyc29yOjp+SURCQ3Vyc29y
KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAJ
KHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsNyBAQAogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7CiAgICAgQVNTRVJUKCFt
X3Jlc3VsdCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJPcGVu
REJSZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVzdCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDcgQEAKICAgICAsIG1faW50ZWdlcigwKQogewogICAgIEFTU0VSVCh0eXBlID09IFVu
ZGVmaW5lZFR5cGUgfHwgdHlwZSA9PSBOdWxsVHlwZSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBJREJBbnk6On5JREJBbnkoKQpAQCAtMTM1LDYgKzEzNiw3IEBACiAg
ICAgLCBtX2RvbVN0cmluZ0xpc3QodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQ
dHI8SURCQ3Vyc29yV2l0aFZhbHVlPiB2YWx1ZSkKQEAgLTE0Miw2ICsxNDQsNyBAQAogICAgICwg
bV9pZGJDdXJzb3JXaXRoVmFsdWUodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQ
dHI8SURCQ3Vyc29yPiB2YWx1ZSkKQEAgLTE0OSw2ICsxNTIsNyBAQAogICAgICwgbV9pZGJDdXJz
b3IodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZh
bHVlKQpAQCAtMTU2LDYgKzE2MCw3IEBACiAgICAgLCBtX2lkYkRhdGFiYXNlKHZhbHVlKQogICAg
ICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkZhY3Rvcnk+IHZhbHVlKQpAQCAtMTYzLDYg
KzE2OCw3IEBACiAgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55
KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQpAQCAtMTcwLDYgKzE3Niw3IEBACiAgICAgLCBt
X2lkYkluZGV4KHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiB2YWx1ZSkKQEAgLTE3Nyw2ICsxODQsNyBAQAogICAgICwgbV9pZGJUcmFuc2FjdGlv
bih2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
dmFsdWUpCkBAIC0xODQsNiArMTkyLDcgQEAKICAgICAsIG1faWRiT2JqZWN0U3RvcmUodmFsdWUp
CiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIElEQkFueTo6SURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKQEAgLTE5MSw2
ICsyMDAsNyBAQAogICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigw
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJB
bnkoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCkBAIC0xOTgsNiArMjA4LDcgQEAKICAgICAsIG1f
aWRiS2V5UGF0aCh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKQEAgLTIwNSwxMiArMjE2LDE0IEBACiAgICAgLCBtX3N0cmluZyh2YWx1ZSkKICAgICAsIG1f
aW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURC
QW55OjpJREJBbnkoaW50NjRfdCB2YWx1ZSkKICAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKICAg
ICAsIG1faW50ZWdlcih2YWx1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAog
ICAgICwgbV9vbGRWZXJzaW9uKG9sZFZlcnNpb24pCiAgICAgLCBtX25ld1ZlcnNpb24obmV3VmVy
c2lvbikKIHsKKyAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJWZXJz
aW9uQ2hhbmdlRXZlbnQ6On5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKQpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiB7CiAgICAgLy8gV2UgcGFzcyBh
IHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAg
cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsMTIgKzQ1LDE0IEBACiAKIE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6TWVkaWFTdHJlYW1UcmFj
a0V2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlh
U3RyZWFtVHJhY2tFdmVudDo6TWVkaWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiB0cmFjaykKICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSkKICAgICAsIG1fdHJhY2sodHJhY2spCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6On5NZWRpYVN0cmVhbVRyYWNrRXZl
bnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTQgQEAKIAogUlRDSWNlQ2FuZGlkYXRlRXZl
bnQ6OlJUQ0ljZUNhbmRpZGF0ZUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudChi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0
ZT4gY2FuZGlkYXRlKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRpZGF0ZUV2ZW50
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NhbmRpZGF0ZShjYW5kaWRhdGUpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBSVENJY2VDYW5kaWRhdGVF
dmVudDo6flJUQ0ljZUNhbmRpZGF0ZUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBA
CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoKQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUlRDRGF0YUNoYW5uZWxFdmVudDo6UlRD
RGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwpCiAg
ICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NoYW5uZWwo
Y2hhbm5lbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0Rh
dGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hhbm5lbEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTggKzU0LDIxIEBA
CiAKIE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKICAgICA6IEV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fc3RyZWFtKHN0cmVhbSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlh
U3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYVN0cmVhbUV2
ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAg
ICAsIG1fc3RyZWFtKGluaXRpYWxpemVyLnN0cmVhbSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6On5NZWRpYVN0cmVhbUV2ZW50KCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDIxIEBACiAKIFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFu
Z2VFdmVudChjb25zdCBTdHJpbmcmIHRvbmUpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkudG9u
ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX3RvbmUodG9uZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6
OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQm
IGluaXRpYWxpemVyKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVudCwg
aW5pdGlhbGl6ZXIpCiAgICAgLCBtX3RvbmUoaW5pdGlhbGl6ZXIudG9uZSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5S
VENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMg
KzQ1LDE0IEBACiAKIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6T2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
LQogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OjpPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQoUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gcmVuZGVyZWRCdWZmZXIpCiAgICAgOiBFdmVudChl
dmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgdHJ1ZSwgZmFsc2UpCiAgICAgLCBtX3JlbmRlcmVk
QnVmZmVyKHJlbmRlcmVkQnVmZmVyKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Ojp+T2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nl
c3NpbmdFdmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6
QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBv
dXRwdXRCdWZmZXIpCkBAIC01Miw2ICs1Myw3IEBACiAgICAgLCBtX2lucHV0QnVmZmVyKGlucHV0
QnVmZmVyKQogICAgICwgbV9vdXRwdXRCdWZmZXIob3V0cHV0QnVmZmVyKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6On5BdWRp
b1Byb2Nlc3NpbmdFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw2ICsyNDQsNyBAQAogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCiAgICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24oKQpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29s
ZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiBD
b25zb2xlOjpDb25zb2xlKEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ29uc29sZTo6
fkNvbnNvbGUoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw2ICs0NSw3IEBACiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJhbWUpCiAg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIE5hdmlnYXRvcjo6fk5hdmlnYXRvcigpCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAJKHJldmlzaW9u
IDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKIAogQ3J5cHRvOjpDcnlwdG8o
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBDcnlwdG86
OmdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCBFeGNlcHRpb25Db2RlJiBl
YykKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNiArNjIsNyBAQAogICAgICwgbV91c2VyVGltaW5nKDApCiAjZW5kaWYgLy8gRU5BQkxF
KFVTRVJfVElNSU5HKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGVyZm9ybWFuY2U6On5QZXJmb3JtYW5jZSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZy
YW1lKQogICAgICwgbV9sYXN0U3RhdGVPYmplY3RSZXF1ZXN0ZWQoMCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhpc3Rvcnk6Omxlbmd0aCgpIGNv
bnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKIExvY2F0aW9uOjpMb2NhdGlvbihGcmFtZSogZnJhbWUpCiAgICAgOiBET01XaW5k
b3dQcm9wZXJ0eShmcmFtZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIGlubGluZSBjb25zdCBLVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFn
ZS9CYXJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogICAgIDogRE9N
V2luZG93UHJvcGVydHkoZnJhbWUpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEJhckluZm86OlR5cGUgQmFySW5mbzo6dHlwZSgp
IGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9TY3Jl
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NjcmVlbi5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKIFNjcmVlbjo6U2NyZWVuKEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3Bl
cnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdW5z
aWduZWQgU2NyZWVuOjpob3Jpem9udGFsRFBJKCkgY29uc3QKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0RXZl
bnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIg
KzUwLDE0IEBACiAKIFNwZWVjaElucHV0RXZlbnQ6OlNwZWVjaElucHV0RXZlbnQoKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoSW5wdXRFdmVudDo6U3Bl
ZWNoSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BlZWNo
SW5wdXRSZXN1bHRBcnJheSYgcmVzdWx0cykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwg
ZmFsc2UpIC8vIENhbiBidWJibGUsIG5vdCBjYW5jZWxhYmxlCiAgICAgLCBtX3Jlc3VsdHMoU3Bl
ZWNoSW5wdXRSZXN1bHRMaXN0OjpjcmVhdGUocmVzdWx0cykpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hJbnB1dEV2ZW50Ojp+U3BlZWNoSW5wdXRFdmVu
dCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCShyZXZpc2lvbiAxNDYzMzUp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgpAQCAtMzksNDYgKzM5LDEzMCBAQAogCiBjbGFzcyBTY3JpcHRXcmFwcGFibGUg
ewogcHVibGljOgotICAgIFNjcmlwdFdyYXBwYWJsZSgpIHsgfQorICAgIFNjcmlwdFdyYXBwYWJs
ZSgpIDogbV9tYXNrZWRTdG9yYWdlKDApIHsgfQogCisgICAgflNjcmlwdFdyYXBwYWJsZSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9tYXNrZWRTdG9yYWdlKTsgIC8vIEFzc2VydCBpbml0aWFs
aXphdGlvbiB2aWEgaW5pdCgpIGV2ZW4gaWYgbm90IHdyYXBwZWQgbGF0ZXIuCisgICAgICAgIG1f
bWFza2VkU3RvcmFnZSA9IDA7ICAgICAgLy8gQnJlYWsgVUFGIGF0dGVtcHRzIHRvIHdyYXAuCisg
ICAgfQorCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KG1hc2tPclVubWFza1BvaW50
ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAgICB2ODo6T2JqZWN0KiBvYmplY3QgPSBjb250
YWluc1dyYXBwZXIoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8djg6Ok9iamVjdCo+KG1hc2tPclVubWFz
a1ZhbHVlKG1fbWFza2VkU3RvcmFnZSkpIDogMDsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4ob2JqZWN0KTsKICAgICB9CiAKICAgICB2b2lkIHNldFdyYXBwZXIodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3Jh
cHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9tYXNrZWRXcmFwcGVyLklzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVCghY29udGFpbnNXcmFw
cGVyKCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0g
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpc29sYXRlLCB3cmFwcGVyKTsKICAgICAg
ICAgY29uZmlndXJhdGlvbi5jb25maWd1cmVXcmFwcGVyKHBlcnNpc3RlbnQsIGlzb2xhdGUpOwog
ICAgICAgICBwZXJzaXN0ZW50Lk1ha2VXZWFrKGlzb2xhdGUsIHRoaXMsIHdlYWtDYWxsYmFjayk7
Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlciA9IG1hc2tPclVubWFza1BvaW50ZXIoKnBlcnNpc3Rl
bnQpOworICAgICAgICBtX21hc2tlZFN0b3JhZ2UgPSBtYXNrT3JVbm1hc2tWYWx1ZShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oKnBlcnNpc3RlbnQpKTsKICAgICB9CiAKKyAgICBjb25zdCBX
cmFwcGVyVHlwZUluZm8qIHR5cGVJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChjb250YWluc1R5
cGVJbmZvKCkpCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXcmFw
cGVyVHlwZUluZm8qPihtX21hc2tlZFN0b3JhZ2UgJiB+MSk7CisKKyAgICAgICAgaWYgKGNvbnRh
aW5zV3JhcHBlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRvV3JhcHBlclR5cGVJbmZvKHdyYXBw
ZXIoKSk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICB2b2lkIHNldFR5cGVJbmZv
KGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIG1fbWFza2VkU3Rv
cmFnZSA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5mbykgfCAxKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiAgICAgewogICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgICAgIGluZm8u
aWdub3JlTWVtYmVyKG1fbWFza2VkV3JhcHBlcik7CisgICAgICAgIGluZm8uaWdub3JlTWVtYmVy
KG1fbWFza2VkU3RvcmFnZSk7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgd3JhcHBlckNhbkJl
U3RvcmVkSW5PYmplY3QoY29uc3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGlj
IGJvb2wgd3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3QoY29uc3QgU2NyaXB0V3JhcHBhYmxlKikg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0
V3JhcHBlckZyb21PYmplY3Qodm9pZCopCisgICAgeworICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOworICAgIH0KKworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9tT2JqZWN0KFNjcmlw
dFdyYXBwYWJsZSogb2JqZWN0KQorICAgIHsKKyAgICAgIHJldHVybiBvYmplY3QtPndyYXBwZXIo
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCosIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgY29uc3QgV3JhcHBlckNvbmZpZ3Vy
YXRpb24mKQorICAgIHsKKyAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29u
c3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAgeworICAgICAgb2Jq
ZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOworICAgIH0K
KworICAgIHN0YXRpYyBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGdldFR5cGVJbmZvRnJvbU9iamVj
dCh2b2lkKiBvYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFdyYXBwZXJUeXBlSW5m
byogZ2V0VHlwZUluZm9Gcm9tT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9iamVjdC0+dHlwZUluZm8oKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCBzZXRUeXBlSW5mb0luT2JqZWN0KHZvaWQqIG9iamVjdCwgY29uc3QgV3JhcHBlclR5cGVJ
bmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgc2V0VHlwZUluZm9Jbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9i
amVjdCwgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgb2JqZWN0
LT5zZXRUeXBlSW5mbyhpbmZvKTsKKyAgICB9CisKKyAgICAvLyBXcmFwcGFibGVzIG5lZWQgdG8g
YmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGVpciBtb3N0IGRlcnJpdmVkIHdyYXBwZWQgdHlwZQorICAg
IC8vIGluIG11Y2ggdGhlIHNhbWUgd2F5IHRoYXQgY2VydGFpbiBvdGhlciB0eXBlcyBuZWVkIHRv
IGJlIGFkb3B0ZWQgYW5kCisgICAgLy8gc28gZm9ydGguIFRoZSB0ZW1wbGF0ZWQgSW5pdCgpIG1l
dGhvZHMgYXJlIGluc3RhbnRpYXRlZCBpbiB0aGUgZ2VuZXJhdGVkCisgICAgLy8gVjggYmluZGlu
Z3MgY29kZS4gVGhlIGN1c3RvbSBpbml0IG1ldGhvZCBpcyBwcm92aWRlZCBieSB0aGUgY3VzdG9t
IGVsZW1lbnQKKyAgICAvLyBjb25zdHJ1Y3RvcidzIGN1c3RvbSBjb2RlLiBUaGUgSlNDIGNvZGUg
d2lsbCBtYWludGFpbiBjb21wYXRpYmlsaXR5IHZpYQorICAgIC8vIG5vLW9wICh2b2lkKikgbWV0
aG9kcyBoZXJlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPnN0YXRpYyB2b2lkIGluaXQoVCog
b2JqZWN0KQorICAgIHsKKyAgICAgICAgZXh0ZXJuIHZvaWQgc2NyaXB0d3JhcHBhYmxlX2luaXQo
VCopOyAgLy8gR29vZCBvbGUgbGlua2VyIHdpbGwgaGVscCB1cyB3aGVyZSB0ZW1wbGF0ZXMgY29t
ZSBzaG9ydC4KKyAgICAgICAgc2NyaXB0d3JhcHBhYmxlX2luaXQob2JqZWN0KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBpbml0Q3VzdG9tKFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0KQorICAg
IHsKKyAgICAgICAgZXh0ZXJuIHZvaWQgc2NyaXB0d3JhcHBhYmxlX2luaXRDdXN0b20oU2NyaXB0
V3JhcHBhYmxlKik7ICAvLyBBdm9pZCBjaXJ1bGFyaXR5LgorICAgICAgICBzY3JpcHR3cmFwcGFi
bGVfaW5pdEN1c3RvbShvYmplY3QpOworICAgIH0KKwogcHJpdmF0ZToKLSAgICBpbmxpbmUgdm9p
ZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnRwdHJfdCBtYXNrT3JVbm1hc2tW
YWx1ZSh1aW50cHRyX3QgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoIW1fbWFza2VkV3Jh
cHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQoKnZhbHVlID09IG1hc2tPclVubWFza1Bv
aW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOwotICAgICAgICB2YWx1ZS5EaXNwb3NlKGlzb2xhdGUp
OwotICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xlYXIoKTsKKyAgICAgICAgY29uc3QgdWludHB0
cl90IHJhbmRvbU1hc2sgPSB+KChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJldlYkNvcmVN
ZW1vcnlUeXBlczo6RE9NKSA+PiAxMykgfCAxKTsgLy8gRW50cm9weSB2aWEgQVNMUiwgYm90dG9t
IGJpdCBjbGVhci4KKyAgICAgICAgcmV0dXJuICh2YWx1ZSBeIHJhbmRvbU1hc2spICYgKCF2YWx1
ZSAtIDEpOyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJhbmNoaW5nLgogICAgIH0KIAotICAg
IC8vIFN0b3JlcyBhIG1hc2tlZCB3cmFwcGVyIHRvIHByZXZlbnQgYXR0YWNrZXJzIGZyb20gb3Zl
cndyaXRpbmcgdGhpcyBmaWVsZAotICAgIC8vIHdpdGggYSBwaG9ueSB3cmFwcGVyLgotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fbWFza2VkV3JhcHBlcjsKKyAgICBpbmxpbmUgYm9v
bCBjb250YWluc1R5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gKG1fbWFza2VkU3RvcmFnZSAmIDEp
ID09IDE7IH0KKyAgICBpbmxpbmUgYm9vbCBjb250YWluc1dyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX21hc2tlZFN0b3JhZ2UgJiYgKChtX21hc2tlZFN0b3JhZ2UgJiAxKSA9PSAwKTsgfQogCi0g
ICAgc3RhdGljIGlubGluZSB2ODo6T2JqZWN0KiBtYXNrT3JVbm1hc2tQb2ludGVyKGNvbnN0IHY4
OjpPYmplY3QqIG9iamVjdCkKKyAgICBpbmxpbmUgdm9pZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3Jh
cHBlclR5cGVJbmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAgY29uc3QgdWludHB0cl90IG9iamVj
dFBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JqZWN0KTsKLSAgICAgICAg
Y29uc3QgdWludHB0cl90IHJhbmRvbU1hc2sgPSB+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PigmV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pID4+IDEzKTsgLy8gRW50cm9weSB2aWEgQVNMUi4K
LSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8djg6Ok9iamVjdCo+KChvYmplY3RQb2lu
dGVyIF4gcmFuZG9tTWFzaykgJiAoIW9iamVjdFBvaW50ZXIgLSAxKSk7IC8vIFByZXNlcnZlIG51
bGwgd2l0aG91dCBicmFuY2hpbmcuCisgICAgICAgIEFTU0VSVChjb250YWluc1dyYXBwZXIoKSAm
JiBtX21hc2tlZFN0b3JhZ2UgIT0gMCk7CisgICAgICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oKnZhbHVlKSA9PSBtYXNrT3JVbm1hc2tWYWx1ZShtX21hc2tlZFN0b3JhZ2Up
KTsKKyAgICAgICAgdmFsdWUuRGlzcG9zZShpc29sYXRlKTsKKyAgICAgICAgc2V0VHlwZUluZm8o
aW5mbyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29sYXRl
KiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250ZXh0
KQpAQCAtOTMsMTIgKzE3NywxOSBAQAogICAgICAgICBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSB0
b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKICAgICAgICAgQVNTRVJUKGluZm8tPmRlcmVmT2Jq
ZWN0RnVuY3Rpb24pOwogCi0gICAgICAgIGtleS0+ZGlzcG9zZVdyYXBwZXIodmFsdWUsIGlzb2xh
dGUpOworICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZhbHVlLCBpc29sYXRlLCBpbmZvKTsK
ICAgICAgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0aGF0IDUwJX4gb2YgbWlub3IgR0MgY3ljbGUg
dGltZXMgY2FuIGJlIGNvbnN1bWVkCiAgICAgICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdo
aWNoIGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCiAgICAgICAgIC8vIG1ha2Ug
Tm9kZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwuCiAgICAgICAgIGluZm8tPmRlcmVmT2JqZWN0
KG9iamVjdCk7CiAgICAgfQorCisgICAgLy8gSWYgemVybywgdGhlbiB0aGlzIGNvbnRhaW5zIG5v
dGhpbmcsIG90aGVyd2lzZToKKyAgICAvLyAgIElmIHRoZSBib3R0b20gYml0IGl0IGNsZWFyLCB0
aGVuIHRoaXMgY29udGFpbnMgYSBtYXNrZWQgcG9pbnRlciB0byBhIHdyYXBwZXIgb2JqZWN0Lgor
ICAgIC8vICAgSWYgdGhlIGJvdHRvbSBiaXQgaXMgc2V0LCB0aGVuIHRoaXMgY29udGFpbnMgYSBw
b2ludGVyIHRvIHRoZSB3cmFwcGVyIHR5cGUgaW5mbyBpbiB0aGUgcmVtYWluaW5nIGJpdHMuCisg
ICAgLy8gTWFza2luZyB3cmFwcGVycyBwcmV2ZW50cyBhdHRhY2tlcnMgZnJvbSBvdmVyd3JpdGlu
ZyB0aGlzIGZpZWxkIHdpdGggcG9pbnRlcnMgdG8gc3ByYXllZCBkYXRhLgorICAgIC8vIFBvaW50
ZXJzIGluc2lkZSBXcmFwcGVyIFR5cGUgSW5mbyBhcmUgYWxyZWFkeSBwcm90ZWN0ZWQgYnkgQVNM
Ui4KKyAgICB1aW50cHRyX3QgbV9tYXNrZWRTdG9yYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q3VzdG9tRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuaAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q3VzdG9tRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxOCArNTQsMTkgQEAKICAgICAv
LyBUaGVuIGdlbmVyYXRlZCBFbGVtZW50V3JhcHBlckZhY3RvcmllcyBjYWxsIFY4Q3VzdG9tRWxl
bWVudDo6d3JhcCgpIHdpdGggcHJvcGVyIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciBpbnN0YW5j
ZXMKICAgICAvLyBhY2NvcmRpbmdseS4KICAgICAvLwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4sIHY4OjpJc29sYXRl
Kik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChFbGVtZW50Kiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvck9m
KEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAKIHByaXZhdGU6
Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVm
UHRyPEVsZW1lbnQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBQYXNzUmVmUHRyPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rvcj4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Piwgdjg6Oklzb2xhdGUqKTsKIH07CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNv
bnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6d3JhcChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAg
QVNTRVJUKGltcGwpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwg
aXNvbGF0ZSkuSXNFbXB0eSgpKTsKLSAgICByZXR1cm4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xhdGUpOworICAg
IHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAogaW5saW5lIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoRWxlbWVudCogZWxlbWVudCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFk
YXB0b3JGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QWRhcHRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEFkYXB0b3JGdW5jdGlvbjo6
aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlLCAwLCAwLCAwLCAwLCAwLCAw
LCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4QWRhcHRv
ckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAs
IDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAKIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlck1hcC5o
IgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHY4Lmg+CkBAIC02Niw4ICs2Nyw4
IEBACiAgICAgICAgIC8vIHdheSBpcyB0byBjaGVjayB3aGV0aGVyIHRoZSB3cmFwcGFibGUncyB3
cmFwcGVyIGlzIHRoZSBzYW1lIGFzCiAgICAgICAgIC8vIHRoZSBob2xkZXIuCiAgICAgICAgIGlm
ICgoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpICYmIGlzTWFpbldvcmxk
T2JqZWN0KG9iamVjdCkpIHx8IGhvbGRlckNvbnRhaW5zV3JhcHBlcihjb250YWluZXIsIGhvbGRl
cikpIHsKLSAgICAgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChv
YmplY3QpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmpl
Y3QpOworICAgICAgICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVk
SW5PYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBhYmxl
OjpnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG1haW5X
b3JsZFN0b3JlKCktPm1fd3JhcHBlck1hcC5nZXQob2JqZWN0KTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gY3VycmVudChjb250YWluZXIuR2V0SXNvbGF0ZSgpKS0+Z2V0KG9iamVjdCk7CkBA
IC03Niw5ICs3Nyw5IEBACiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyKFQqIG9iamVjdCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiAgICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmpl
Y3Qob2JqZWN0KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CisgICAgICAgIGlmIChT
Y3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNN
YWluV29ybGRPYmplY3Qob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKExJS0VMWSghRE9NV3Jh
cHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICAgICAgICAgIHJldHVybiBT
Y3JpcHRXcmFwcGFibGU6OmdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGN1cnJlbnQoaXNvbGF0ZSktPmdldChvYmplY3QpOwogICAgIH0KQEAg
LTg2LDE3ICs4NywxNyBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZvck1haW5Xb3JsZChUKiBvYmplY3QpCiAg
ICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0
KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIGdldFdy
YXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6Ondy
YXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2Jq
ZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBTY3JpcHRXcmFwcGFibGU6OmdldFdyYXBwZXJGcm9t
T2JqZWN0KG9iamVjdCk7CiAgICAgICAgIHJldHVybiBtYWluV29ybGRTdG9yZSgpLT5nZXQob2Jq
ZWN0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lk
IHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKICAgICB7Ci0gICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVj
dChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHsKKyAgICAgICAgaWYgKFNj
cmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01h
aW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFw
cGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRX
cmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsK
KyAgICAgICAgICAgICAgICBTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXJJbk9iamVjdChvYmpl
Y3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTA2LDggKzEwNyw4IEBACiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBn
ZXQoVCogb2JqZWN0KQogICAgIHsKLSAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3Jl
ZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5Xb3JsZCkKLSAgICAgICAgICAgIHJl
dHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICBpZiAoU2NyaXB0V3Jh
cHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBN
YWluV29ybGQpCisgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBhYmxlOjpnZXRXcmFwcGVy
RnJvbU9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gbV93cmFwcGVyTWFwLmdldChvYmpl
Y3QpOwogICAgIH0KIApAQCAtMTE5LDggKzEyMCw4IEBACiAgICAgewogICAgICAgICBBU1NFUlQo
ISFvYmplY3QpOwogICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAg
aWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09
IE1haW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3Jh
cHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFi
bGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5X
b3JsZCkgeworICAgICAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVySW5PYmplY3Qo
b2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3JhcHBl
ciwgY29uZmlndXJhdGlvbik7CkBAIC0xMjgsOSArMTI5LDYgQEAKIAogICAgIHN0YXRpYyBET01E
YXRhU3RvcmUqIG1haW5Xb3JsZFN0b3JlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBtYWluV29ybGRX
cmFwcGVySXNTdG9yZWRJbk9iamVjdCh2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0
aWMgYm9vbCBtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChTY3JpcHRXcmFwcGFibGUq
KSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBzdGF0aWMgYm9vbCBpc01haW5Xb3JsZE9iamVjdCh2
b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBpc01haW5Xb3JsZE9iamVj
dChOb2RlKikgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xMzksNiArMTM3LDcgQEAKICAgICB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIb2xk
ZXJDb250YWluZXI+CiAgICAgc3RhdGljIGJvb2wgaG9sZGVyQ29udGFpbnNXcmFwcGVyKGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBTY3JpcHRXcmFwcGFibGUqIHdyYXBwYWJsZSkK
ICAgICB7CkBAIC0xNDcsMjUgKzE0Niw2IEBACiAgICAgICAgIHJldHVybiBjb250YWluZXIuSG9s
ZGVyKCkgPT0gd3JhcHBhYmxlLT53cmFwcGVyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZyb21PYmplY3Qodm9pZCopCi0gICAgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKTsKLSAgICB9Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0
V3JhcHBlckZyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCi0gICAgewotICAgICAg
ICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0
V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSosIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qo
U2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQotICAgIHsKLSAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIGlzb2xh
dGUsIGNvbmZpZ3VyYXRpb24pOwotICAgIH0KLQogICAgIFdyYXBwZXJXb3JsZFR5cGUgbV90eXBl
OwogICAgIERPTVdyYXBwZXJNYXA8dm9pZD4gbV93cmFwcGVyTWFwOwogfTsKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV3JhcHBlclR5cGVJbmZvLmgJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIEFjdGl2ZURPTU9iamVjdDsKICAgICBjbGFz
cyBET01EYXRhU3RvcmU7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CkBAIC02MSw2ICs2MSw3IEBA
CiAgICAgdHlwZWRlZiBFdmVudFRhcmdldCogKCpUb0V2ZW50VGFyZ2V0RnVuY3Rpb24pKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgdm9pZCogKCpPcGFxdWVSb290Rm9yR0Mp
KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKICAgICB0
eXBlZGVmIHZvaWQgKCpJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlv
bikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICB0eXBlZGVmIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gKCpXcmFwT2JqZWN0RnVuY3Rpb24pKHZvaWQqLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgZW51bSBXcmFwcGVyVHlwZVBy
b3RvdHlwZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLApAQCAtNzYsOCAr
NzcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
cmFwcGVyVHlwZUluZm8qPih2ODo6RXh0ZXJuYWw6OkNhc3QoKnR5cGVJbmZvV3JhcHBlciktPlZh
bHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAKKwogICAgICAgICBib29sIGVx
dWFscyhjb25zdCBXcmFwcGVyVHlwZUluZm8qIHRoYXQpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiB0aGlzID09IHRoYXQ7CkBAIC05MiwxNSArOTIsMTggQEAKIAogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1
bmN0aW9uKGlzb2xhdGUsIHdvcmxkVHlwZSk7IH0KLSAgICAgICAgCisKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZGVyZWZPYmplY3RGdW5jdGlvbikgCisgICAgICAgICAgICBpZiAo
ZGVyZWZPYmplY3RGdW5jdGlvbikKICAgICAgICAgICAgICAgICBkZXJlZk9iamVjdEZ1bmN0aW9u
KG9iamVjdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90bywg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpbnN0YWxs
UGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbikKQEAgLTEzNiw2ICsxMzksNyBA
QAogICAgICAgICBjb25zdCBJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5j
dGlvbiBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbjsKICAgICAg
ICAgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBwYXJlbnRDbGFzczsKICAgICAgICAgY29uc3QgV3Jh
cHBlclR5cGVQcm90b3R5cGUgd3JhcHBlclR5cGVQcm90b3R5cGU7CisgICAgICAgIGNvbnN0IFdy
YXBPYmplY3RGdW5jdGlvbiB3cmFwT2JqZWN0RnVuY3Rpb247CiAgICAgfTsKIAogICAgIGlubGlu
ZSB2b2lkKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FbGVtZW50
Q29uc3RydWN0b3JDdXN0b20uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsMTIgQEAKICAg
ICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGltcGwtPmNyZWF0ZUVsZW1lbnQoKTsKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIHJldHVybiBW
OEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxlbWVudC5nZXQoKSwgYXJncy5Ib2xkZXIoKSwgaW1wbCwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiBWOEN1c3RvbUVsZW1lbnQ6OndyYXAoZWxl
bWVudC5nZXQoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCit2b2lk
IHNjcmlwdHdyYXBwYWJsZV9pbml0Q3VzdG9tKFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0KQorewor
ICAgIG9iamVjdC0+c2V0VHlwZUluZm8oJlY4Q3VzdG9tRWxlbWVudDo6aW5mbyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAgIH0KICAgICBS
ZWZQdHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
cG9pbnQucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCks
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwog
fQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNh
bGwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAg
IFJlZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4
QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVk
aW9Db250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogICAg
IAogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3Ig
dGhlIGF1ZGlvIGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
YXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVsZWFzZSgpLmdldCgp
LCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpp
bmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4SFRN
TEltYWdlRWxlbWVudDo6ZGVyZWZPYmplY3QsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6dG9FdmVu
dFRhcmdldCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlw
ZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlw
ZUluZm8gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjhIVE1MSW1hZ2VFbGVtZW50OjpkZXJl
Zk9iamVjdCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50Ojp0b0V2ZW50VGFyZ2V0LCAwLCBWOEhUTUxJ
bWFnZUVsZW1lbnQ6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3Jh
cHBlclR5cGVPYmplY3RQcm90b3R5cGUsIDAgfTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvck1ldGhvZEN1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewpAQCAtNzcsNyArNzcsNyBAQAogCiAgICAgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1
Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCks
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLmdldCgpLCAmVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0K
IApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgUmVmUHRyPERPTUZvcm1EYXRhPiBkb21Gb3Jt
RGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwor
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEu
cmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxB
bGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0
aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVy
LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw4IEBACiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoU1ZHRWxlbWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAgICByZXR1cm4gY3JlYXRlVjhT
VkdXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgY29uc3QgV3Jh
cHBlclR5cGVJbmZvKiBpbmZvID0gU2NyaXB0V3JhcHBhYmxlOjpnZXRUeXBlSW5mb0Zyb21PYmpl
Y3QoaW1wbCk7CisgICAgcmV0dXJuIGluZm8tPndyYXBPYmplY3RGdW5jdGlvbihpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDggQEAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChIVE1MRWxlbWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAgICByZXR1cm4gY3JlYXRlVjhI
VE1MV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGNvbnN0IFdy
YXBwZXJUeXBlSW5mbyogaW5mbyA9IFNjcmlwdFdyYXBwYWJsZTo6Z2V0VHlwZUluZm9Gcm9tT2Jq
ZWN0KGltcGwpOworICAgIHJldHVybiBpbmZvLT53cmFwT2JqZWN0RnVuY3Rpb24oaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogI2lmIEVOQUJMRShNSUNST0RBVEEpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBSZWZQdHI8TXV0YXRpb25DYWxs
YmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj46OkNhc3QoYXJnKSwgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2Jz
ZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7
CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5y
ZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3Vz
dG9tLmgJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBh
cmdzLkhvbGRlcigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJy
YXkuZ2V0KCktPmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFz
ZSgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRp
b246OkluZGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGFycmF5LnJlbGVhc2UoKS5nZXQoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwor
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFz
ZSgpLmdldCgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw3ICs2MSw3IEBACiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxI
dHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmln
aW4pOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBS
ZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCShyZXZpc2lvbiAxNDYz
MzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0
Niw3IEBACiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0
b3JDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotCiAgICAg
UmVmUHRyPE1lc3NhZ2VDaGFubmVsPiBvYmogPSBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKGNvbnRl
eHQpOwotCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwogCiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgZnJvbSB0aGUgTWVzc2FnZUNoYW5uZWwgd3Jh
cHBlciB0byB0aGUgdHdvCkBAIC01Niw4ICs1NCw3IEBACiAgICAgLy8gc3RheSBhbGl2ZSBhcyBs
b25nIGFzIHRoZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVyIGlzIGFyb3VuZC4KICAgICBWOEhpZGRl
blByb3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQxIiwg
dG9WOChvYmotPnBvcnQxKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAg
ICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIs
ICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xh
dGUoKSkpOwotCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihv
YmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1
cm4gd3JhcHBlcjsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVu
dC5oCShyZXZpc2lvbiAxNDUwMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhIVE1MQ3VzdG9tRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw3IEBACiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChIVE1M
RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSopOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihIVE1MRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29s
YXRlKik7CiB9OwogCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEN1c3RvbUVs
ZW1lbnQ6OnRvVjgoSFRNTEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEN1c3RvbUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEN1c3RvbUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDdXN0b21FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAK
ICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnQuaCIKLQorI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJWOFNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50SGVs
cGVycy5oIgogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKQEAgLTQyLDIwICs0MywyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVyKFBhc3NS
ZWZQdHI8RWxlbWVudD4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCisKK1dyYXBwZXJUeXBlSW5mbyBWOEN1c3RvbUVsZW1lbnQ6Omlu
Zm8gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCBy
ZWludGVycHJldF9jYXN0PFdyYXBPYmplY3RGdW5jdGlvbj4oVjhDdXN0b21FbGVtZW50OjpjcmVh
dGVXcmFwcGVyKSB9OworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4Q3VzdG9tRWxlbWVudDo6
Y3JlYXRlV3JhcHBlcihFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwpOwog
CisgICAgLy8gT1dXV1dXIC4uLiBuZWVkIHRvIG1ha2UgdGhpcyBjaGVjayBhdCBzY3JpcHR3cmFw
cGFibGUgaW5pdCB0aW1lLiAgCisKICAgICAvLyBUaGUgY29uc3RydWN0b3IgYW5kIHJlZ2lzdGVy
ZWQgbGlmZWN5Y2xlIGNhbGxiYWNrcyBzaG91bGQgYmUgdmlzaWJsZSBvbmx5IGZyb20gbWFpbiB3
b3JsZC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBj
dXN0b20gZWxlbWVudCBoYXMgaXRzIG93biBGdW5jdGlvblRlbXBsYXRlCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODEzOAogICAgIGlmICghQ3VzdG9t
RWxlbWVudEhlbHBlcnM6OmlzRmVhdHVyZUFsbG93ZWQoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlv
bkNvbnRleHQoKSkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJlY4SFRNTEVsZW1l
bnQ6OmluZm8sIGltcGwuZ2V0KCksIGlzb2xhdGUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250
ZXh0LCAmVjhIVE1MRWxlbWVudDo6aW5mbywgaW1wbCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZWOEhUTUxFbGVtZW50OjppbmZvLCB3cmFwcGVyLCBpc29s
YXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAgICAgfQogCisgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29u
c3RydWN0b3IgPSBWOEN1c3RvbUVsZW1lbnQ6OmNvbnN0cnVjdG9yT2YoaW1wbCk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KGNvbnN0
cnVjdG9yLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmIChjb25zdHJ1
Y3RvclZhbHVlLklzRW1wdHkoKSB8fCAhY29uc3RydWN0b3JWYWx1ZS0+SXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKQEAgLTY1LDcgKzcyLDcgQEAK
ICAgICBpZiAoIXR5cGVJbmZvKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PigpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgdHlwZUluZm8sIGltcGwuZ2V0KCksIGlz
b2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBsLCBpc29sYXRl
KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NS
ZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpzV29y
a2VyQ29udGV4dCwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG1fd29ya2VyQ29u
dGV4dCwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29udGV4dCwgbV9pc29sYXRlLCBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKIAogICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3Rh
bmNlIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KG1fY29udGV4dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmgJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQAogICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0
ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFdyYXBwZXJU
eXBlSW5mbyosIHZvaWQqLCB2ODo6SXNvbGF0ZSopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBhc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+LCBXcmFwcGVyVHlwZUluZm8qLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpMaWZldGltZSk7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBhc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihUKiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6TGlm
ZXRpbWUpOwogICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TmF0aXZlSW5mbyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKik7CiAgICAgICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBjbGVhck5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3Jh
cHBlclR5cGVJbmZvKik7CiAKQEAgLTg5LDEyICs4OSwxMyBAQAogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwg
V3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRp
bWUpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihUKiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQogICAgIHsKLSAgICAgICAgc2V0
TmF0aXZlSW5mbyh3cmFwcGVyLCB0eXBlLCBvYmplY3QuZ2V0KCkpOworICAgICAgICBvYmplY3Qt
PnJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBmdW5jdGlvbiBmcm9tIFdyYXBwZXJUeXBlSW5m
by4KKyAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0eXBlLCBvYmplY3QpOwogICAgICAg
ICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdyYXBwZXIpKTsKLSAgICAgICAgV3JhcHBlckNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24ob2JqZWN0
LmdldCgpLCBsaWZldGltZSk7Ci0gICAgICAgIERPTURhdGFTdG9yZTo6c2V0V3JhcHBlcihvYmpl
Y3QubGVha1JlZigpLCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKKyAgICAgICAg
V3JhcHBlckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGJ1aWxkV3JhcHBlckNvbmZpZ3Vy
YXRpb24ob2JqZWN0LCBsaWZldGltZSk7CisgICAgICAgIERPTURhdGFTdG9yZTo6c2V0V3JhcHBl
cihvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKICAgICB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQxLDcgKzM0MSw3IEBACiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbE9i
amVjdCA9IHRvSW5uZXJHbG9iYWxPYmplY3QobV9jb250ZXh0LmdldCgpKTsKICAgICBWOERPTVdy
YXBwZXI6OnNldE5hdGl2ZUluZm8oaW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5m
bywgd2luZG93KTsKICAgICBpbm5lckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dy
YXBwZXIpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFz
c1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93V3Jh
cHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHdpbmRvdywgJlY4RE9NV2lu
ZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOwogICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93
KGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NyBAQAogCiBXcmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0VHlwZUluZm8oKQogewotICAgIHN0YXRp
YyBXcmFwcGVyVHlwZUluZm8gdHlwZUluZm8gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBw
ZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CisgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gdHlwZUlu
Zm8gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAw
IH07CiAgICAgcmV0dXJuICZ0eXBlSW5mbzsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEhUTUxDdXN0b21FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1MDI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SFRNTEN1c3RvbUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMyArNTQsMTMgQEAKICAgICByZXR1cm4gMDsKIH0KIAot
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEhUTUxDdXN0b21FbGVtZW50OjpjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhIVE1MQ3VzdG9tRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihIVE1MRWxlbWVudCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKIAotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rv
ck9mKGltcGwuZ2V0KCkpOworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNv
bnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb25zdHJ1Y3Rvck9mKGltcGwpOwog
ICAgIGlmICghY29uc3RydWN0b3IpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdy
YXBwZXJWYWx1ZSA9IFdlYkNvcmU6OnRvVjgodG9IVE1MVW5rbm93bkVsZW1lbnQoaW1wbC5nZXQo
KSksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KHRvSFRNTFVua25vd25FbGVtZW50KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZXJWYWx1
ZS5Jc0VtcHR5KCkgJiYgd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkIG9uY2UgZWFjaCBjdXN0b20gZWxlbWVu
dCBoYXMgaXRzIG93biBGdW5jdGlvblRlbXBsYXRlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODEzOAogICAgIGlmICghQ3VzdG9tRWxlbWVudEhlbHBl
cnM6OmlzRmVhdHVyZUFsbG93ZWQoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSkp
IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJlY4SFRNTEVsZW1lbnQ6OmluZm8sIGlt
cGwuZ2V0KCksIGlzb2xhdGUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmVjhIVE1M
RWxlbWVudDo6aW5mbywgaW1wbCwgaXNvbGF0ZSk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCiAgICAgICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwsICZWOEhUTUxFbGVtZW50OjppbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC04
NSw3ICs4NSw3IEBACiAgICAgaWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBp
bXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCB0eXBlSW5mbywg
aW1wbCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0J
KHdvcmtpbmcgY29weSkKQEAgLTUwNCwxMyArNTA0LDExIEBACiAKICAgICBteSAkbm9Ub1Y4ID0g
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHByZXNzVG9KU09iamVjdCJ9Owog
ICAgIG15ICRub1dyYXAgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhOb1dy
YXBwZXJDYWNoZSJ9IHx8ICRub1RvVjg7Ci0gICAgaWYgKCEkbm9XcmFwKSB7Ci0gICAgICAgIG15
ICRjcmVhdGVXcmFwcGVyQXJndW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUoJG5hdGl2ZVR5
cGUpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCA8PEVORCkgaWYgISRub1dyYXA7CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRlV3JhcHBlcigke2NyZWF0ZVdyYXBwZXJBcmd1bWVudFR5cGV9LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKCR7bmF0aXZlVHlwZX0q
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsK
IEVORAotICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CkBAIC01
NDYsNyArNTQ0LDYgQEAKIH0KIEVORAogICAgIH0gZWxzZSB7Ci0KICAgICAgICAgbXkgJGNyZWF0
ZVdyYXBwZXJDYWxsID0gJGN1c3RvbVdyYXAgPyAiJHt2OEludGVyZmFjZU5hbWV9Ojp3cmFwIiA6
ICIke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIiOwogICAgICAgICBteSAkcmV0dXJu
aW5nV3JhcHBlciA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOFdyYXBBc0Z1
bmN0aW9uIn0gPyAiVjhET01XcmFwcGVyOjp0b0Z1bmN0aW9uKHdyYXBwZXIpIiA6ICJ3cmFwcGVy
IjsKICAgICAgICAgbXkgJHJldHVybmluZ0NyZWF0ZWRXcmFwcGVyT3BlbmluZyA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOFdyYXBBc0Z1bmN0aW9uIn0gPyAiVjhET01XcmFw
cGVyOjp0b0Z1bmN0aW9uKCIgOiAiIjsKQEAgLTU2NCw2ICs1NjEsMTAgQEAKIHsKICAgICBBU1NF
UlQoaW1wbCk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29s
YXRlKS5Jc0VtcHR5KCkpOworICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0
b3JlZEluT2JqZWN0KGltcGwpKSB7CisgICAgICAgIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5m
byA9IFNjcmlwdFdyYXBwYWJsZTo6Z2V0VHlwZUluZm9Gcm9tT2JqZWN0KGltcGwpOworICAgICAg
ICByZXR1cm4gaW5mby0+d3JhcE9iamVjdEZ1bmN0aW9uKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CisgICAgfQogICAgIHJldHVybiAke3JldHVybmluZ0NyZWF0ZWRXcmFwcGVyT3Bl
bmluZ30kY3JlYXRlV3JhcHBlckNhbGwoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKSR7
cmV0dXJuaW5nQ3JlYXRlZFdyYXBwZXJDbG9zaW5nfTsKIH0KIEVORApAQCAtMjEwMCw3ICsyMTAx
LDcgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCA8PEVORCk7CiAKLSAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
Vjgke2ludGVyZmFjZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKS5nZXQoKSwgJlY4JHtpbnRlcmZhY2VO
YW1lfTo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0
aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTIxNzAsNyAr
MjE3MSw3IEBACiAgICAgUmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZh
Y2VOYW1lfTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgpLCAmVjgke2ludGVyZmFjZU5hbWV9
OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihldmVudC5yZWxlYXNlKCkuZ2V0KCksICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIEVORApAQCAtMjI1Niw3ICsyMjU3LDcgQEAKIAogICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8
RU5EKTsKLVdyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5m
byA9IHsgJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCAke3Y4SW50
ZXJmYWNlTmFtZX06OmRlcmVmT2JqZWN0LCAkdG9BY3RpdmVET01PYmplY3QsICR0b0V2ZW50VGFy
Z2V0LCAwLCAke3Y4SW50ZXJmYWNlTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5m
byAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgJHt2OEludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCAke3Y4SW50ZXJmYWNlTmFtZX06OmRlcmVmT2Jq
ZWN0LCAkdG9BY3RpdmVET01PYmplY3QsICR0b0V2ZW50VGFyZ2V0LCAwLCAke3Y4SW50ZXJmYWNl
TmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5
cGVPYmplY3RQcm90b3R5cGUsIDAgfTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAk
e3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CkBAIC0yMzE0LDcgKzIzMTUsNyBAQAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxl
YXNlKCkuZ2V0KCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTI3NjAsNiArMjc2MSw3IEBACiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkJpbmRpbmdTdGF0ZS5oIik7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkNvbnRleHRGZWF0dXJlcy5oIik7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRXcmFwcGFibGUu
aCIpOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEJpbmRpbmcuaCIpOwogICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJWOERPTVdyYXBwZXIuaCIpOwogCkBAIC0yODIwLDE2ICsyODIyLDQxIEBACiAK
IEVORAogCi0KICAgICBteSAkcGFyZW50Q2xhc3NJbmZvID0gJHBhcmVudENsYXNzID8gIiYke3Bh
cmVudENsYXNzfTo6aW5mbyIgOiAiMCI7Ci0KICAgICBteSAkV3JhcHBlclR5cGVQcm90b3R5cGUg
PSAkaW50ZXJmYWNlLT5pc0V4Y2VwdGlvbiA/ICJXcmFwcGVyVHlwZUVycm9yUHJvdG90eXBlIiA6
ICJXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSI7CisgICAgbXkgJG5vV3JhcCA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOE5vV3JhcHBlckNhY2hlIn0gfHwgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHByZXNzVG9KU09iamVjdCJ9OworICAgIG15ICR3
cmFwcGVyRnVuY3Rpb24gPSAkbm9XcmFwID8gIjAiIDogInJlaW50ZXJwcmV0X2Nhc3Q8V3JhcE9i
amVjdEZ1bmN0aW9uPigke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIpIjsKIAotICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiV3JhcHBlclR5cGVJbmZvICR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5mbyA9IHsgJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSwgJHt2OElu
dGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRh
cmdldCwgJHJvb3RGb3JHQywgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXMsICRwYXJlbnRDbGFzc0luZm8sICRXcmFwcGVyVHlwZVByb3RvdHlw
ZSB9O1xuXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIm5hbWVzcGFjZSAk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbCB7XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCA8PEVORCk7CitXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Ojpp
bmZvID0geyAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlLCAke3Y4SW50ZXJmYWNlTmFt
ZX06OmRlcmVmT2JqZWN0LCAkdG9BY3RpdmVET01PYmplY3QsICR0b0V2ZW50VGFyZ2V0LCAkcm9v
dEZvckdDLCAke3Y4SW50ZXJmYWNlTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcywgJHBhcmVudENsYXNzSW5mbywgJFdyYXBwZXJUeXBlUHJvdG90eXBlLCAke3dyYXBw
ZXJGdW5jdGlvbn0gfTsKIAotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAidGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfVxuXG4iKTsKK0VORAorICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCA8PEVORCkgaWYgISRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5
cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlTmFtZSk7Cit2b2lkIHNjcmlwdHdyYXBwYWJsZV9p
bml0KCR7aW50ZXJmYWNlTmFtZX0qIG9iamVjdCkKK3sKKyAgICBpZiAoU2NyaXB0V3JhcHBhYmxl
Ojp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3QpKQorICAgICAgICBTY3JpcHRXcmFw
cGFibGU6OnNldFR5cGVJbmZvSW5PYmplY3Qob2JqZWN0LCAmJHt2OEludGVyZmFjZU5hbWV9Ojpp
bmZvKTsKK30KIAorLy8gRE8gTk9UIENJLiAgQW5ub3lhbmNlIGdlbmVyYXRvciB0byBpZGVudGlm
eSB3cmFwcGFibGUgY2xhc3NlcyBmcm9tIGNvbXBpbGVyLCBvaC4KKy8vIHN0cnVjdCBDaGVjayR7
aW50ZXJmYWNlTmFtZX0geworLy8gICAgQ2hlY2ske2ludGVyZmFjZU5hbWV9KCkKKy8vICAgIHsK
Ky8vICAgICAgICBpZiAoU2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVj
dCgoJHtpbnRlcmZhY2VOYW1lfSopMCkpCisvLyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
REVSUDogJHtpbnRlcmZhY2VOYW1lfSBpcyAke25hdGl2ZVR5cGV9XFxuIik7CisvLyAgICB9Cisv
LyB9OworLy8gc3RhdGljIENoZWNrJHtpbnRlcmZhY2VOYW1lfSBjaGVja18ke2ludGVyZmFjZU5h
bWV9OworCitFTkQKKworICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCA8PEVORCk7Citu
YW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CisKK0VORAorCiAgICAgbXkgJGhhc0NvbnN0cnVjdG9y
cyA9IDA7CiAgICAgbXkgJGhhc1JlcGxhY2VhYmxlID0gMDsKIApAQCAtMzY1NSwyMiArMzY4Miwy
MiBAQAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiAke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIoJHtjcmVhdGVXcmFwcGVy
QXJndW1lbnRUeXBlfSBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7djhJbnRl
cmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlcigke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgQVNTRVJUKGltcGwuZ2V0KCkpOwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXIoaW1wbC5nZXQoKSwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoaW1wbCk7Cisg
ICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5Jc0VtcHR5
KCkpOwogRU5ECiAKICAgICBteSAkdnRhYmxlTmFtZUdudSA9IEdldEdudVZUYWJsZU5hbWVGb3JJ
bnRlcmZhY2UoJGludGVyZmFjZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAk
dnRhYmxlTmFtZUdudTsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjaGVj
a1R5cGVPckRpZVRyeWluZyhpbXBsLmdldCgpKTsKKyAgICBjaGVja1R5cGVPckRpZVRyeWluZyhp
bXBsKTsKICNlbmRpZgogRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpIGlmICgk
YmFzZVR5cGUgbmUgJGludGVyZmFjZU5hbWUpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8JHtiYXNlVHlwZX0qPihpbXBsLmdldCgpKSkgPT0gc3RhdGljX2Nhc3Q8
dm9pZCo+KGltcGwuZ2V0KCkpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PCR7YmFzZVR5cGV9Kj4oaW1wbCkpID09IHN0YXRpY19jYXN0PHZvaWQqPihpbXBsKSk7
CiBFTkQKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVy
ZmFjZSwgIkRvY3VtZW50IikpIHsKQEAgLTM2NzgsNyArMzcwNSw3IEBACiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5zY3JpcHQoKS0+
aW5pdGlhbGl6ZU1haW5Xb3JsZCgpKSB7CiAgICAgICAgICAgICAvLyBpbml0aWFsaXplTWFpbldv
cmxkIG1heSBoYXZlIGNyZWF0ZWQgYSB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LCByZXRyeSBmcm9t
IHRoZSBzdGFydC4KLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihpbXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlcihpbXBsLCBpc29sYXRlKTsKICAgICAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgICAgIH0KQEAgLTM2ODgsMTEg
KzM3MTUsMTEgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIo
Y3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNy
ZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwsIGlzb2xhdGUpOwogICAgIGlmIChVTkxJS0VMWSh3
cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOworICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLCBpc29sYXRlKTsKICAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3
cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0
aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAg
IHJldHVybiB3cmFwcGVyOwogfQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxMCBAQAogICAgIGJvb2wgdmFsaWQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
Y29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkgeyB9CisgICAgVmFsaWRpdHlTdGF0ZShGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpCisgICAgewor
ICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAgfQogCiAgICAgRm9ybUFz
c29jaWF0ZWRFbGVtZW50KiBtX2NvbnRyb2w7CiB9OwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAgICAgOiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQ
YXJzZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXVkaW9UYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4g
SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93
bkVsZW1lbnQuaAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAKICAgICBIVE1MVW5rbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIH0KIH07CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogSFRNTEFsbENv
bGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0aW9uKE5vZGUqIG5vZGUsIENvbGxlY3Rpb25UeXBlIHR5
cGUpCiAgICAgOiBIVE1MQ29sbGVjdGlvbihub2RlLCB0eXBlLCBEb2VzTm90T3ZlcnJpZGVJdGVt
QWZ0ZXIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBIVE1MQWxs
Q29sbGVjdGlvbjo6fkhUTUxBbGxDb2xsZWN0aW9uKCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkocmV2aXNpb24g
MTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBACiAgICAgOiBTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCB0eXBlKQogewogICAgIEFTU0VSVCh0YWdOYW1lLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIGlubGluZSBI
VE1MUHJlRWxlbWVudDo6SFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
NyBAQAogICAgICwgbV9wYWRkaW5nKDEpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGFibGVU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogICAgIDogSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMsIE92
ZXJyaWRlc0l0ZW1BZnRlcikKIHsKICAgICBBU1NFUlQob3duZXJOb2RlLT5oYXNUYWdOYW1lKGZv
cm1UYWcpIHx8IG93bmVyTm9kZS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbj4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShOb2RlKiBvd25l
ck5vZGUsIENvbGxlY3Rpb25UeXBlKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsaVRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
TElFbGVtZW50PiBIVE1MTElFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBpbmxpbmUgSFRNTERhdGFMaXN0RWxl
bWVudDo6SFRNTERhdGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TERhdGFMaXN0RWxlbWVudD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NiArNTYsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUobGFiZWxUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTExhYmVsRWxlbWVudD4gSFRNTExhYmVsRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBlKE5v
bmUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGlua1RhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxM
aW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcg
QEAKICNlbmRpZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50
PiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAsIG1fbm9yZXNpemUoZmFsc2UpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKTsKLSAgICAKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKIH0K
IApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX3NoYXBlKFVua25vd24pCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoYXJlYVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IEhUTUxBcmVhRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXln
ZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogICAgIDogSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZSh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShrZXlnZW5UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAKICAgICAvLyBDcmVhdGUgYSBzZWxlY3QgZWxlbWVudCB3aXRoIG9uZSBvcHRpb24gZWxlbWVu
dCBmb3IgZWFjaCBrZXkgc2l6ZS4KICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSGVhZGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBpbmxpbmUgSFRNTEhlYWRpbmdFbGVtZW50OjpIVE1M
SGVhZGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxIZWFkaW5nRWxl
bWVudD4gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShkaXJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IEhUTUxEaXJlY3RvcnlF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgLCBTY3JpcHRFbGVt
ZW50KHRoaXMsIHdhc0luc2VydGVkQnlQYXJzZXIsIGFscmVhZHlTdGFydGVkKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHNjcmlwdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVv
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIGlmIChkb2N1bWVu
dC0+c2V0dGluZ3MoKSkKICAgICAgICAgbV9kZWZhdWx0UG9zdGVyVVJMID0gZG9jdW1lbnQtPnNl
dHRpbmdzKCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpOwogfQpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw2ICs2NCw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2JqZWN0VGFnKSk7CiAgICAg
c2V0Rm9ybShmb3JtID8gZm9ybSA6IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBpbmxpbmUgSFRNTE9iamVjdEVsZW1lbnQ6On5IVE1M
T2JqZWN0RWxlbWVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKIGlubGluZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6SFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogSFRNTFRhYmxlUGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoZGl2VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xp
c3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgICwgbV9z
aG91bGRSZWNhbGN1bGF0ZUl0ZW1Db3VudChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShvbFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAgOiBMaXZlTm9kZUxpc3Qocm9vdE5v
ZGUsIFJhZGlvTm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzLCByb290Tm9k
ZS0+aGFzVGFnTmFtZShmb3JtVGFnKSA/IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50IDogTm9k
ZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3Qo
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3BhbkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzcGFuVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4g
SFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUob3B0aW9uVGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxs
YmFja3MoKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShoclRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBI
VE1MSFJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw2ICs5NCw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGV4dGFyZWFU
YWcpKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGV4dEFy
ZWFFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUtleUV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDcgQEAKIAogTWVkaWFLZXlFdmVudDo6TWVkaWFLZXlFdmVudCgpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYUtleUV2ZW50OjpNZWRp
YUtleUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlFdmVudElu
aXQmIGluaXRpYWxpemVyKQpAQCAtNTMsNiArNTQsNyBAQAogICAgICwgbV9lcnJvckNvZGUoaW5p
dGlhbGl6ZXIuZXJyb3JDb2RlKQogICAgICwgbV9zeXN0ZW1Db2RlKGluaXRpYWxpemVyLnN5c3Rl
bUNvZGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYUtl
eUV2ZW50Ojp+TWVkaWFLZXlFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICAgICAsIG1fZGVmYXVsdFZhbHVlKCIiKQogICAgICwgbV90b2tlbnMoRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OmNyZWF0ZSgpKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MT3V0cHV0RWxlbWVudD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxG
b3JtRWxlbWVudCogZm9ybSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogewogICAg
IExPRyhNZWRpYSwgIkhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudCAtICVwIiwg
dGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc291cmNlVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTb3VyY2VFbGVtZW50PiBI
VE1MU291cmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogICAgIDogTGFi
ZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShtZXRlclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRN
TE1ldGVyRWxlbWVudDo6fkhUTUxNZXRlckVsZW1lbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShtZXRhVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw2ICs0Niw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShib2R5VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShxVGFnKSB8fCBoYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFF1b3RlRWxl
bWVudD4gSFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoY2FwdGlvblRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4g
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAK
ICAgICAsIG1fbGlua1JlbGF0aW9ucygwKQogICAgICwgbV9jYWNoZWRWaXNpdGVkTGlua0hhc2go
MCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTEFuY2hvckVsZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBACiAgICAgLCBtX2RpZENsZWFy
SW1hZ2VCdWZmZXIoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoY2FudmFzVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1w
bGF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogaW5saW5lIEhUTUxUZW1w
bGF0ZUVsZW1lbnQ6OkhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBIVE1MVGVt
cGxhdGVFbGVtZW50Ojp+SFRNTFRlbXBsYXRlRWxlbWVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKG1hcFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJhc2VGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGJhc2Vmb250VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxCYXNlRm9udEVsZW1lbnQ+IEhUTUxCYXNlRm9udEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJhc2VUYWcpKTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBIVE1M
QmFzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIGlu
bGluZSBIVE1MVGFibGVDZWxsRWxlbWVudDo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTFRhYmxl
UGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogICAgIDogSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxlY3RPcHRpb25zLCBEb2VzTm90T3Zl
cnJpZGVJdGVtQWZ0ZXIpCiB7CiAgICAgQVNTRVJUKHNlbGVjdC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlbGVjdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
Y3JlYXRlKE5vZGUqIHNlbGVjdCwgQ29sbGVjdGlvblR5cGUpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDcgQEAKICAgICAsIEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCwgdGhpcykKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShtYXJxdWVlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gSFRNTE1h
cnF1ZWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMz
NSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAgICAgLCBtX3Njb3Bl
ZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUoTm90UmVnaXN0ZXJlZCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShzdHlsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogSFRNTFN0eWxlRWxlbWVudDo6fkhUTUxTdHlsZUVsZW1lbnQoKQpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw3IEBACiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRy
YWNrRWxlbWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJhY2tUYWcp
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxUcmFja0VsZW1l
bnQ6On5IVE1MVHJhY2tFbGVtZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEh0bWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
aHRtbFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogSFRNTFBsdWdJbklt
YWdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyLCBTaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGVtYmVkVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxF
bWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJhbVRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBI
VE1MUGFyYW1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDggQEAKICAgICAgICAg
ICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnND
YXB0aW9ucygpOwogICAgIH0KICNlbmRpZgorCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExlZ2VuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxlZ2VuZFRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4g
SFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGlhbG9nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGRpYWxvZ1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MRGlhbG9nRWxlbWVudD4gSFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw2ICsxMzksNyBAQAogI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkp
CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKTsKICNlbmRpZgorICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
bnVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZW51VGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVu
dD4gSFRNTE1lbnVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw2ICs0NSw3IEBACiAgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2hhZG93RWxl
bWVudD4gSFRNTFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAKICAgICAsIG1fc2hvdWxkUGFyc2VTZWxlY3Rvckxpc3Qo
ZmFsc2UpCiAgICAgLCBtX2lzVmFsaWRTZWxlY3Rvcih0cnVlKQogeworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpCisgICAgICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRNTENvbnRlbnRFbGVtZW50Ojp+SFRNTENvbnRlbnRF
bGVtZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYz
MzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDogSFRN
TFRhYmxlUGFydEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUodHJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogaW5saW5lIEhUTUxN
b2RFbGVtZW50OjpIVE1MTW9kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TE1vZEVsZW1lbnQ+IEhUTUxNb2RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
CiAgICAgLCBtX2NvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoaW1nVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIGlmIChmb3JtKQogICAgICAgICBmb3JtLT5yZWdpc3RlckltZ0VsZW1lbnQodGhp
cyk7CiB9CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykKICAgICA6IG1fY2FudmFzKGNhbnZh
cykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIGJvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJuKiBw
YXR0ZXJuKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCShyZXZp
c2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCArMzgs
MjEgQEAKIAogV2ViR0xDb250ZXh0RXZlbnQ6OldlYkdMQ29udGV4dEV2ZW50KCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYkdMQ29udGV4dEV2ZW50OjpXZWJH
TENvbnRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVzTWVzc2FnZSkKICAgICA6IEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fc3RhdHVzTWVzc2FnZShzdGF0
dXNNZXNzYWdlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2Vi
R0xDb250ZXh0RXZlbnQ6OldlYkdMQ29udGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgV2ViR0xDb250ZXh0RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50
KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9zdGF0dXNNZXNzYWdlKGluaXRpYWxpemVyLnN0
YXR1c01lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBX
ZWJHTENvbnRleHRFdmVudDo6fldlYkdMQ29udGV4dEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw4IEBACiAgICAgLCBt
X251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUp
CiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOworCiAgICAgbV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7
CiAgICAgbV9jb250ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CiAKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxNDYz
MzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3
IEBACiAjaWYgIUVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBBU1NFUlRfVU5VU0VEKHVz
ZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5
TW9kZSk7CiAjZW5kaWYKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp1bndpbmRTdGF0ZVN0YWNrKCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV92YWx1ZSgwKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHByb2dyZXNzVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojp+SFRNTFByb2dyZXNzRWxlbWVudCgp
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC0zMzIsNiArMzM0LDExIEBA
CiAgICAgfSBlbHNlIGlmIChuYW1lID09IG9ud2Via2l0ZnVsbHNjcmVlbmVycm9yQXR0cikgewog
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxs
c2NyZWVuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1l
LCB2YWx1ZSkpOwogI2VuZGlmCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gaXNBdHRyKSB7CisgICAgICBpZiAoZG9jdW1lbnQoKS0+cmVnaXN0cnko
KS0+ZmluZEZvcih0aGlzKSkKKyAgICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXRDdXN0b20o
dGhpcyk7CisjZW5kaWYKICAgICB9CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUodGl0bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgbV9mcmFtZUJvcmRlclNldChmYWxzZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShmcmFtZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkK
KysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgLCBtX2RvY3Vt
ZW50VmVyc2lvbigwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGaWVs
ZFNldEVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaGVhZFRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhU
TUxIZWFkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoYnJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQAogICAgICwgbV9z
aG91bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2Vs
ZWN0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxTZWxlY3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgOiBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZE5v
dFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXBwbGV0
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogCiAgICAgbV9zZXJ2aWNl
VHlwZSA9ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IjsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQAogICAgIDogSFRNTEZyYW1lRWxlbWVudEJhc2UodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CiB9
CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODMsNiArODMsNyBAQAogSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwg
dHJ1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgY2xlYXJYTUxW
ZXJzaW9uKCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhZ3JhcGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUocFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwg
bV9zcGFuKDEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHVsVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlz
dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAKICAgICAsIG1faXNBY3RpdmF0ZWRTdWJtaXQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoYnV0dG9uVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxETGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAg
ICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShkbFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MRExpc3RFbGVtZW50PiBIVE1MRExpc3RFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQs
NiArMTg0LDcgQEAKICAgICA6IExpdmVOb2RlTGlzdEJhc2Uob3duZXJOb2RlLCByb290VHlwZUZy
b21Db2xsZWN0aW9uVHlwZSh0eXBlKSwgaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFt
ZUF0dHJpYnV0ZXModHlwZSksCiAgICAgICAgIFdlYkNvcmU6OnNob3VsZE9ubHlJbmNsdWRlRGly
ZWN0Q2hpbGRyZW4odHlwZSksIHR5cGUsIGl0ZW1BZnRlck92ZXJyaWRlVHlwZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUoTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlw
ZSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDE0IEBACiAKIFRyYWNrRXZlbnQ6OlRyYWNrRXZl
bnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJhY2tFdmVu
dDo6VHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFRyYWNrRXZlbnRJ
bml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwg
bV90cmFjayhpbml0aWFsaXplci50cmFjaykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFRyYWNrRXZlbnQ6On5UcmFja0V2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFp
bHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDYgKzEwMyw3IEBACiAgICAgLCBtX2lzT3BlbihmYWxzZSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShkZXRhaWxzVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBSZW5kZXJPYmplY3QqIEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGZvbnRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8SFRNTEZvbnRFbGVtZW50PiBIVE1MRm9udEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShv
cHRncm91cFRhZykpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRHcm91cEVs
ZW1lbnQ+IEhUTUxPcHRHcm91cEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CiAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWEpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKICAgICBpZiAobV9zdG9yYWdlQXJlYSkKICAgICAgICAgbV9zdG9yYWdlQXJl
YS0+aW5jcmVtZW50QWNjZXNzQ291bnQoKTsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAko
cmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
CiBTdG9yYWdlRXZlbnQ6OlN0b3JhZ2VFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBTdG9yYWdlRXZlbnQ6On5TdG9yYWdlRXZlbnQoKQpAQCAtNjYsNiAr
NjcsNyBAQAogICAgICwgbV91cmwodXJsKQogICAgICwgbV9zdG9yYWdlQXJlYShzdG9yYWdlQXJl
YSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0b3JhZ2VFdmVu
dDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RvcmFnZUV2
ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC03Niw2ICs3OCw3IEBACiAgICAgLCBtX3VybChpbml0
aWFsaXplci51cmwpCiAgICAgLCBtX3N0b3JhZ2VBcmVhKGluaXRpYWxpemVyLnN0b3JhZ2VBcmVh
KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdl
RXZlbnQ6OmluaXRTdG9yYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0
b3JhZ2UqIHN0b3JhZ2VBcmVhKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCw3IEBACiBCbG9iOjpCbG9iKCkKICAgICA6IG1fc2l6ZSgwKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBPd25QdHI8QmxvYkRhdGE+IGJs
b2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGludGVy
bmFsIFVSTCBhbmQgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgcHJvdmlkZWQgYmxvYiBkYXRhLgpAQCAt
NjYsNiArNjcsNyBAQAogICAgICwgbV9zaXplKHNpemUpCiB7CiAgICAgQVNTRVJUKGJsb2JEYXRh
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAKICAgICAvLyBDcmVhdGUgYSBu
ZXcgaW50ZXJuYWwgVVJMIGFuZCByZWdpc3RlciBpdCB3aXRoIHRoZSBwcm92aWRlZCBibG9iIGRh
dGEuCiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBA
IC03Niw2ICs3OCw4IEBACiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fc2l6ZShzaXplKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKKwogICAgIC8vIENyZWF0ZSBhIG5l
dyBpbnRlcm5hbCBVUkwgYW5kIHJlZ2lzdGVyIGl0IHdpdGggdGhlIHNhbWUgYmxvYiBkYXRhIGFz
IHRoZSBzb3VyY2UgVVJMLgogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRl
cm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgw
LCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIEZpbGVMaXN0OjpGaWxl
TGlzdCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGaWxlKiBG
aWxlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCShyZXZpc2lvbiAx
NDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBACiAgICAgLCBtX3NuYXBzaG90
TW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKICNlbmRpZgogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtMTE0LDYgKzExNSw3
IEBACiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkK
ICNlbmRpZgogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBtX25hbWUg
PSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CiAgICAgLy8gRklYTUU6IEZpbGUgb2JqZWN0IHNlcmlh
bGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIGRvZXMgbm90IGluY2x1ZGUKICAgICAvLyBuZXdlciBm
aWxlIG9iamVjdCBkYXRhIG1lbWJlcnM6IG1fbmFtZSBhbmQgbV9yZWxhdGl2ZVBhdGguCkBAIC0x
MjksNiArMTMxLDcgQEAKICAgICAsIG1fc25hcHNob3RNb2RpZmljYXRpb25UaW1lKGludmFsaWRG
aWxlVGltZSgpKQogI2VuZGlmCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQpAQCAtMTM5LDYgKzE0Miw3IEBACiAgICAgLCBt
X3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0
aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogRmlsZTo6RmlsZShjb25zdCBLVVJMJiBmaWxlU3lzdGVtVVJM
LCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAtMTQ3LDYgKzE1MSw3IEBACiAgICAg
LCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZp
Y2F0aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KICNlbmRpZgogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmgJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5n
TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKIHByb3RlY3RlZDoKICAgICBE
T01TdHJpbmdNYXAoKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIH0KIH07CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVMaXN0LmgJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsMTIgQEAKIAogICAgICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00p
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVOb2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgIHByb3RlY3RlZDoKKyAgICAgICAgTm9kZUxpc3QoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAgICAgIH0KICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICsz
OCwyMSBAQAogUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudCgpCiAgICAg
OiBtX3BlcnNpc3RlZChmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OlBhZ2VUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIHBlcnNpc3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIHRydWUs
IHRydWUpCiAgICAgLCBtX3BlcnNpc3RlZChwZXJzaXN0ZWQpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlv
bkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUGFnZVRyYW5zaXRpb25FdmVu
dEluaXQmIGluaXRpYWxpemVyKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAg
LCBtX3BlcnNpc3RlZChpbml0aWFsaXplci5wZXJzaXN0ZWQpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYWdlVHJhbnNpdGlvbkV2ZW50Ojp+UGFnZVRyYW5zaXRp
b25FdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsNyBAQAogRE9NSW1wbGVtZW50YXRp
b246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBi
b29sIERPTUltcGxlbWVudGF0aW9uOjpoYXNGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShm
YWxzZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlw
ZSBpbnB1dFR5cGUpCkBAIC03Nyw2ICs3OCw3IEBACiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFj
ZShmYWxzZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQ
dHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LApAQCAtODgsNiArOTAsNyBAQAogICAgICwg
bV9zaG91bGRTbWFydFJlcGxhY2Uoc2hvdWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRN
YXRjaFN0eWxlKHNob3VsZE1hdGNoU3R5bGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0Vmll
dz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCkBAIC05OCw2ICsxMDEsNyBAQAogICAgICwg
bV9zaG91bGRNYXRjaFN0eWxlKGZhbHNlKQogICAgICwgbV9kaWN0YXRpb25BbHRlcm5hdGl2ZXMo
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEzLDYgKzYxMyw3IEBACiAgICAgICAgIDogQ29udGFpbmVyTm9kZShkb2N1
bWVudCwgdHlwZSkKICAgICAgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkKICAgICB7CisgICAgICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdh
bGtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlV2Fsa2VyLmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogICAgIDogVHJhdmVyc2FsKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBmaWx0
ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCiAgICAgLCBtX2N1cnJlbnQocm9vdCgpKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBUcmVlV2Fsa2VyOjpz
ZXRDdXJyZW50Tm9kZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob3Rh
dGlvbi5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm90YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAgICAgLCBtX3B1YmxpY0lkKHB1YmxpY0lkKQogICAgICwgbV9zeXN0ZW1JZChzeXN0ZW1JZCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0cmluZyBOb3RhdGlv
bjo6bm9kZU5hbWUoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAgICAgewogICAgICAgICAvLyBPbmx5IHN1cHBv
cnRzIE5hbWVkTm9kZU1hcHMgd2l0aCBFbGVtZW50IGFzc29jaWF0ZWQsIERvY3VtZW50VHlwZS5l
bnRpdGllcyBhbmQgRG9jdW1lbnRUeXBlLm5vdGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQu
CiAgICAgICAgIEFTU0VSVChtX2VsZW1lbnQpOworICAgICAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgfQogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTQgQEAKIERldmljZU9yaWVudGF0aW9uRXZlbnQ6
OkRldmljZU9yaWVudGF0aW9uRXZlbnQoKQogICAgIDogbV9vcmllbnRhdGlvbihEZXZpY2VPcmll
bnRhdGlvbkRhdGE6OmNyZWF0ZSgpKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogRGV2aWNlT3JpZW50YXRpb25FdmVudDo6RGV2aWNlT3JpZW50YXRpb25FdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBvcmll
bnRhdGlvbikKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBi
dWJibGUsIG5vdCBjYW5jZWxhYmxlCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBEZXZpY2VPcmllbnRhdGlv
bkRhdGEqIG9yaWVudGF0aW9uKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGllbnRSZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMTkgQEAKIAogQ2xpZW50UmVjdDo6Q2xpZW50UmVjdCgp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDbGllbnRSZWN0OjpD
bGllbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgOiBtX3JlY3QocmVjdCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIENsaWVudFJlY3Q6OkNsaWVudFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIDogbV9yZWN0KHJlY3QpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFR5cGUuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICAgICAsIG1fcHVibGljSWQocHVibGljSWQpCiAgICAgLCBtX3N5c3RlbUlk
KHN5c3RlbUlkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogS1VS
TCBEb2N1bWVudFR5cGU6OmJhc2VVUkkoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAx
NDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAKICAgICA6IG1fYnV0dG9u
KDApCiAgICAgLCBtX2J1dHRvbkRvd24oZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4gdmlldywKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgICwgbV9yZWxhdGVk
VGFyZ2V0KHJlbGF0ZWRUYXJnZXQpCiAgICAgLCBtX2NsaXBib2FyZChjbGlwYm9hcmQpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYg
aW5pdGlhbGl6ZXIpCkBAIC0xNDAsNiArMTQyLDcgQEAKICAgICAsIG1fcmVsYXRlZFRhcmdldChp
bml0aWFsaXplci5yZWxhdGVkVGFyZ2V0KQogICAgICwgbV9jbGlwYm9hcmQoMCAvKiBjbGlwYm9h
cmQgKi8pCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIGluaXRDb29y
ZGluYXRlcyhJbnRQb2ludChpbml0aWFsaXplci5jbGllbnRYLCBpbml0aWFsaXplci5jbGllbnRZ
KSk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVHJh
bnNpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogVHJhbnNpdGlvbkV2ZW50OjpUcmFuc2l0
aW9uRXZlbnQoKQogICAgIDogbV9lbGFwc2VkVGltZSgwKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJhbnNpdGlvbkV2ZW50OjpUcmFuc2l0aW9uRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91Ymxl
IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCkBAIC00Nyw2ICs0OCw3
IEBACiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKQogICAgICwgbV9wc2V1ZG9FbGVt
ZW50KHBzZXVkb0VsZW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBUcmFuc2l0aW9uRXZlbnQ6OlRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IFRyYW5zaXRpb25FdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtNTUsNiAr
NTcsNyBAQAogICAgICwgbV9lbGFwc2VkVGltZShpbml0aWFsaXplci5lbGFwc2VkVGltZSkKICAg
ICAsIG1fcHNldWRvRWxlbWVudChpbml0aWFsaXplci5wc2V1ZG9FbGVtZW50KQogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJhbnNpdGlvbkV2ZW50Ojp+VHJhbnNp
dGlvbkV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNyBAQAogICAgIDogbV9kZWx0YU1vZGUoRE9NX0RFTFRBX1BJWEVMKQog
ICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2hlZWxFdmVudEluaXQmIGluaXRpYWxpemVyKQpA
QCAtNTAsNyArNTEsNyBAQAogICAgICwgbV93aGVlbERlbHRhKEludFBvaW50KGluaXRpYWxpemVy
LndoZWVsRGVsdGFYLCBpbml0aWFsaXplci53aGVlbERlbHRhWSkpCiAgICAgLCBtX2RlbHRhTW9k
ZShpbml0aWFsaXplci5kZWx0YU1vZGUpCiB7Ci19CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpO30KIAogV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBGbG9hdFBvaW50JiB3aGVl
bFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiByYXdEZWx0YSwgdW5zaWduZWQgZGVsdGFNb2RlLAog
ICAgIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBJbnRQb2ludCYgc2NyZWVu
TG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBwYWdlTG9jYXRpb24sCkBAIC02Nyw2ICs2OCw3IEBA
CiAgICAgLCBtX2RlbHRhTW9kZShkZWx0YU1vZGUpCiAgICAgLCBtX2RpcmVjdGlvbkludmVydGVk
RnJvbURldmljZShkaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2ZW50
KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2
aWV3LApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNiAr
NDk3LDcgQEAKICAgICAsIG1fZm9udGxvYWRlcigwKQogI2VuZGlmCiB7CisgICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdp
bmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCArNTEsMjEgQEAKIAogRm9jdXNFdmVudDo6Rm9jdXNF
dmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGb2N1c0V2
ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBkZXRh
aWwsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCiAgICAgOiBVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQogICAgICwgbV9yZWxh
dGVkVGFyZ2V0KHJlbGF0ZWRUYXJnZXQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgRm9jdXNFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogVUlFdmVudCh0eXBl
LCBpbml0aWFsaXplcikKICAgICAsIG1fcmVsYXRlZFRhcmdldChpbml0aWFsaXplci5yZWxhdGVk
VGFyZ2V0KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxGb2N1c0V2ZW50RGlzcGF0Y2hNZWRpYXRvcj4gRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0
b3I6OmNyZWF0ZShQYXNzUmVmUHRyPEZvY3VzRXZlbnQ+IGZvY3VzRXZlbnQpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKICAgICA6IG1fZGF0YVR5cGUoRGF0YVR5
cGVTY3JpcHRWYWx1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01MSw2ICs1Miw3IEBACiAgICAg
LCBtX3NvdXJjZShpbml0aWFsaXplci5zb3VyY2UpCiAgICAgLCBtX3BvcnRzKGFkb3B0UHRyKG5l
dyBNZXNzYWdlUG9ydEFycmF5KGluaXRpYWxpemVyLnBvcnRzKSkpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4gcG9ydHMpCkBAIC02Miw2ICs2NCw3IEBACiAgICAgLCBtX3NvdXJjZShz
b3VyY2UpCiAgICAgLCBtX3BvcnRzKHBvcnRzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQpAQCAtNzcsNiArODAsNyBAQAogICAgIGlmIChtX2Rh
dGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKICAgICAgICAgbV9kYXRhQXNTZXJpYWxpemVkU2Ny
aXB0VmFsdWUtPnJlZ2lzdGVyTWVtb3J5QWxsb2NhdGVkV2l0aEN1cnJlbnRTY3JpcHRDb250ZXh0
KCk7CiAjZW5kaWYKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4pCkBAIC04Niw2ICs5MCw3IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBt
X2xhc3RFdmVudElkKCIiKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbikKQEAgLTk1LDYgKzEwMCw3IEBACiAgICAgLCBtX29yaWdpbihvcmln
aW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC0xMDQsNiArMTEwLDcgQEAK
ICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQoIiIpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZXNzYWdlRXZlbnQ6On5NZXNzYWdl
RXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50Q29uc3RydWN0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmlkbAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50Q29uc3RydWN0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAgICAgQ29uZGl0aW9uYWw9Q1VTVE9NX0VMRU1FTlRTLAogICAgIFY4RW5hYmxlZEF0UnVudGlt
ZT1jdXN0b21ET01FbGVtZW50cywKICAgICBWOFdyYXBBc0Z1bmN0aW9uLAorICAgIFY4U2tpcFZU
YWJsZVZhbGlkYXRpb24sCiAgICAgQ3VzdG9tQ2FsbAogXSBpbnRlcmZhY2UgQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yIHsKIH07CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2NTEsNiArMTY1MSw3IEBACiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkK
IHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKCFtX3RyZWVTY29w
ZSkKICAgICAgICAgbV90cmVlU2NvcGUgPSBUcmVlU2NvcGU6Om5vRG9jdW1lbnRJbnN0YW5jZSgp
OwogICAgIG1fdHJlZVNjb3BlLT5ndWFyZFJlZigpOwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25F
dmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBACiBXZWJLaXRBbmltYXRpb25FdmVudDo6V2ViS2l0QW5pbWF0aW9uRXZlbnQo
KQogICAgIDogbV9lbGFwc2VkVGltZSgwLjApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBXZWJLaXRBbmltYXRpb25FdmVudDo6V2ViS2l0QW5pbWF0aW9uRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJLaXRBbmltYXRpb25FdmVudEluaXQm
IGluaXRpYWxpemVyKQpAQCAtNDYsNiArNDcsNyBAQAogICAgICwgbV9hbmltYXRpb25OYW1lKGlu
aXRpYWxpemVyLmFuaW1hdGlvbk5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVy
LmVsYXBzZWRUaW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
V2ViS2l0QW5pbWF0aW9uRXZlbnQ6OldlYktpdEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRp
bWUpCkBAIC01Myw2ICs1NSw3IEBACiAgICAgLCBtX2FuaW1hdGlvbk5hbWUoYW5pbWF0aW9uTmFt
ZSkKICAgICAsIG1fZWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRBbmltYXRpb25FdmVudDo6fldlYktpdEFuaW1h
dGlvbkV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
LQogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQ3Vz
dG9tRWxlbWVudEhlbHBlcnMuaCIKQEAgLTQwLDYgKzM5LDExIEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2lmIFVTRShWOCkKKyNpbmNs
dWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tRWxl
bWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNj
cmlwdFN0YXRlKiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBTY3JpcHRW
YWx1ZSYgcHJvdG90eXBlKQpAQCAtNjcsMTUgKzcxLDI0IEBACiB7CiAgICAgaWYgKCFkb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50Owog
ICAgIGlmIChtX2xvY2FsTmFtZSAhPSBtX3R5cGVOYW1lKQotICAgICAgICByZXR1cm4gc2V0VHlw
ZUV4dGVuc2lvbihkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KG1fbG9jYWxOYW1lLCBkb2N1bWVu
dCgpKSwgbV90eXBlTmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpj
cmVhdGUobV90eXBlTmFtZSwgZG9jdW1lbnQoKSk7CisgICAgICAgIGVsZW1lbnQgPSBzZXRUeXBl
RXh0ZW5zaW9uKGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobV9sb2NhbE5hbWUsIGRvY3VtZW50
KCkpLCBtX3R5cGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGVsZW1lbnQg
PSBIVE1MRWxlbWVudDo6Y3JlYXRlKG1fdHlwZU5hbWUsIGRvY3VtZW50KCkpOworI2lmIFVTRShW
OCkKKyAgICBpZiAoVjhDdXN0b21FbGVtZW50Ojpjb25zdHJ1Y3Rvck9mKGVsZW1lbnQuZ2V0KCkp
KQorICAgICAgICBlbGVtZW50LT5zZXRUeXBlSW5mbygmVjhDdXN0b21FbGVtZW50OjppbmZvKTsK
KyNlbmRpZgorICAgIHJldHVybiBlbGVtZW50OwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IHNl
dFR5cGVFeHRlbnNpb24oUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGVFeHRlbnNpb24pCiB7CiAgICAgaWYgKCF0eXBlRXh0ZW5zaW9uLmlzRW1wdHko
KSkKICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyLCB0eXBl
RXh0ZW5zaW9uKTsKKwogICAgIHJldHVybiBlbGVtZW50OwogfQogCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5j
cHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICAgICAsIG1fbG9hZGVkKDApCiAgICAgLCBtX3RvdGFsKDApCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQcm9ncmVzc0V2ZW50OjpQcm9ncmVzc0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUHJvZ3Jlc3NFdmVudEluaXQmIGluaXRpYWxpemVy
KQpAQCAtNTAsNiArNTEsNyBAQAogICAgICwgbV9sb2FkZWQoaW5pdGlhbGl6ZXIubG9hZGVkKQog
ICAgICwgbV90b3RhbChpbml0aWFsaXplci50b3RhbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIFByb2dyZXNzRXZlbnQ6OlByb2dyZXNzRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCkKQEAgLTU4LDYgKzYwLDcgQEAKICAg
ICAsIG1fbG9hZGVkKGxvYWRlZCkKICAgICAsIG1fdG90YWwodG90YWwpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogICAgIAogY29uc3QgQXRvbWljU3RyaW5nJiBQcm9n
cmVzc0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQAogICAgICwgbV9pc1hTTChmYWxzZSkKICNlbmRpZgogeworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAog
ICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwoKSA/IHRleHQgOiBlbXB0eVN0cmluZygpKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gQ3JlYXRlT3RoZXIgfHwgdHlwZSA9PSBDcmVh
dGVUZXh0IHx8IHR5cGUgPT0gQ3JlYXRlRWRpdGluZ1RleHQpOworICAgICAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgdm9pZCBzZXREYXRhV2l0aG91dFVwZGF0
ZShjb25zdCBTdHJpbmcmIGRhdGEpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL1VJRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDcgQEAKIFVJRXZlbnQ6OlVJRXZlbnQoKQogICAgIDogbV9kZXRhaWwo
MCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFVJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3QXJnLCBpbnQg
ZGV0YWlsQXJnKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3
IEBACiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGltZShjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnKQpAQCAtNjcs
NiArNjgsNyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUo
Y29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTgyLDYg
Kzg0LDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNv
bnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFdmVudDo6fkV2ZW50KCkKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJl
ZmVyZW5jZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKICAgICAsIG1fZW50aXR5
TmFtZShlbnRpdHlOYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IEVudGl0eVJlZmVyZW5jZTo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3Bw
CShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAKIFRv
dWNoRXZlbnQ6OlRvdWNoRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogVG91Y2hFdmVudDo6VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNo
TGlzdCogdGFyZ2V0VG91Y2hlcywKQEAgLTU5LDYgKzYwLDcgQEAKICAgICAsIG1fZG91YmxlVGFw
KGZhbHNlKQogI2VuZGlmCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvcGVydHlOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAg
ICA6IExpdmVOb2RlTGlzdChyb290Tm9kZSwgUHJvcGVydHlOb2RlTGlzdFR5cGUsIEludmFsaWRh
dGVPbkl0ZW1BdHRyQ2hhbmdlLCBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJ
dGVtcmVmQXR0cikKICAgICAsIG1fbmFtZShuYW1lKQogeworICAgIGluaXRXcmFwcGFibGUodGhp
cyk7CiB9CiAKIFByb3BlcnR5Tm9kZUxpc3Q6On5Qcm9wZXJ0eU5vZGVMaXN0KCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hh
bmdlRXZlbnQuaAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiAr
NzEsNyBAQAogcHJpdmF0ZToKICAgICBIYXNoQ2hhbmdlRXZlbnQoKQogICAgIHsKKyAgICAgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAogICAgIEhhc2hDaGFuZ2VFdmVu
dChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwpCkBAIC03OCw2ICs3
OSw3IEBACiAgICAgICAgICwgbV9vbGRVUkwob2xkVVJMKQogICAgICAgICAsIG1fbmV3VVJMKG5l
d1VSTCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9
CiAKICAgICBIYXNoQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBI
YXNoQ2hhbmdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTg1LDYgKzg3LDcgQEAKICAgICAg
ICAgLCBtX29sZFVSTChpbml0aWFsaXplci5vbGRVUkwpCiAgICAgICAgICwgbV9uZXdVUkwoaW5p
dGlhbGl6ZXIubmV3VVJMKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIH0KIAogICAgIFN0cmluZyBtX29sZFVSTDsKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAko
cmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAg
ICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKICAgICAsIG1faGlzdG9yeSgwKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0JiBpbml0
aWFsaXplcikKQEAgLTUwLDYgKzUxLDcgQEAKICAgICAsIG1fc2VyaWFsaXplZFN0YXRlKDApCiAg
ICAgLCBtX2hpc3RvcnkoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSwgUGFzc1JlZlB0cjxIaXN0b3J5PiBoaXN0b3J5KQpA
QCAtNTcsNiArNTksNyBAQAogICAgICwgbV9zZXJpYWxpemVkU3RhdGUoc2VyaWFsaXplZFN0YXRl
KQogICAgICwgbV9oaXN0b3J5KGhpc3RvcnkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2ZW50Ojp+UG9wU3RhdGVFdmVudCgpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25F
dmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIE11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQoKQogICAgIDogbV9hdHRyQ2hhbmdl
KDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNdXRhdGlvbkV2
ZW50OjpNdXRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkTm9kZSwKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2
LDE0IEBACiAKIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBDdXN0b21FdmVudDo6Q3VzdG9tRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBDdXN0b21FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAg
IDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX2RldGFpbChpbml0aWFsaXplci5k
ZXRhaWwpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDdXN0b21F
dmVudDo6fkN1c3RvbUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5oCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgs
NyBAQAogICAgIFRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENv
bnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBk
YXRhLCB0eXBlKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogICAgICwgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNo
YWRvd1Jvb3QoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAodHlw
ZSA9PSBTaGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290KSB7CkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKIHsKICAg
ICAvLyBEb2N1bWVudCB0eXBlIG5vZGVzIG1heSBoYXZlIGEgbnVsbCBkb2N1bWVudC4gQnV0IHNp
bmNlIHRoZXkgY2FuJ3QgaGF2ZSBjaGlsZHJlbiwgdGhlcmUgaXMgbm8gbmVlZCB0byBsaXN0ZW4g
Zm9yIG1vZGlmaWNhdGlvbnMgdG8gdGhlc2UuCiAgICAgQVNTRVJUKHJvb3QoKS0+ZG9jdW1lbnQo
KSB8fCByb290KCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgaWYgKERvY3VtZW50KiBvd25lckRv
Y3VtZW50ID0gcm9vdCgpLT5kb2N1bWVudCgpKQogICAgICAgICBvd25lckRvY3VtZW50LT5hdHRh
Y2hOb2RlSXRlcmF0b3IodGhpcyk7CiB9CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHdv
cmtpbmcgY29weSkKQEAgLTEyMTYsNyArMTIxNiw4IEBACiA7CiAgICAgfQogCi0gICAgcHJpbnRX
cmFwcGVyRnVuY3Rpb25zKCRGLCAkd3JhcHBlckZhY3RvcnlUeXBlKTsKKyAgICBpZiAoJHdyYXBw
ZXJGYWN0b3J5VHlwZSBuZSAiVjgiKSB7ICMgc3RhcnQgZnVubnkgaW5kZW50CisgICAgICAgIHBy
aW50V3JhcHBlckZ1bmN0aW9ucygkRiwgJHdyYXBwZXJGYWN0b3J5VHlwZSk7CiAKICAgICBpZiAo
JHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKQEAg
LTEzMTQsNiArMTMxNSw4IEBACiBFTkQKIDsKIAorICAgIH0gIyBlbmQgZnVubnkgaW5kZW50CisK
ICAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CiAgICAgICAgIHByaW50IEYg
PDxFTkQKIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FcnJv
ckV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBACiAKIEVycm9yRXZlbnQ6OkVycm9yRXZlbnQoKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXJyb3JFdmVudDo6RXJyb3JFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEVycm9yRXZlbnRJbml0JiBpbml0aWFsaXplcikK
QEAgLTUyLDYgKzUzLDcgQEAKICAgICAsIG1fZmlsZU5hbWUoaW5pdGlhbGl6ZXIuZmlsZW5hbWUp
CiAgICAgLCBtX2xpbmVOdW1iZXIoaW5pdGlhbGl6ZXIubGluZW5vKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXJyb3JFdmVudDo6RXJyb3JFdmVudChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIpCkBAIC02MCw2ICs2Miw3IEBACiAgICAgLCBtX2ZpbGVOYW1lKGZpbGVOYW1lKQogICAgICwg
bV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBFcnJvckV2ZW50Ojp+RXJyb3JFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAJ
KHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAog
ICAgIDogbV9rZXlMb2NhdGlvbihET01LZXlMb2NhdGlvblN0YW5kYXJkKQogICAgICwgbV9hbHRH
cmFwaEtleShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBrZXksIEFic3RyYWN0VmlldyogdmlldykKQEAgLTExNSw2ICsxMTYsNyBAQAogICAgICwgbV9r
ZXlMb2NhdGlvbihrZXlMb2NhdGlvbkNvZGUoa2V5KSkKICAgICAsIG1fYWx0R3JhcGhLZXkoZmFs
c2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBLZXlib2FyZEV2
ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBL
ZXlib2FyZEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC0xMjMsNiArMTI1LDcgQEAKICAgICAs
IG1fa2V5TG9jYXRpb24oaW5pdGlhbGl6ZXIua2V5TG9jYXRpb24pCiAgICAgLCBtX2FsdEdyYXBo
S2V5KGZhbHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogS2V5
Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgQWJzdHJhY3RWaWV3ICp2aWV3LApAQCAt
MTMzLDYgKzEzNiw3IEBACiAgICAgLCBtX2tleUxvY2F0aW9uKGtleUxvY2F0aW9uKQogICAgICwg
bV9hbHRHcmFwaEtleShhbHRHcmFwaEtleSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6IENv
bnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIFdlYktpdFRyYW5zaXRpb25FdmVudDo6V2ViS2l0
VHJhbnNpdGlvbkV2ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYktpdFRyYW5zaXRpb25FdmVudDo6V2ViS2l0
VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVt
ZW50KQpAQCAtNDYsNiArNDcsNyBAQAogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkK
ICAgICAsIG1fcHNldWRvRWxlbWVudChwc2V1ZG9FbGVtZW50KQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjpXZWJLaXRUcmFu
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJLaXRUcmFuc2l0
aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTU0LDYgKzU2LDcgQEAKICAgICAsIG1fZWxh
cHNlZFRpbWUoaW5pdGlhbGl6ZXIuZWxhcHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQo
aW5pdGlhbGl6ZXIucHNldWRvRWxlbWVudCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFdlYktpdFRyYW5zaXRpb25FdmVudDo6fldlYktpdFRyYW5zaXRpb25FdmVu
dCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0
aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDE4ICszNywyMSBAQAogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21w
b3NpdGlvbkV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQog
ICAgIDogVUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9kYXRhKGRh
dGEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDb21wb3NpdGlv
bkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
Q29tcG9zaXRpb25FdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDogVUlFdmVudCh0eXBlLCBp
bml0aWFsaXplcikKICAgICAsIG1fZGF0YShpbml0aWFsaXplci5kYXRhKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0
aW9uRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rp
b24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgOiBUZXh0KGRv
Y3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbmxpbmUgQ29tbWVudDo6
Q29tbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICA6IENo
YXJhY3RlckRhdGEoZG9jdW1lbnQsIHRleHQsIENyZWF0ZU90aGVyKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDb21tZW50PiBDb21tZW50Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0F1dG9jb21wbGV0ZUVycm9yRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0F1
dG9jb21wbGV0ZUVycm9yRXZlbnQuaAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9BdXRvY29tcGxldGVFcnJvckV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE4ICs2MCwyMSBAQAogcHJpdmF0ZToKICAgICBBdXRvY29tcGxldGVF
cnJvckV2ZW50KCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
ICAgICB9CiAKICAgICBBdXRvY29tcGxldGVFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgcmVhc29u
KQogICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBm
YWxzZSwgZmFsc2UpCiAgICAgICAgICwgbV9yZWFzb24ocmVhc29uKQogICAgIHsKKyAgICAgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAogICAgIEF1dG9jb21wbGV0ZUVy
cm9yRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF1dG9jb21wbGV0
ZUVycm9yRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICAgICAgOiBFdmVudChldmVudFR5cGUs
IGluaXRpYWxpemVyKQogICAgICAgICAsIG1fcmVhc29uKGluaXRpYWxpemVyLnJlYXNvbikKICAg
ICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBT
dHJpbmcgbV9yZWFzb247CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rp
b25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxNCBAQAogRGV2aWNlTW90
aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2ZW50KCkKICAgICA6IG1fZGV2aWNlTW90aW9uRGF0YShE
ZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIERldmljZU1vdGlvbkV2ZW50OjpEZXZpY2VNb3Rpb25FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0
YSkKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSAvLyBDYW4ndCBidWJibGUs
IG5vdCBjYW5jZWxhYmxlCiAgICAgLCBtX2RldmljZU1vdGlvbkRhdGEoZGV2aWNlTW90aW9uRGF0
YSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNl
TW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBEZXZpY2VNb3Rpb25EYXRhKiBkZXZp
Y2VNb3Rpb25EYXRhKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Rv
bS9PdmVyZmxvd0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAgICAgLCBtX2hvcml6b250YWxPdmVyZmxv
dyhmYWxzZSkKICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhmYWxzZSkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE92ZXJmbG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQo
Ym9vbCBob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIGhvcml6b250YWxPdmVyZmxvdywg
Ym9vbCB2ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCwgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93KQpAQCAt
NTEsNiArNTIsNyBAQAogICAgICwgbV92ZXJ0aWNhbE92ZXJmbG93KHZlcnRpY2FsT3ZlcmZsb3cp
CiB7CiAgICAgQVNTRVJUKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQgfHwgdmVydGljYWxPdmVy
Zmxvd0NoYW5nZWQpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIAogICAgIGlm
IChob3Jpem9udGFsT3ZlcmZsb3dDaGFuZ2VkICYmIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkKQog
ICAgICAgICBtX29yaWVudCA9IEJPVEg7CkBAIC02Niw2ICs2OCw3IEBACiAgICAgLCBtX2hvcml6
b250YWxPdmVyZmxvdyhpbml0aWFsaXplci5ob3Jpem9udGFsT3ZlcmZsb3cpCiAgICAgLCBtX3Zl
cnRpY2FsT3ZlcmZsb3coaW5pdGlhbGl6ZXIudmVydGljYWxPdmVyZmxvdykKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgT3ZlcmZs
b3dFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQmVm
b3JlTG9hZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDE4ICs2NCwyMSBAQAogcHJpdmF0
ZToKICAgICBCZWZvcmVMb2FkRXZlbnQoKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogICAgIH0KIAogICAgIGV4cGxpY2l0IEJlZm9yZUxvYWRFdmVudChjb25z
dCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBFdmVudChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2
ZW50LCBmYWxzZSwgdHJ1ZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgeworICAgICAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgQmVmb3JlTG9hZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQmVmb3JlTG9hZEV2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIpCiAgICAgICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgICAgICwg
bV91cmwoaW5pdGlhbGl6ZXIudXJsKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIH0KIAogICAgIFN0cmluZyBtX3VybDsKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAkocmV2aXNpb24gMTQ2MzM1
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9pbkNoaWxkcmVuQ2hhbmdlZChm
YWxzZSkKICAgICAsIG1fc3BlY2lmaWVkKHRydWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBBdHRyOjpBdHRyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFsb25lVmFsdWUpCkBA
IC01Nyw2ICs1OCw3IEBACiAgICAgLCBtX2luQ2hpbGRyZW5DaGFuZ2VkKGZhbHNlKQogICAgICwg
bV9zcGVjaWZpZWQodHJ1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL0VudGl0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRW50aXR5LmgJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDEwIEBACiAgICAgU3RyaW5nIG5vdGF0aW9uTmFtZSgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQogCiBwcml2YXRlOgotICAgIEVudGl0eSgp
IDogQ29udGFpbmVyTm9kZSgwKSB7fQorICAgIEVudGl0eSgpIDogQ29udGFpbmVyTm9kZSgwKQor
ICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworICAgIH0KIH07CiAK
IH0gLy9uYW1lc3BhY2UKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBs
dWdpbkFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogRE9NUGx1Z2lu
QXJyYXk6OkRPTVBsdWdpbkFycmF5KEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3Bl
cnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRE9N
UGx1Z2luQXJyYXk6On5ET01QbHVnaW5BcnJheSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTVBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICAsIG1f
cGx1Z2luRGF0YShwbHVnaW5EYXRhKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIERPTVBsdWdpbjo6fkRPTVBsdWdpbigpCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlw
ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIERPTU1pbWVUeXBlQXJyYXk6OkRP
TU1pbWVUeXBlQXJyYXkoRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJh
bWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBET01NaW1lVHlw
ZUFycmF5Ojp+RE9NTWltZVR5cGVBcnJheSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIERPTUFwcGxpY2F0aW9u
Q2FjaGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93
UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3QgPSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgp
OwogICAgIGlmIChjYWNoZUhvc3QpCiAgICAgICAgIGNhY2hlSG9zdC0+c2V0RE9NQXBwbGljYXRp
b25DYWNoZSh0aGlzKTsKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogICAgIDogU1ZHQW5pbWF0ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlQ29sb3JFbGVt
ZW50PiBTVkdBbmltYXRlQ29sb3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAgICAgOiBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6YVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FFbGVtZW50KCk7CiB9CiAK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgbV9zdmdMb2FkRXZlbnRUaW1lcih0aGlzLCAm
U1ZHRWxlbWVudDo6c3ZnTG9hZEV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFNWR1N0eWxlRWxlbWVudDo6flNWR1N0eWxlRWxlbWVudCgpCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR1N5bWJvbEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBACiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0FsdEdseXBoRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAs
IG1faXNBbmltVmFsT2JzZXJ2ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnBhdGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXRoRWxlbWVudCgpOwogfQogCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICAsIG1fbW9kZShGRUJMRU5EX01PREVfTk9STUFM
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5kVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHRkVCbGVuZEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBA
CiAgICAgLCBtX3IoTGVuZ3RoTW9kZU90aGVyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpjaXJjbGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDaXJjbGVFbGVtZW50KCk7CiB9CiAK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpmZU9mZnNldFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFT2Zmc2V0RWxl
bWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1pvb21FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA6IG1fbmV3U2NhbGUoMC4wZikKICAgICAs
IG1fcHJldmlvdXNTY2FsZSgwLjBmKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogRmxvYXRSZWN0IFNWR1pvb21FdmVudDo6em9vbVJlY3RTY3JlZW4oKSBjb25zdApJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgLCBtX2FtcGxpdHVkZSgxKQogICAgICwgbV9l
eHBvbmVudCgxKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnRleHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
b25zdHJ1Y3Rpb25UeXBlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpnVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBA
CiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpoa2VyblRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdIS2VybkVsZW1lbnQ+IFNWR0hLZXJuRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9fb3Bl
cmF0b3IoRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1vcnBob2xv
Z3lFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsNyBAQAogICAgICwgbV9zdXJmYWNlU2NhbGUoMSkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNZXRh
ZGF0YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1ldGFkYXRhVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR01ldGFkYXRhRWxl
bWVudD4gU1ZHTWV0YWRhdGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9uZW50VHJhbnNmZXJUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcg
QEAKICAgICAsIG1faW1hZ2VMb2FkZXIodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdJbWFnZUVsZW1lbnQoKTsKIH0KIApJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgLCBtX3NwYWNpbmcoU1ZHVGV4dFBh
dGhTcGFjaW5nRXhhY3QpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQ
YXRoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAog
U1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6
IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2Fs
bGJhY2tzKCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIs
NyBAQAogICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZH
U3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6dGl0bGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVGl0bGVFbGVtZW50PiBTVkdUaXRsZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYz
MzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICAg
ICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlRGlmZnVzZUxpZ2h0aW5nVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogICAgICwgbV9z
cHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICwgbV9ncmFkaWVudFVuaXRzKFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdHcmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBACiAgICAgLCBtX3Rp
bWVDb250YWluZXIoU01JTFRpbWVDb250YWluZXI6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU1ZHRWxlbWVu
dCgpOwogICAgIGRvYy0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRo
aXMpOwogfQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBA
CiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3IvZnIgYXR0cmlidXRlIGlzIG5vdCBzcGVj
aWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmll
ZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlTWVyZ2VUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSw3IEBACiAgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKEFuaW1hdGVk
U3RyaW5nKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8
fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFu
aW1hdGVDb2xvclRhZykgfHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdBbmltYXRlRWxlbWVudD4gU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnZrZXJuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWln
aHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIApJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiBTVkdEb2N1
bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBE
b2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBTVkdTVkdFbGVtZW50KiBTVkdEb2N1bWVudDo6cm9vdEVsZW1l
bnQoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZ1bmNCRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkK
KysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNCRWxlbWVudD4gU1ZHRkVG
dW5jQkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRo
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTVBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQs
NiArNzQsNyBAQAogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVj
aWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZp
ZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHRmlsdGVyRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNSVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZF
RnVuY1JFbGVtZW50PiBTVkdGRUZ1bmNSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQAogewogICAg
IEFTU0VSVChoYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpKTsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6dXNlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxlbWVudCgpOwogfQogCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9y
bWF0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9y
bWF0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9u
dF9mYWNlX2Zvcm1hdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ+IFNWR0ZvbnRGYWNlRm9ybWF0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogICAgICwg
bV9zcGVjaWZpZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAsIG1fbGVuZ3RoQWRq
dXN0KFNWR0xlbmd0aEFkanVzdFNwYWNpbmcpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dENvbnRlbnRF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNZXJnZU5vZGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAog
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBt
X2R5KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdseXBoUmVmVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHR2x5cGhSZWZFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsNyBAQAogICAgICwgbV9mb250RWxlbWVudCgwKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGZvbnRfZmFjZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
ICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGVEZWNsYXJhdGlvbiA9IFN0eWxlUHJv
cGVydHlTZXQ6OmNyZWF0ZShDU1NTdHJpY3RNb2RlKTsKICAgICBtX2ZvbnRGYWNlUnVsZS0+c2V0
UHJvcGVydGllcyhzdHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKIHsKICAgICAvLyBTcGVjOiBJZiB0
aGUgeDIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2
YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QWx0R2x5cGhEZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAog
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6YWx0R2x5cGhEZWZUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhEZWZFbGVtZW50PiBTVkdBbHRH
bHlwaERlZkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1faXNHbHlwaENhY2hl
VmFsaWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcp
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdGb250RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAsIG1fX29wZXJhdG9yKEZFQ09NUE9TSVRFX09QRVJB
VE9SX09WRVIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9zaXRl
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVDb21wb3NpdGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgICwgbV9zdGREZXZpYXRpb25Z
KDIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRHJvcFNoYWRvd1RhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1
OCw3IEBACiAgICAgLCBtX3kyKExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmxpbmVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lRWxlbWVudCgpOwog
fQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHls
aW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR1BvbHlFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpw
b2x5bGluZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdQb2x5bGluZUVsZW1lbnQ+IFNWR1BvbHlsaW5lRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogICAgICwgbV9l
ZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICA6IFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpzd2l0Y2hUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTd2l0Y2hF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQAogewogICAgIHNldENhbGNNb2RlKENhbGNNb2RlUGFjZWQpOwogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGFuaW1hdGVNb3Rpb25UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ+IFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiB7CiAgICAgc2V0QW5pbWF0aW9uTW9kZShU
b0FuaW1hdGlvbik7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdTZXRF
bGVtZW50PiBTVkdTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAgICAgLCBtX3J5KExl
bmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpm
ZURpc3RhbnRMaWdodFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+IFNWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV95KExlbmd0aE1vZGVI
ZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmN1cnNvclRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0N1cnNvckVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVzY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAg
ICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpkZXNjVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVtZW50PiBTVkdEZXNjRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAogICAgICwgbV9jYWxjTW9kZShDYWxj
TW9kZUxpbmVhcikKICAgICAsIG1fYW5pbWF0aW9uTW9kZShOb0FuaW1hdGlvbikKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdBbmltYXRpb25FbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNiArNTUsNyBAQAogICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJV
TEVOQ0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNw
YW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUU3Bh
bkVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YWx0R2x5cGhJdGVtVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FsdEdseXBoSXRl
bUVsZW1lbnQ+IFNWR0FsdEdseXBoSXRlbUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNBVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0ZFRnVuY0FFbGVtZW50PiBTVkdGRUZ1bmNBRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAKICAgICAs
IG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQ
QUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcp
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdQYXR0ZXJuRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICAsIG1fdHlwZShGRUNPTE9STUFUUklY
X1RZUEVfTUFUUklYKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbG9y
TWF0cml4VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIH0KIApJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBA
CiAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1l
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRfZmFjZV9uYW1lVGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRG
YWNlTmFtZUVsZW1lbnQ+IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDYgKzU1LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVJ
bWFnZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFSW1hZ2VFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDYgKzEzNiw3IEBACiAgICAgLCBtX3RhcmdldExpc3RlbmVyKFNWR1RSZWZUYXJnZXRFdmVudExp
c3RlbmVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnRyZWZUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUUmVmRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fY2xpcFBhdGhVbml0cyhTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmNsaXBQYXRoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2xpcFBhdGhFbGVtZW50KCk7
CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9zdmdMb2FkRXZlbnRUaW1l
cih0aGlzLCAmU1ZHRWxlbWVudDo6c3ZnTG9hZEV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU2NyaXB0
RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAK
ICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoZm9udF9mYWNlX3VyaVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZVVyaUVsZW1lbnQ+IFNWR0ZvbnRGYWNlVXJp
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZsb29kVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRmxvb2RFbGVtZW50PiBTVkdGRUZs
b29kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYzMzUpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kg
YXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBv
ZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdo
dCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVl
IG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6bWFza1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01hc2tFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICAgICAsIG1fdHlwZShTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1f
VU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5z
Zm9ybVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVu
Y0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNHVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRnVuY0dFbGVtZW50PiBTVkdGRUZ1bmNHRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlz
c2luZ0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2
MzM1KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5n
R2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogICAgIDog
U1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNaXNzaW5nR2x5cGhFbGVtZW50PiBTVkdN
aXNzaW5nR2x5cGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBACiB7CiAgICAgLy8g
U3BlYzogSWYgdGhlIG1hcmtlcldpZHRoL21hcmtlckhlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIzIiB3ZXJlIHNwZWNpZmll
ZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFya2VyVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHTWFya2VyRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6
IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmdseXBoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0dseXBoRWxlbWVudD4gU1ZHR2x5cGhFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdo
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdGRUxpZ2h0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVTcG90TGlnaHRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVUaWxlVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUaWxlRWxlbWVu
dCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2MzM1KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpkZWZzVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRGVmc0VsZW1lbnQoKTsKIH0KIApJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw3IEBACiAgICAgLCBtX3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRB
dHRyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHVmlld0VsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBt
X29mZnNldCgwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdG9wVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHU3RvcEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAgICAgOiBTVkdQb2x5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdQb2x5Z29uRWxlbWVudD4gU1ZH
UG9seWdvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVQb2ludExpZ2h0RWxl
bWVudD4gU1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NjMzNSkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShmb250X2ZhY2Vfc3JjVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlU3JjRWxlbWVudD4g
U1ZHRm9udEZhY2VTcmNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDYzMzUpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiBTVkdTdHls
ZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQog
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9uVHlwZSkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195765</attachid>
            <date>2013-03-29 11:00:29 -0700</date>
            <delta_ts>2013-03-30 10:57:03 -0700</delta_ts>
            <desc>WIP.</desc>
            <filename>latest.diff</filename>
            <type>text/plain</type>
            <size>213736</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VS
dWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogQ1NTUnVsZShwYXJlbnQpCiAgICAgLCBtX2Zv
bnRGYWNlUnVsZShmb250RmFjZVJ1bGUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogfQogCiBDU1NGb250RmFjZVJ1bGU6On5DU1NGb250RmFjZVJ1bGUoKQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZUxvYWRFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpDU1NG
b250RmFjZUxvYWRFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VMb2FkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gZm9udGZhY2UsIFBh
c3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQpAQCAtNDQsNiArNDUsNyBAQAogICAgICwgbV9mb250
ZmFjZShmb250ZmFjZSkKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBDU1NGb250RmFjZUxvYWRFdmVudDo6Q1NTRm9udEZhY2VM
b2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBDU1NGb250RmFjZUxvYWRF
dmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtNTEsNiArNTMsNyBAQAogICAgICwgbV9mb250ZmFj
ZShpbml0aWFsaXplci5mb250ZmFjZSkKICAgICAsIG1fZXJyb3IoaW5pdGlhbGl6ZXIuZXJyb3Ip
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDU1NGb250RmFjZUxv
YWRFdmVudDo6fkNTU0ZvbnRGYWNlTG9hZEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMs
MTAgQEAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24oKSB7
IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkKKyAgICB7CisgICAgICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEwICszOSwxMiBAQAogV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCiAgICAgOiBtX21hdHJpeChtKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViS2l0Q1NTTWF0cml4OjpXZWJL
aXRDU1NNYXRyaXgoY29uc3QgU3RyaW5nJiBzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgc2V0TWF0cml4VmFsdWUocywgZWMpOwog
fQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHJldmlzaW9u
IDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxNSBA
QAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudDsgfQogCiBwcml2YXRlOgotICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIHsg
fQorICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpCisgICAgeworICAgICAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAgfQorCiAgICAgWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxl
LCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpCiAg
ICAgICAgIDogUHJvZ3Jlc3NFdmVudCh0eXBlLCBsZW5ndGhDb21wdXRhYmxlLCBsb2FkZWQsIHRv
dGFsKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0K
IH07CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw3IEBACiAjaWZuZGVmIE5ERUJVRwogICAgIHhtbEh0dHBS
ZXF1ZXN0Q291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogWE1MSHR0cFJlcXVlc3Q6On5YTUxIdHRwUmVxdWVzdCgpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlz
aW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKIERPTUFwcGxpY2F0aW9uQ2FjaGU6OkRPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUq
IGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjYWNoZUhvc3Qg
PSBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogICAgIGlmIChjYWNoZUhvc3QpCiAgICAgICAgIGNh
Y2hlSG9zdC0+c2V0RE9NQXBwbGljYXRpb25DYWNoZSh0aGlzKTsKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTggKzUwLDIxIEBACiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBTdHJp
bmcmIHRvbmUpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpCiAgICAgLCBtX3RvbmUodG9uZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQoY29uc3QgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAg
IDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVudCwgaW5pdGlhbGl6ZXIpCiAgICAg
LCBtX3RvbmUoaW5pdGlhbGl6ZXIudG9uZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2
ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAKIFJUQ0ljZUNhbmRpZGF0ZUV2
ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBSVENJY2VDYW5kaWRhdGVFdmVudDo6UlRDSWNlQ2FuZGlkYXRlRXZlbnQo
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRh
dGU+IGNhbmRpZGF0ZSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5pY2VjYW5kaWRhdGVFdmVu
dCwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9jYW5kaWRhdGUoY2FuZGlkYXRlKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUlRDSWNlQ2FuZGlkYXRl
RXZlbnQ6On5SVENJY2VDYW5kaWRhdGVFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEy
NikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0
NSwxNCBAQAogCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudCgp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRy
YWNrRXZlbnQ6Ok1lZGlhU3RyZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2spCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAg
ICAgLCBtX3RyYWNrKHRyYWNrKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojp+TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQsMTggKzU0LDIxIEBACiAKIE1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1FdmVu
dDo6TWVkaWFTdHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKICAg
ICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAsIG1fc3RyZWFtKHN0
cmVhbSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhU3Ry
ZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBNZWRpYVN0cmVhbUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudCh0eXBlLCBp
bml0aWFsaXplcikKICAgICAsIG1fc3RyZWFtKGluaXRpYWxpemVyLnN0cmVhbSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtRXZlbnQ6On5NZWRp
YVN0cmVhbUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0IEBACiAKIFJUQ0RhdGFDaGFu
bmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUlRDRGF0YUNoYW5uZWxFdmVudDo6UlRDRGF0YUNoYW5uZWxFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwpCiAgICAgOiBFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2NoYW5uZWwoY2hhbm5lbCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsRXZlbnQ6
On5SVENEYXRhQ2hhbm5lbEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMg
KzQ1LDE0IEBACiAKIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6T2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
LQogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OjpPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQoUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gcmVuZGVyZWRCdWZmZXIpCiAgICAgOiBFdmVudChl
dmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgdHJ1ZSwgZmFsc2UpCiAgICAgLCBtX3JlbmRlcmVk
QnVmZmVyKHJlbmRlcmVkQnVmZmVyKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Ojp+T2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nl
c3NpbmdFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBBdWRpb1Byb2Nlc3NpbmdFdmVudDo6
QXVkaW9Qcm9jZXNzaW5nRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OkF1ZGlvUHJvY2Vzc2luZ0V2ZW50KFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBv
dXRwdXRCdWZmZXIpCkBAIC01Miw2ICs1Myw3IEBACiAgICAgLCBtX2lucHV0QnVmZmVyKGlucHV0
QnVmZmVyKQogICAgICwgbV9vdXRwdXRCdWZmZXIob3V0cHV0QnVmZmVyKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6On5BdWRp
b1Byb2Nlc3NpbmdFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw2ICsyNDQsNyBAQAogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAg
ICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIEdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24oKQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcAkocmV2aXNp
b24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2
ICs3OCw3IEBACiAgICAgLCBtX2Vycm9yKGVycm9yKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2Up
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnROYW1lLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9ySW5pdCYgaW5pdGlhbGl6ZXIpCkBA
IC04NSw2ICs4Niw3IEBACiAgICAgLCBtX2Vycm9yKGluaXRpYWxpemVyLmVycm9yKQogICAgICwg
bV9tZXNzYWdlKGluaXRpYWxpemVyLm1lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNwZWVjaFJlY29nbml0aW9uRXJy
b3I6OmludGVyZmFjZU5hbWUoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIFNwZWVjaFN5bnRoZXNp
c0V2ZW50OjpTcGVlY2hTeW50aGVzaXNFdmVudCgpCiB7CisgICAgaW5pdFdyYXBwYWJsZSh0aGlz
KTsKIH0KIAogU3BlZWNoU3ludGhlc2lzRXZlbnQ6OlNwZWVjaFN5bnRoZXNpc0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGZsb2F0IGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAKIFNwZWVjaFJl
Y29nbml0aW9uRXZlbnQ6OlNwZWVjaFJlY29nbml0aW9uRXZlbnQoKQogICAgIDogbV9yZXN1bHRJ
bmRleCgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNo
UmVjb2duaXRpb25FdmVudDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FdmVudEluaXQmIGluaXRpYWxp
emVyKQpAQCAtNzcsNiArNzgsNyBAQAogICAgICwgbV9yZXN1bHRJbmRleChpbml0aWFsaXplci5y
ZXN1bHRJbmRleCkKICAgICAsIG1fcmVzdWx0cyhpbml0aWFsaXplci5yZXN1bHRzKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25FdmVu
dDo6U3BlZWNoUmVjb2duaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwg
dW5zaWduZWQgbG9uZyByZXN1bHRJbmRleCwgUGFzc1JlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3Q+IHJlc3VsdHMpCkBAIC04NCw2ICs4Niw3IEBACiAgICAgLCBtX3Jlc3VsdEluZGV4
KHJlc3VsdEluZGV4KQogICAgICwgbV9yZXN1bHRzKHJlc3VsdHMpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50Ojp+U3BlZWNo
UmVjb2duaXRpb25FdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQu
aAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYg
Kzc4LDcgQEAKICAgICAgICAgLCBtX3dhc0NsZWFuKGZhbHNlKQogICAgICAgICAsIG1fY29kZSgw
KQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIH0KIAog
ICAgIENsb3NlRXZlbnQoYm9vbCB3YXNDbGVhbiwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKQpAQCAtODYsNiArODcsNyBAQAogICAgICAgICAsIG1fY29kZShjb2RlKQogICAgICAgICAs
IG1fcmVhc29uKHJlYXNvbikKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKICAgICB9CiAKICAgICBDbG9zZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgQ2xvc2VFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtOTQsNiArOTYsNyBAQAogICAg
ICAgICAsIG1fY29kZShpbml0aWFsaXplci5jb2RlKQogICAgICAgICAsIG1fcmVhc29uKGluaXRp
YWxpemVyLnJlYXNvbikKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICB9CiAKICAgICBib29sIG1fd2FzQ2xlYW47CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKIE5vdGlmaWNhdGlv
bjo6Tm90aWZpY2F0aW9uKCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgwKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKQEAgLTY1LDYgKzY2LDcgQEAKICAgICAsIG1fc3RhdGUoSWRsZSkKICAgICAsIG1fbm90
aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9
IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKICAgICAgICAgZWMgPSBT
RUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTg4LDYgKzkwLDcgQEAKICAgICAsIG1f
c3RhdGUoSWRsZSkKICAgICAsIG1fbm90aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQogeworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50
ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFs
bG93ZWQpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAg
LTEwOSw4ICsxMTIsOSBAQAogICAgICwgbV9zdGF0ZShJZGxlKQogICAgICwgbV90YXNrVGltZXIo
YWRvcHRQdHIobmV3IFRpbWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5vdGlmaWNhdGlvbjo6dGFz
a1RpbWVyRmlyZWQpKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
ICAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtp
dE5vdGlmaWNhdGlvbnModG9Eb2N1bWVudChjb250ZXh0KS0+ZG9tV2luZG93KCkpOwotICAgIAog
ICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOwogICAgIG1fdGFza1Rp
bWVyLT5zdGFydE9uZVNob3QoMCk7CiB9CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlSYW5nZS5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICAsIG1fbG93ZXJUeXBlKGxvd2VyVHlwZSkKICAgICAs
IG1fdXBwZXJUeXBlKHVwcGVyVHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFNjcmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDcgQEAKICAgICAsIG1faW50ZWdlcigwKQogewogICAgIEFTU0VSVCh0eXBlID09IFVuZGVm
aW5lZFR5cGUgfHwgdHlwZSA9PSBOdWxsVHlwZSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBJREJBbnk6On5JREJBbnkoKQpAQCAtMTM1LDYgKzEzNiw3IEBACiAgICAg
LCBtX2RvbVN0cmluZ0xpc3QodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCQ3Vyc29yV2l0aFZhbHVlPiB2YWx1ZSkKQEAgLTE0Miw2ICsxNDQsNyBAQAogICAgICwgbV9p
ZGJDdXJzb3JXaXRoVmFsdWUodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCQ3Vyc29yPiB2YWx1ZSkKQEAgLTE0OSw2ICsxNTIsNyBAQAogICAgICwgbV9pZGJDdXJzb3Io
dmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZhbHVl
KQpAQCAtMTU2LDYgKzE2MCw3IEBACiAgICAgLCBtX2lkYkRhdGFiYXNlKHZhbHVlKQogICAgICwg
bV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJ
REJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQkZhY3Rvcnk+IHZhbHVlKQpAQCAtMTYzLDYgKzE2
OCw3IEBACiAgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkFueTo6SURCQW55KFBh
c3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQpAQCAtMTcwLDYgKzE3Niw3IEBACiAgICAgLCBtX2lk
YkluZGV4KHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB2YWx1ZSkKQEAgLTE3Nyw2ICsxODQsNyBAQAogICAgICwgbV9pZGJUcmFuc2FjdGlvbih2
YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFs
dWUpCkBAIC0xODQsNiArMTkyLDcgQEAKICAgICAsIG1faWRiT2JqZWN0U3RvcmUodmFsdWUpCiAg
ICAgLCBtX2ludGVnZXIoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIElEQkFueTo6SURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKQEAgLTE5MSw2ICsy
MDAsNyBAQAogICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnko
Y29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCkBAIC0xOTgsNiArMjA4LDcgQEAKICAgICAsIG1faWRi
S2V5UGF0aCh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55OjpJREJBbnkoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
QEAgLTIwNSwxMiArMjE2LDE0IEBACiAgICAgLCBtX3N0cmluZyh2YWx1ZSkKICAgICAsIG1faW50
ZWdlcigwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCQW55
OjpJREJBbnkoaW50NjRfdCB2YWx1ZSkKICAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKICAgICAs
IG1faW50ZWdlcih2YWx1ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogICAg
ICwgbV9vbGRWZXJzaW9uKG9sZFZlcnNpb24pCiAgICAgLCBtX25ld1ZlcnNpb24obmV3VmVyc2lv
bikKIHsKKyAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJWZXJzaW9u
Q2hhbmdlRXZlbnQ6On5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmUpOwogICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQobV9tZXRhZGF0YS5pZCAhPSBJREJJ
bmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogSURCSW5kZXg6On5JREJJbmRleCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAsIG1fdmVyc2lv
bih2ZXJzaW9uKQogewogICAgIEFTU0VSVCghbV9yZXN1bHQpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogSURCT3BlbkRCUmVxdWVzdDo6fklEQk9wZW5EQlJlcXVlc3Qo
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiB7
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsNyBAQAogSURCQ3Vyc29yV2l0aFZhbHVlOjpJREJDdXJzb3JXaXRoVmFsdWUo
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSog
c291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBJREJDdXJzb3IoYmFj
a2VuZCwgZGlyZWN0aW9uLCByZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKQogeworICAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkN1cnNvcldpdGhWYWx1ZTo6fklE
QkN1cnNvcldpdGhWYWx1ZSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDcgQEAKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQo
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkZhY3Rvcnk6On5J
REJGYWN0b3J5KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBA
QAogICAgIEFTU0VSVChtX3JlcXVlc3QpOwogICAgIEFTU0VSVChtX3NvdXJjZS0+dHlwZSgpID09
IElEQkFueTo6SURCT2JqZWN0U3RvcmVUeXBlIHx8IG1fc291cmNlLT50eXBlKCkgPT0gSURCQW55
OjpJREJJbmRleFR5cGUpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIElEQkN1cnNvcjo6fklEQkN1cnNvcigpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAK
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSB0
byB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlv
blJlcXVpcmVtZW50KCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29u
c3QKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYg
KzEwMiw3IEBACiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9wcmV2aW91
c01ldGFkYXRhKHByZXZpb3VzTWV0YWRhdGEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIGlmIChtb2RlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hh
bmdlKSB7CiAgICAgICAgIC8vIE5vdCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgogICAgICAg
ICBtX3N0YXRlID0gSW5hY3RpdmU7CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDYgKzg2LDcgQEAKICAgICAsIG1fcHJldmVudFByb3BhZ2F0aW9uKGZhbHNlKQogICAgICwg
bV9yZXF1ZXN0U3RhdGUoY29udGV4dCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogewogICAgIEFT
U0VSVChtX2ZyYW1lKTsKICAgICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogICAgIGlmIChtX3N0b3JhZ2VBcmVhKQogICAgICAgICBtX3N0
b3JhZ2VBcmVhLT5pbmNyZW1lbnRBY2Nlc3NDb3VudCgpOwogfQpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZl
bnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAKIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFN0b3JhZ2VFdmVudDo6flN0b3JhZ2VFdmVudCgpCkBA
IC02Niw2ICs2Nyw3IEBACiAgICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3N0b3JhZ2VBcmVhKHN0
b3JhZ2VBcmVhKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogU3Rv
cmFnZUV2ZW50OjpTdG9yYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBT
dG9yYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTc2LDYgKzc4LDcgQEAKICAgICAsIG1f
dXJsKGluaXRpYWxpemVyLnVybCkKICAgICAsIG1fc3RvcmFnZUFyZWEoaW5pdGlhbGl6ZXIuc3Rv
cmFnZUFyZWEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiB2b2lk
IFN0b3JhZ2VFdmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybCwgU3RvcmFnZSogc3RvcmFnZUFyZWEpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKIEJsb2I6OkJsb2IoKQogICAgIDogbV9zaXpl
KDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIE93blB0cjxCbG9i
RGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAKICAgICAvLyBDcmVhdGUgYSBu
ZXcgaW50ZXJuYWwgVVJMIGFuZCByZWdpc3RlciBpdCB3aXRoIHRoZSBwcm92aWRlZCBibG9iIGRh
dGEuCkBAIC02Niw2ICs2Nyw3IEBACiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKICAgICBBU1NFUlQo
YmxvYkRhdGEpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIAogICAgIC8vIENy
ZWF0ZSBhIG5ldyBpbnRlcm5hbCBVUkwgYW5kIHJlZ2lzdGVyIGl0IHdpdGggdGhlIHByb3ZpZGVk
IGJsb2IgZGF0YS4KICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxV
UkwoKTsKQEAgLTc2LDYgKzc4LDggQEAKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9zaXpl
KHNpemUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGludGVybmFsIFVSTCBhbmQgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgc2FtZSBibG9i
IGRhdGEgYXMgdGhlIHNvdXJjZSBVUkwuCiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKDAsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3QuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogRmlsZUxp
c3Q6OkZpbGVMaXN0KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IEZpbGUqIEZpbGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdApJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAKICAgICAsIG1f
c25hcHNob3RNb2RpZmljYXRpb25UaW1lKGludmFsaWRGaWxlVGltZSgpKQogI2VuZGlmCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGaWxlOjpGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xMTQs
NiArMTE1LDcgQEAKICAgICAsIG1fc25hcHNob3RNb2RpZmljYXRpb25UaW1lKGludmFsaWRGaWxl
VGltZSgpKQogI2VuZGlmCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IG1fbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICAvLyBGSVhNRTogRmlsZSBvYmpl
Y3Qgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gZG9lcyBub3QgaW5jbHVkZQogICAgIC8v
IG5ld2VyIGZpbGUgb2JqZWN0IGRhdGEgbWVtYmVyczogbV9uYW1lIGFuZCBtX3JlbGF0aXZlUGF0
aC4KQEAgLTEyOSw2ICsxMzEsNyBAQAogICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUo
aW52YWxpZEZpbGVUaW1lKCkpCiAjZW5kaWYKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCkBAIC0xMzksNiArMTQyLDcgQEAK
ICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxlbmd0aCkKICAgICAsIG1fc25hcHNob3RN
b2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGaWxlOjpGaWxlKGNvbnN0IEtVUkwmIGZpbGVT
eXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCkBAIC0xNDcsNiArMTUxLDcg
QEAKICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxlbmd0aCkKICAgICAsIG1fc25hcHNo
b3RNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogI2VuZGlmCiAKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAg
ICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lzdGVtSWQpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBLVVJMIERvY3VtZW50VHlwZTo6
YmFzZVVSSSgpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDcgQEAKIHByaXZhdGU6CiAgICAgU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dCgpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQog
CiAgICAgU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikK
QEAgLTg2LDYgKzg3LDcgQEAKICAgICAgICAgLCBtX3NvdXJjZUZpbGUoaW5pdGlhbGl6ZXIuc291
cmNlRmlsZSkKICAgICAgICAgLCBtX2xpbmVOdW1iZXIoaW5pdGlhbGl6ZXIubGluZU51bWJlcikK
ICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAg
ICBTdHJpbmcgbV9kb2N1bWVudFVSSTsKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgOiBtX2J1dHRvbigwKQogICAg
ICwgbV9idXR0b25Eb3duKGZhbHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFj
dFZpZXc+IHZpZXcsCkBAIC0xMjYsNiArMTI3LDcgQEAKICAgICAsIG1fcmVsYXRlZFRhcmdldChy
ZWxhdGVkVGFyZ2V0KQogICAgICwgbV9jbGlwYm9hcmQoY2xpcGJvYXJkKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTW91c2VFdmVudDo6TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmIGluaXRpYWxp
emVyKQpAQCAtMTQwLDYgKzE0Miw3IEBACiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoaW5pdGlhbGl6
ZXIucmVsYXRlZFRhcmdldCkKICAgICAsIG1fY2xpcGJvYXJkKDAgLyogY2xpcGJvYXJkICovKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBpbml0Q29vcmRpbmF0ZXMo
SW50UG9pbnQoaW5pdGlhbGl6ZXIuY2xpZW50WCwgaW5pdGlhbGl6ZXIuY2xpZW50WSkpOwogfQog
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50
KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2Vk
VGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQpAQCAtNDcsNiArNDgsNyBAQAogICAg
ICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKICAgICAsIG1fcHNldWRvRWxlbWVudChwc2V1
ZG9FbGVtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJh
bnNpdGlvbkV2ZW50OjpUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBUcmFuc2l0aW9uRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTU1LDYgKzU3LDcgQEAK
ICAgICAsIG1fZWxhcHNlZFRpbWUoaW5pdGlhbGl6ZXIuZWxhcHNlZFRpbWUpCiAgICAgLCBtX3Bz
ZXVkb0VsZW1lbnQoaW5pdGlhbGl6ZXIucHNldWRvRWxlbWVudCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFRyYW5zaXRpb25FdmVudDo6flRyYW5zaXRpb25FdmVu
dCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAKICAgICA6IG1fZGVsdGFNb2RlKERPTV9ERUxUQV9QSVhFTCkKICAgICAsIG1f
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKGZhbHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IFdoZWVsRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTUwLDcg
KzUxLDcgQEAKICAgICAsIG1fd2hlZWxEZWx0YShJbnRQb2ludChpbml0aWFsaXplci53aGVlbERl
bHRhWCwgaW5pdGlhbGl6ZXIud2hlZWxEZWx0YVkpKQogICAgICwgbV9kZWx0YU1vZGUoaW5pdGlh
bGl6ZXIuZGVsdGFNb2RlKQogewotfQorICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTt9
CiAKIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQoY29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywg
Y29uc3QgRmxvYXRQb2ludCYgcmF3RGVsdGEsIHVuc2lnbmVkIGRlbHRhTW9kZSwKICAgICBQYXNz
UmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0aW9uLApAQCAtNjcsNiArNjgsNyBAQAogICAgICwg
bV9kZWx0YU1vZGUoZGVsdGFNb2RlKQogICAgICwgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZp
Y2UoZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogdm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQgcmF3
RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw3IEBA
CiAjZW5kaWYKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIodGhpcywgJkRv
Y3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKQogeworICAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgbV9wcmludGluZyA9IGZhbHNlOwogICAgIG1f
cGFnaW5hdGVkRm9yU2NyZWVuID0gZmFsc2U7CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTggKzUxLDIxIEBACiAKIEZvY3VzRXZlbnQ6OkZv
Y3VzRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRm9j
dXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBpbnQg
ZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0KQogICAgIDogVUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKICAgICAsIG1f
cmVsYXRlZFRhcmdldChyZWxhdGVkVGFyZ2V0KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IEZvY3VzRXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IFVJRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoaW5pdGlhbGl6ZXIucmVs
YXRlZFRhcmdldCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8Rm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I+IEZvY3VzRXZlbnREaXNwYXRjaE1l
ZGlhdG9yOjpjcmVhdGUoUGFzc1JlZlB0cjxGb2N1c0V2ZW50PiBmb2N1c0V2ZW50KQpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBACiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiAgICAgOiBtX2RhdGFUeXBlKERh
dGFUeXBlU2NyaXB0VmFsdWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtNTEsNiArNTIsNyBAQAog
ICAgICwgbV9zb3VyY2UoaW5pdGlhbGl6ZXIuc291cmNlKQogICAgICwgbV9wb3J0cyhhZG9wdFB0
cihuZXcgTWVzc2FnZVBvcnRBcnJheShpbml0aWFsaXplci5wb3J0cykpKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
Y29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQpAQCAtNjIsNiArNjQsNyBAQAogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogICAgICwgbV9wb3J0cyhwb3J0cykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKQEAgLTc3LDYgKzgwLDcgQEAKICAgICBpZiAo
bV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUpCiAgICAgICAgIG1fZGF0YUFzU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLT5yZWdpc3Rlck1lbW9yeUFsbG9jYXRlZFdpdGhDdXJyZW50U2NyaXB0Q29u
dGV4dCgpOwogI2VuZGlmCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQpAQCAtODYsNiArOTAsNyBAQAogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICwgbV9sYXN0RXZlbnRJZCgiIikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCkBAIC05NSw2ICsxMDAsNyBAQAogICAgICwgbV9vcmlnaW4o
b3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZCgiIikKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQpAQCAtMTA0LDYgKzExMCw3
IEBACiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogTWVzc2FnZUV2ZW50Ojp+TWVz
c2FnZUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5pZGwJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogICAgIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywKICAgICBWOEVuYWJsZWRBdFJ1
bnRpbWU9Y3VzdG9tRE9NRWxlbWVudHMsCiAgICAgVjhXcmFwQXNGdW5jdGlvbiwKKyAgICBWOFNr
aXBWVGFibGVWYWxpZGF0aW9uLAogICAgIEN1c3RvbUNhbGwKIF0gaW50ZXJmYWNlIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvciB7CiB9OwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjYxLDYgKzE2NjEsNyBAQAogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0
KDApCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIGlmICghbV90cmVl
U2NvcGUpCiAgICAgICAgIG1fdHJlZVNjb3BlID0gVHJlZVNjb3BlOjpub0RvY3VtZW50SW5zdGFu
Y2UoKTsKICAgICBtX3RyZWVTY29wZS0+Z3VhcmRSZWYoKTsKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogV2ViS2l0QW5pbWF0aW9uRXZlbnQ6OldlYktpdEFuaW1hdGlvbkV2
ZW50KCkKICAgICA6IG1fZWxhcHNlZFRpbWUoMC4wKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogV2ViS2l0QW5pbWF0aW9uRXZlbnQ6OldlYktpdEFuaW1hdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2ViS2l0QW5pbWF0aW9uRXZlbnRJ
bml0JiBpbml0aWFsaXplcikKQEAgLTQ2LDYgKzQ3LDcgQEAKICAgICAsIG1fYW5pbWF0aW9uTmFt
ZShpbml0aWFsaXplci5hbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShpbml0aWFs
aXplci5lbGFwc2VkVGltZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFdlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmltYXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBz
ZWRUaW1lKQpAQCAtNTMsNiArNTUsNyBAQAogICAgICwgbV9hbmltYXRpb25OYW1lKGFuaW1hdGlv
bk5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViS2l0QW5pbWF0aW9uRXZlbnQ6On5XZWJLaXRB
bmltYXRpb25FdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpCi0KICNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRIZWxwZXJzLmgiCkBAIC00Miw2ICs0MSwxMCBAQAogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2lmIFVTRShWOCkKKyNp
bmNsdWRlICJWOEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbG9jYWxOYW1lLCBjb25zdCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlKQpAQCAtNzcsMjEg
KzgwLDMwIEBACiB7CiAgICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwogICAgIGlmIChtX2xvY2FsTmFtZSAhPSBtX3R5
cGVOYW1lKQotICAgICAgICByZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihkb2N1bWVudCgpLT5jcmVh
dGVFbGVtZW50KG1fbG9jYWxOYW1lLCBkb2N1bWVudCgpKSwgbV90eXBlTmFtZS5sb2NhbE5hbWUo
KSk7Ci0gICAgaWYgKEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkgPT0gbV90eXBlTmFtZS5u
YW1lc3BhY2VVUkkoKSkKLSAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGUobV90eXBl
TmFtZSwgZG9jdW1lbnQoKSk7CisgICAgICAgIGVsZW1lbnQgPSBzZXRUeXBlRXh0ZW5zaW9uKGRv
Y3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobV9sb2NhbE5hbWUsIGRvY3VtZW50KCkpLCBtX3R5cGVO
YW1lLmxvY2FsTmFtZSgpKTsKKyAgICBlbHNlIGlmIChIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNl
VVJJID09IG1fdHlwZU5hbWUubmFtZXNwYWNlVVJJKCkpCisgICAgICAgIGVsZW1lbnQgPSBIVE1M
RWxlbWVudDo6Y3JlYXRlKG1fdHlwZU5hbWUsIGRvY3VtZW50KCkpOwogI2lmIEVOQUJMRShTVkcp
Ci0gICAgaWYgKFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkgPT0gbV90eXBlTmFtZS5uYW1lc3Bh
Y2VVUkkoKSkKLSAgICAgICAgcmV0dXJuIFNWR0VsZW1lbnQ6OmNyZWF0ZShtX3R5cGVOYW1lLCBk
b2N1bWVudCgpKTsKKyAgICBlbHNlIGlmIChTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJID09IG1f
dHlwZU5hbWUubmFtZXNwYWNlVVJJKCkpCisgICAgICAgIGVsZW1lbnQgPSBTVkdFbGVtZW50Ojpj
cmVhdGUobV90eXBlTmFtZSwgZG9jdW1lbnQoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gRWxlbWVu
dDo6Y3JlYXRlKG1fdHlwZU5hbWUsIGRvY3VtZW50KCkpOworICAgIGVsc2UKKyAgICAgICAgZWxl
bWVudCA9IEVsZW1lbnQ6OmNyZWF0ZShtX3R5cGVOYW1lLCBkb2N1bWVudCgpKTsKKyNpZiBVU0Uo
VjgpCisgICAgaWYgKEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpjb25zdHJ1Y3Rvck9mKGVsZW1lbnQu
Z2V0KCkpKQorICAgICAgICBlbGVtZW50LT5zZXRUeXBlSW5mbygmQ3VzdG9tRWxlbWVudEhlbHBl
cnM6OmluZm8pOworI2VuZGlmCisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIFBhc3NSZWZQdHI8
RWxlbWVudD4gc2V0VHlwZUV4dGVuc2lvbihQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbikKIHsKICAgICBpZiAoIXR5cGVFeHRlbnNp
b24uaXNFbXB0eSgpKQogICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpp
c0F0dHIsIHR5cGVFeHRlbnNpb24pOworCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9n
cmVzc0V2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQAogICAgICwgbV9sb2FkZWQoMCkKICAgICAsIG1fdG90YWwoMCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFByb2dyZXNzRXZlbnQ6OlByb2dyZXNz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQcm9ncmVzc0V2ZW50SW5pdCYg
aW5pdGlhbGl6ZXIpCkBAIC01MCw2ICs1MSw3IEBACiAgICAgLCBtX2xvYWRlZChpbml0aWFsaXpl
ci5sb2FkZWQpCiAgICAgLCBtX3RvdGFsKGluaXRpYWxpemVyLnRvdGFsKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQpAQCAtNTgsNiAr
NjAsNyBAQAogICAgICwgbV9sb2FkZWQobG9hZGVkKQogICAgICwgbV90b3RhbCh0b3RhbCkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAgICAgCiBjb25zdCBBdG9taWNT
dHJpbmcmIFByb2dyZXNzRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdApJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAgICAgLCBtX2lzWFNMKGZhbHNlKQogI2VuZGlm
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmgJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2
ICs1NSw3IEBACiAgICAgICAgICwgbV9kYXRhKCF0ZXh0LmlzTnVsbCgpID8gdGV4dCA6IGVtcHR5
U3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVPdGhlciB8fCB0
eXBlID09IENyZWF0ZVRleHQgfHwgdHlwZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7CisgICAgICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHNldERhdGFX
aXRob3V0VXBkYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogVUlFdmVudDo6VUlFdmVudCgpCiAgICAg
OiBtX2RldGFpbCgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
VUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5C
dWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZp
ZXdBcmcsIGludCBkZXRhaWxBcmcpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDcgQEAKICAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVU
aW1lKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFdmVudDo6RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVB
cmcpCkBAIC02Nyw2ICs2OCw3IEBACiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1f
Y3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRXZlbnQ6OkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRpYWxpemVy
KQpAQCAtODIsNiArODQsNyBAQAogICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2Ny
ZWF0ZVRpbWUoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEV2ZW50Ojp+RXZlbnQoKQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vRW50aXR5UmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQogICAg
ICwgbV9lbnRpdHlOYW1lKGVudGl0eU5hbWUpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50aXR5UmVmZXJlbmNl
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAKIAogVG91Y2hFdmVudDo6VG91Y2hFdmVudCgpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91
Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLApAQCAtNTksNiArNjAsNyBAQAogICAgICwg
bV9kb3VibGVUYXAoZmFsc2UpCiAjZW5kaWYKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFRvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVM
aXN0LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQAogICAgIDogTGl2ZU5vZGVMaXN0KHJvb3ROb2RlLCBQcm9wZXJ0eU5vZGVMaXN0VHlw
ZSwgSW52YWxpZGF0ZU9uSXRlbUF0dHJDaGFuZ2UsIE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50
SWZPd25lckhhc0l0ZW1yZWZBdHRyKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CisgICAgaW5pdFdy
YXBwYWJsZSh0aGlzKTsKIH0KIAogUHJvcGVydHlOb2RlTGlzdDo6flByb3BlcnR5Tm9kZUxpc3Qo
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdl
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
ZG9tL0hhc2hDaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw2ICs3MSw3IEBACiBwcml2YXRlOgogICAgIEhhc2hDaGFuZ2VFdmVudCgpCiAgICAg
eworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgSGFz
aENoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCkK
QEAgLTc4LDYgKzc5LDcgQEAKICAgICAgICAgLCBtX29sZFVSTChvbGRVUkwpCiAgICAgICAgICwg
bV9uZXdVUkwobmV3VVJMKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIH0KIAogICAgIEhhc2hDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEhhc2hDaGFuZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAtODUsNiArODcs
NyBAQAogICAgICAgICAsIG1fb2xkVVJMKGluaXRpYWxpemVyLm9sZFVSTCkKICAgICAgICAgLCBt
X25ld1VSTChpbml0aWFsaXplci5uZXdVUkwpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fb2xkVVJMOwpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRl
RXZlbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAgICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQogICAgICwgbV9oaXN0b3J5KDApCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQb3BTdGF0ZUV2ZW50OjpQ
b3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVu
dEluaXQmIGluaXRpYWxpemVyKQpAQCAtNTAsNiArNTEsNyBAQAogICAgICwgbV9zZXJpYWxpemVk
U3RhdGUoMCkKICAgICAsIG1faGlzdG9yeSgwKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+
IGhpc3RvcnkpCkBAIC01Nyw2ICs1OSw3IEBACiAgICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZShzZXJp
YWxpemVkU3RhdGUpCiAgICAgLCBtX2hpc3RvcnkoaGlzdG9yeSkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBvcFN0YXRlRXZlbnQ6On5Qb3BTdGF0ZUV2ZW50KCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudCgpCiAgICAgOiBt
X2F0dHJDaGFuZ2UoMCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IE11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRO
b2RlLApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
dmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMiArMzYsMTQgQEAKIAogQ3VzdG9tRXZlbnQ6OkN1c3RvbUV2ZW50KCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEN1c3RvbUV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fZGV0YWlsKGlu
aXRpYWxpemVyLmRldGFpbCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw2ICs1OCw3IEBACiAgICAgVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENoYXJhY3RlckRhdGEo
ZG9jdW1lbnQsIGRhdGEsIHR5cGUpCiAgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAgICAgLCBtX3JlZ2lzdGVyZWRX
aXRoUGFyZW50U2hhZG93Um9vdChmYWxzZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQog
ICAgIGlmICh0eXBlID09IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QpIHsKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzks
NyBAQAogewogICAgIC8vIERvY3VtZW50IHR5cGUgbm9kZXMgbWF5IGhhdmUgYSBudWxsIGRvY3Vt
ZW50LiBCdXQgc2luY2UgdGhleSBjYW4ndCBoYXZlIGNoaWxkcmVuLCB0aGVyZSBpcyBubyBuZWVk
IHRvIGxpc3RlbiBmb3IgbW9kaWZpY2F0aW9ucyB0byB0aGVzZS4KICAgICBBU1NFUlQocm9vdCgp
LT5kb2N1bWVudCgpIHx8IHJvb3QoKS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9UWVBF
X05PREUpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBpZiAoRG9jdW1l
bnQqIG93bmVyRG9jdW1lbnQgPSByb290KCktPmRvY3VtZW50KCkpCiAgICAgICAgIG93bmVyRG9j
dW1lbnQtPmF0dGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHJldmlzaW9u
IDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9u
YW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtMTI0OSw3ICsxMjQ5LDggQEAKIDsKICAgICB9CiAK
LSAgICBwcmludFdyYXBwZXJGdW5jdGlvbnMoJEYsICR3cmFwcGVyRmFjdG9yeVR5cGUpOworICAg
IGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIG5lICJWOCIpIHsgIyBzdGFydCBmdW5ueSBpbmRlbnQK
KyAgICAgICAgcHJpbnRXcmFwcGVyRnVuY3Rpb25zKCRGLCAkd3JhcHBlckZhY3RvcnlUeXBlKTsK
IAogICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJKUyIpIHsKICAgICAgICAgcHJpbnQg
RiA8PEVORApAQCAtMTM0Nyw2ICsxMzQ4LDggQEAKIEVORAogOwogCisgICAgfSAjIGVuZCBmdW5u
eSBpbmRlbnQKKwogICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAg
ICAgcHJpbnQgRiA8PEVORAogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogRXJyb3JFdmVudDo6RXJyb3JFdmVudCgpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFcnJvckV2ZW50OjpFcnJv
ckV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRXJyb3JFdmVudEluaXQmIGlu
aXRpYWxpemVyKQpAQCAtNTIsNiArNTMsNyBAQAogICAgICwgbV9maWxlTmFtZShpbml0aWFsaXpl
ci5maWxlbmFtZSkKICAgICAsIG1fbGluZU51bWJlcihpbml0aWFsaXplci5saW5lbm8pCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBFcnJvckV2ZW50OjpFcnJvckV2
ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgdW5zaWdu
ZWQgbGluZU51bWJlcikKQEAgLTYwLDYgKzYyLDcgQEAKICAgICAsIG1fZmlsZU5hbWUoZmlsZU5h
bWUpCiAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIEVycm9yRXZlbnQ6On5FcnJvckV2ZW50KCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYg
KzEwNSw3IEBACiAgICAgOiBtX2tleUxvY2F0aW9uKERPTUtleUxvY2F0aW9uU3RhbmRhcmQpCiAg
ICAgLCBtX2FsdEdyYXBoS2V5KGZhbHNlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIGtleSwgQWJzdHJhY3RWaWV3KiB2aWV3KQpAQCAtMTE1LDYgKzExNiw3IEBA
CiAgICAgLCBtX2tleUxvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9hbHRH
cmFwaEtleShmYWxzZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IEtleWJvYXJkRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTEyMyw2ICsxMjUs
NyBAQAogICAgICwgbV9rZXlMb2NhdGlvbihpbml0aWFsaXplci5rZXlMb2NhdGlvbikKICAgICAs
IG1fYWx0R3JhcGhLZXkoZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBBYnN0cmFjdFZpZXcg
KnZpZXcsCkBAIC0xMzMsNiArMTM2LDcgQEAKICAgICAsIG1fa2V5TG9jYXRpb24oa2V5TG9jYXRp
b24pCiAgICAgLCBtX2FsdEdyYXBoS2V5KGFsdEdyYXBoS2V5KQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogS2V5Ym9hcmRFdmVudDo6fktleWJvYXJkRXZlbnQoKQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBXZWJLaXRUcmFuc2l0aW9u
RXZlbnQ6OldlYktpdFRyYW5zaXRpb25FdmVudCgpCiAgICAgOiBtX2VsYXBzZWRUaW1lKDApCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9u
RXZlbnQ6OldlYktpdFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvRWxlbWVudCkKQEAgLTQ2LDYgKzQ3LDcgQEAKICAgICAsIG1fZWxhcHNlZFRpbWUo
ZWxhcHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCkKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFdlYktpdFRyYW5zaXRpb25FdmVu
dDo6V2ViS2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
V2ViS2l0VHJhbnNpdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBAIC01NCw2ICs1Niw3IEBA
CiAgICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVyLmVsYXBzZWRUaW1lKQogICAgICwgbV9w
c2V1ZG9FbGVtZW50KGluaXRpYWxpemVyLnBzZXVkb0VsZW1lbnQpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6On5XZWJLaXRU
cmFuc2l0aW9uRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBEb2N1bWVudEZyYWdt
ZW50OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlw
ZSBjb25zdHJ1Y3Rpb25UeXBlKQogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgY29uc3Ry
dWN0aW9uVHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTggKzM3LDIxIEBACiAKIENvbXBvc2l0aW9u
RXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEpCiAgICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCiAgICAg
LCBtX2RhdGEoZGF0YSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBDb21wb3NpdGlvbkV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBVSUV2
ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9kYXRhKGluaXRpYWxpemVyLmRhdGEpCiB7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDb21wb3NpdGlvbkV2ZW50
Ojp+Q29tcG9zaXRpb25FdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxNDcxMjYp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIGlubGluZSBDREFUQVNlY3Rpb246
OkNEQVRBU2VjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAg
ICA6IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0
aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5j
cHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIGlubGlu
ZSBDb21tZW50OjpDb21tZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgdGV4dCwgQ3JlYXRlT3RoZXIpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPENvbW1lbnQ+
IENvbW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQXV0b2NvbXBsZXRl
RXJyb3JFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0F1dG9jb21wbGV0ZUVycm9yRXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTggKzYwLDIxIEBACiBwcml2YXRlOgogICAgIEF1
dG9jb21wbGV0ZUVycm9yRXZlbnQoKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIH0KIAogICAgIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQoY29uc3QgU3Ry
aW5nJiByZWFzb24pCiAgICAgICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmF1dG9jb21wbGV0ZWVy
cm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkKICAgICAgICAgLCBtX3JlYXNvbihyZWFzb24pCiAgICAg
eworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgQXV0
b2NvbXBsZXRlRXJyb3JFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
QXV0b2NvbXBsZXRlRXJyb3JFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgICAgICA6IEV2ZW50
KGV2ZW50VHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgICAgICwgbV9yZWFzb24oaW5pdGlhbGl6ZXIu
cmVhc29uKQogICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IH0KIAogICAgIFN0cmluZyBtX3JlYXNvbjsKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU1vdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBA
CiBEZXZpY2VNb3Rpb25FdmVudDo6RGV2aWNlTW90aW9uRXZlbnQoKQogICAgIDogbV9kZXZpY2VN
b3Rpb25EYXRhKERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZSgpKQogeworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYXRhKiBkZXZp
Y2VNb3Rpb25EYXRhKQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpIC8vIENh
bid0IGJ1YmJsZSwgbm90IGNhbmNlbGFibGUKICAgICAsIG1fZGV2aWNlTW90aW9uRGF0YShkZXZp
Y2VNb3Rpb25EYXRhKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
dm9pZCBEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIERldmljZU1vdGlv
bkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dF
dmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAsIG1faG9yaXpv
bnRhbE92ZXJmbG93KGZhbHNlKQogICAgICwgbV92ZXJ0aWNhbE92ZXJmbG93KGZhbHNlKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogT3ZlcmZsb3dFdmVudDo6T3Zl
cmZsb3dFdmVudChib29sIGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQsIGJvb2wgaG9yaXpvbnRh
bE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCBib29sIHZlcnRpY2FsT3Zl
cmZsb3cpCkBAIC01MSw2ICs1Miw3IEBACiAgICAgLCBtX3ZlcnRpY2FsT3ZlcmZsb3codmVydGlj
YWxPdmVyZmxvdykKIHsKICAgICBBU1NFUlQoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCB8fCB2
ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogCiAgICAgaWYgKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQgJiYgdmVydGljYWxPdmVyZmxv
d0NoYW5nZWQpCiAgICAgICAgIG1fb3JpZW50ID0gQk9USDsKQEAgLTY2LDYgKzY4LDcgQEAKICAg
ICAsIG1faG9yaXpvbnRhbE92ZXJmbG93KGluaXRpYWxpemVyLmhvcml6b250YWxPdmVyZmxvdykK
ICAgICAsIG1fdmVydGljYWxPdmVyZmxvdyhpbml0aWFsaXplci52ZXJ0aWNhbE92ZXJmbG93KQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBPdmVyZmxvd0V2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZl
bnQuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2RvbS9CZWZvcmVMb2FkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTggKzY0LDIx
IEBACiBwcml2YXRlOgogICAgIEJlZm9yZUxvYWRFdmVudCgpCiAgICAgeworICAgICAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgQmVmb3JlTG9h
ZEV2ZW50KGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5i
ZWZvcmVsb2FkRXZlbnQsIGZhbHNlLCB0cnVlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICB7
CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiAKICAgICBCZWZv
cmVMb2FkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBCZWZvcmVMb2FkRXZl
bnRJbml0JiBpbml0aWFsaXplcikKICAgICAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikK
ICAgICAgICAgLCBtX3VybChpbml0aWFsaXplci51cmwpCiAgICAgeworICAgICAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fdXJsOwpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX2luQ2hpbGRy
ZW5DaGFuZ2VkKGZhbHNlKQogICAgICwgbV9zcGVjaWZpZWQodHJ1ZSkKIHsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEF0dHI6OkF0dHIoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYWxv
bmVWYWx1ZSkKQEAgLTU3LDYgKzU4LDcgQEAKICAgICAsIG1faW5DaGlsZHJlbkNoYW5nZWQoZmFs
c2UpCiAgICAgLCBtX3NwZWNpZmllZCh0cnVlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyPiBBdHRyOjpjcmVhdGUoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHkuaAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsMTAgQEAKICAgICBTdHJpbmcgbm90YXRpb25OYW1lKCkgY29uc3Qg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgRW50aXR5KCkgOiBDb250YWluZXJOb2RlKDApIHt9CisgICAgRW50aXR5KCkgOiBDb250YWlu
ZXJOb2RlKDApCisgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7Cisg
ICAgfQogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oCShyZXZpc2lvbiAxNDcxMjYp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiBwcm90ZWN0ZWQ6CiAgICAgRE9NU3Ry
aW5nTWFwKCkKICAgICB7CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAg
ICB9CiB9OwogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlTGlzdC5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDEyIEBACiAKICAgICAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlTm9kZUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorCisgICBwcm90ZWN0ZWQ6CisgICAgICAgIE5vZGVMaXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworICAgICAgICB9CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCArMzgsMjEg
QEAKIFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OlBhZ2VUcmFuc2l0aW9uRXZlbnQoKQogICAgIDogbV9w
ZXJzaXN0ZWQoZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBQYWdlVHJhbnNpdGlvbkV2ZW50OjpQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBwZXJzaXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCB0cnVlLCB0cnVl
KQogICAgICwgbV9wZXJzaXN0ZWQocGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBhZ2VUcmFuc2l0aW9uRXZlbnRJbml0
JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9w
ZXJzaXN0ZWQoaW5pdGlhbGl6ZXIucGVyc2lzdGVkKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFnZVRyYW5zaXRpb25FdmVudDo6flBhZ2VUcmFuc2l0aW9uRXZl
bnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDcgQEAKIERPTUltcGxlbWVudGF0aW9uOjpE
T01JbXBsZW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRv
Y3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogYm9vbCBE
T01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbikKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNiArNjcsNyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2Up
CiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3Ry
YWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5w
dXRUeXBlKQpAQCAtNzcsNiArNzgsNyBAQAogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFs
c2UpCiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoZmFsc2UpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwKQEAgLTg4LDYgKzkwLDcgQEAKICAgICAsIG1fc2hv
dWxkU21hcnRSZXBsYWNlKHNob3VsZFNtYXJ0UmVwbGFjZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hT
dHlsZShzaG91bGRNYXRjaFN0eWxlKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZl
PiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQpAQCAtOTgsNiArMTAxLDcgQEAKICAgICAsIG1fc2hv
dWxkTWF0Y2hTdHlsZShmYWxzZSkKICAgICAsIG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3Rh
dGlvbkFsdGVybmF0aXZlcykKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFRleHRFdmVudDo6flRleHRFdmVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyMiw2ICs2MjIsNyBAQAogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQs
IHR5cGUpCiAgICAgICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCiAgICAgeworICAgICAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVdhbGtlci5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICAgICA6IFRyYXZlcnNhbChyb290Tm9kZSwgd2hhdFRvU2hvdywgZmlsdGVyLCBl
eHBhbmRFbnRpdHlSZWZlcmVuY2VzKQogICAgICwgbV9jdXJyZW50KHJvb3QoKSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgVHJlZVdhbGtlcjo6c2V0Q3Vy
cmVudE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24u
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvZG9tL05vdGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAg
ICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lzdGVtSWQpCiB7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTdHJpbmcgTm90YXRpb246Om5v
ZGVOYW1lKCkgY29uc3QKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vTmFtZWROb2RlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNiArNzEsNyBAQAogICAgIHsKICAgICAgICAgLy8gT25seSBzdXBwb3J0cyBO
YW1lZE5vZGVNYXBzIHdpdGggRWxlbWVudCBhc3NvY2lhdGVkLCBEb2N1bWVudFR5cGUuZW50aXRp
ZXMgYW5kIERvY3VtZW50VHlwZS5ub3RhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgogICAg
ICAgICBBU1NFUlQobV9lbGVtZW50KTsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIH0KIAogICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBACiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50KCkKICAgICA6IG1fb3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRp
b25EYXRhOjpjcmVhdGUoKSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9yaWVudGF0aW9uRGF0YSogb3JpZW50YXRp
b24pCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkgLy8gQ2FuJ3QgYnViYmxl
LCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKIHsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgRGV2aWNlT3JpZW50YXRpb25EYXRh
KiBvcmllbnRhdGlvbikKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpZW50UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMTYgKzMxLDE5IEBACiAKIENsaWVudFJlY3Q6OkNsaWVudFJlY3QoKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ2xpZW50UmVjdDo6Q2xpZW50
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIDogbV9yZWN0KHJlY3QpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBDbGllbnRSZWN0OjpDbGllbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICA6IG1fcmVjdChyZWN0KQogeworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJh
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBET01NaW1lVHlwZUFycmF5OjpET01NaW1l
VHlwZUFycmF5KEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogRE9NTWltZVR5cGVBcnJh
eTo6fkRPTU1pbWVUeXBlQXJyYXkoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVn
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgLCBtX3BsdWdpbkRh
dGEocGx1Z2luRGF0YSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBET01QbHVnaW46On5ET01QbHVnaW4oKQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiBET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRnJh
bWUqIGZyYW1lKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBET01QbHVnaW5BcnJheTo6fkRPTVBsdWdpbkFy
cmF5KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhcklu
Zm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0JhckluZm8uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvcGFnZS9CYXJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCiAgICAgLCBtX3R5cGUodHlw
ZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEJhckluZm86OlR5
cGUgQmFySW5mbzo6dHlwZSgpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIFNjcmVlbjo6U2NyZWVuKEZyYW1lKiBmcmFtZSkKICAg
ICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjpob3Jpem9udGFsRFBJKCkgY29uc3QKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NiArNjIsNyBAQAogICAgICwgbV91c2VyVGltaW5nKDApCiAjZW5kaWYgLy8gRU5BQkxFKFVTRVJf
VElNSU5HKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGVyZm9y
bWFuY2U6On5QZXJmb3JtYW5jZSgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmNwcAkocmV2aXNp
b24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCwxNCBAQAogCiBT
cGVlY2hJbnB1dEV2ZW50OjpTcGVlY2hJbnB1dEV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFNwZWVjaElucHV0RXZlbnQ6OlNwZWVjaElucHV0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJy
YXkmIHJlc3VsdHMpCiAgICAgOiBFdmVudChldmVudFR5cGUsIHRydWUsIGZhbHNlKSAvLyBDYW4g
YnViYmxlLCBub3QgY2FuY2VsYWJsZQogICAgICwgbV9yZXN1bHRzKFNwZWVjaElucHV0UmVzdWx0
TGlzdDo6Y3JlYXRlKHJlc3VsdHMpKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogU3BlZWNoSW5wdXRFdmVudDo6flNwZWVjaElucHV0RXZlbnQoKQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiBDb25zb2xl
OjpDb25zb2xlKEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQog
eworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogQ29uc29sZTo6fkNvbnNv
bGUoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3
IEBACiAKIENyeXB0bzo6Q3J5cHRvKCkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIHZvaWQgQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoQXJyYXlCdWZmZXJWaWV3KiBh
cnJheSwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1l
KQogICAgICwgbV9sYXN0U3RhdGVPYmplY3RSZXF1ZXN0ZWQoMCkKIHsKKyAgICBTY3JpcHRXcmFw
cGFibGU6OmluaXQodGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhpc3Rvcnk6Omxlbmd0aCgpIGNvbnN0
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFtZSkKICAgICA6IERPTVdp
bmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogTmF2aWdhdG9yOjp+TmF2aWdhdG9yKCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE0NzEy
NikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogTG9jYXRpb246OkxvY2F0aW9uKEZy
YW1lKiBmcmFtZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogaW5saW5lIGNvbnN0IEtVUkwmIExvY2F0aW9u
Ojp1cmwoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBA
IC01MDQsMTMgKzUwNCwxMSBAQAogCiAgICAgbXkgJG5vVG9WOCA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJTdXBwcmVzc1RvSlNPYmplY3QifTsKICAgICBteSAkbm9XcmFwID0g
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Tm9XcmFwcGVyQ2FjaGUifSB8fCAk
bm9Ub1Y4OwotICAgIGlmICghJG5vV3JhcCkgewotICAgICAgICBteSAkY3JlYXRlV3JhcHBlckFy
Z3VtZW50VHlwZSA9IEdldFBhc3NSZWZQdHJUeXBlKCRuYXRpdmVUeXBlKTsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxF
TkQpIGlmICEkbm9XcmFwOwogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
JHtuYXRpdmVUeXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdy
YXBwZXIoJHtjcmVhdGVXcmFwcGVyQXJndW1lbnRUeXBlfSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcigke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiBFTkQKLSAgICB9CiAKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwpAQCAtNTQ2LDcgKzU0NCw2IEBACiB9
CiBFTkQKICAgICB9IGVsc2UgewotCiAgICAgICAgIG15ICRjcmVhdGVXcmFwcGVyQ2FsbCA9ICRj
dXN0b21XcmFwID8gIiR7djhJbnRlcmZhY2VOYW1lfTo6d3JhcCIgOiAiJHt2OEludGVyZmFjZU5h
bWV9OjpjcmVhdGVXcmFwcGVyIjsKICAgICAgICAgbXkgJHJldHVybmluZ1dyYXBwZXIgPSAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9N
V3JhcHBlcjo6dG9GdW5jdGlvbih3cmFwcGVyKSIgOiAid3JhcHBlciI7CiAgICAgICAgIG15ICRy
ZXR1cm5pbmdDcmVhdGVkV3JhcHBlck9wZW5pbmcgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhXcmFwQXNGdW5jdGlvbiJ9ID8gIlY4RE9NV3JhcHBlcjo6dG9GdW5jdGlvbigi
IDogIiI7CkBAIC01NjQsNiArNTYxLDEwIEBACiB7CiAgICAgQVNTRVJUKGltcGwpOwogICAgIEFT
U0VSVChET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsK
KyAgICBpZiAoU2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChpbXBs
KSkgeworICAgICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSBTY3JpcHRXcmFwcGFi
bGU6OmdldFR5cGVJbmZvRnJvbU9iamVjdChpbXBsKTsKKyAgICAgICAgcmV0dXJuIGluZm8tPndy
YXBPYmplY3RGdW5jdGlvbihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIH0K
ICAgICByZXR1cm4gJHtyZXR1cm5pbmdDcmVhdGVkV3JhcHBlck9wZW5pbmd9JGNyZWF0ZVdyYXBw
ZXJDYWxsKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSkke3JldHVybmluZ0NyZWF0ZWRX
cmFwcGVyQ2xvc2luZ307CiB9CiBFTkQKQEAgLTIxMjgsNyArMjEyOSw3IEBACiAKICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1l
fTo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCkuZ2V0KCksICZWOCR7aW50ZXJmYWNlTmFtZX06OmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0yMTk4LDcgKzIxOTksNyBAQAogICAgIFJl
ZlB0cjwke2ludGVyZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0
eXBlLCBldmVudEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
YXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGV2ZW50LnJlbGVhc2UoKSwgJlY4JHtpbnRlcmZhY2VOYW1lfTo6aW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgp
LmdldCgpLCAmVjgke2ludGVyZmFjZU5hbWV9OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiBFTkQKQEAgLTIyODQsNyArMjI4NSw3IEBACiAKICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiRnJhbWUuaCIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVyVHlw
ZUluZm8gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZh
Y2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJl
Zk9iamVjdCwgJHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVy
ZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBw
ZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gJHt2OEludGVyZmFjZU5h
bWV9Q29uc3RydWN0b3I6OmluZm8gPSB7ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlRE9N
T2JqZWN0LCAkdG9FdmVudFRhcmdldCwgMCwgJHt2OEludGVyZmFjZU5hbWV9OjppbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBl
LCAwIH07CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHt2OEludGVyZmFjZU5hbWV9
Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewpAQCAtMjM0
Miw3ICsyMzQzLDcgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
JHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLmdldCgpLCAmJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIEVORAogCkBAIC0yNzk2LDYgKzI3OTcsNyBAQAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJC
aW5kaW5nU3RhdGUuaCIpOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDb250ZXh0RmVhdHVyZXMu
aCIpOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsK
KyAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0V3JhcHBhYmxlLmgiKTsKICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiVjhCaW5kaW5nLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhET01X
cmFwcGVyLmgiKTsKIApAQCAtMjg1NiwxNiArMjg1OCw0MSBAQAogCiBFTkQKIAotCiAgICAgbXkg
JHBhcmVudENsYXNzSW5mbyA9ICRwYXJlbnRDbGFzcyA/ICImJHtwYXJlbnRDbGFzc306OmluZm8i
IDogIjAiOwotCiAgICAgbXkgJFdyYXBwZXJUeXBlUHJvdG90eXBlID0gJGludGVyZmFjZS0+aXNF
eGNlcHRpb24gPyAiV3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSIgOiAiV3JhcHBlclR5cGVPYmpl
Y3RQcm90b3R5cGUiOworICAgIG15ICRub1dyYXAgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhOb1dyYXBwZXJDYWNoZSJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTdXBwcmVzc1RvSlNPYmplY3QifTsKKyAgICBteSAkd3JhcHBlckZ1bmN0aW9uID0g
JG5vV3JhcCA/ICIwIiA6ICJyZWludGVycHJldF9jYXN0PFdyYXBPYmplY3RGdW5jdGlvbj4oJHt2
OEludGVyZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyKSI7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgIldyYXBwZXJUeXBlSW5mbyAke3Y4SW50ZXJmYWNlTmFtZX06OmluZm8gPSB7
ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZGVy
ZWZPYmplY3QsICR0b0FjdGl2ZURPTU9iamVjdCwgJHRvRXZlbnRUYXJnZXQsICRyb290Rm9yR0Ms
ICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
LCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUgfTtcblxuIik7Ci0gICAg
cHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfVY4
SW50ZXJuYWwge1xuXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQp
OworV3JhcHBlclR5cGVJbmZvICR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbyA9IHsgJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjpkZXJlZk9iamVjdCwg
JHRvQWN0aXZlRE9NT2JqZWN0LCAkdG9FdmVudFRhcmdldCwgJHJvb3RGb3JHQywgJHt2OEludGVy
ZmFjZU5hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsICRwYXJlbnRD
bGFzc0luZm8sICRXcmFwcGVyVHlwZVByb3RvdHlwZSwgJHt3cmFwcGVyRnVuY3Rpb259IH07CiAK
LSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkIFY4X1VTRShUKSB7IH1cblxuIik7CitFTkQKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgPDxFTkQpIGlmICEkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYo
JGludGVyZmFjZU5hbWUpOwordm9pZCBzY3JpcHR3cmFwcGFibGVfaW5pdCgke2ludGVyZmFjZU5h
bWV9KiBvYmplY3QpCit7CisgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3Rv
cmVkSW5PYmplY3Qob2JqZWN0KSkKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRUeXBlSW5m
b0luT2JqZWN0KG9iamVjdCwgJiR7djhJbnRlcmZhY2VOYW1lfTo6aW5mbyk7Cit9CiAKKy8vIERP
IE5PVCBDSS4gIEFubm95YW5jZSBnZW5lcmF0b3IgdG8gaWRlbnRpZnkgd3JhcHBhYmxlIGNsYXNz
ZXMgZnJvbSBjb21waWxlciwgb2guCisvLyBzdHJ1Y3QgQ2hlY2ske2ludGVyZmFjZU5hbWV9IHsK
Ky8vICAgIENoZWNrJHtpbnRlcmZhY2VOYW1lfSgpCisvLyAgICB7CisvLyAgICAgICAgaWYgKFNj
cmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3QoKCR7aW50ZXJmYWNlTmFt
ZX0qKTApKQorLy8gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRFUlA6ICR7aW50ZXJmYWNl
TmFtZX0gaXMgJHtuYXRpdmVUeXBlfVxcbiIpOworLy8gICAgfQorLy8gfTsKKy8vIHN0YXRpYyBD
aGVjayR7aW50ZXJmYWNlTmFtZX0gY2hlY2tfJHtpbnRlcmZhY2VOYW1lfTsKKworRU5ECisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOworbmFtZXNwYWNlICR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNF
KFQpIHsgfQorCitFTkQKKwogICAgIG15ICRoYXNDb25zdHJ1Y3RvcnMgPSAwOwogICAgIG15ICRo
YXNSZXBsYWNlYWJsZSA9IDA7CiAKQEAgLTM3MDQsMjIgKzM3MzEsMjIgQEAKIAogICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHt2OEludGVy
ZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyKCR7Y3JlYXRlV3JhcHBlckFyZ3VtZW50VHlwZX0gaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0
ZVdyYXBwZXIoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIEFTU0VSVChpbXBsLmdl
dCgpKTsKLSAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwuZ2V0KCksIGlz
b2xhdGUpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKGltcGwpOworICAgIEFTU0VSVChET01EYXRh
U3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKIEVORAogCiAgICAg
bXkgJHZ0YWJsZU5hbWVHbnUgPSBHZXRHbnVWVGFibGVOYW1lRm9ySW50ZXJmYWNlKCRpbnRlcmZh
Y2UpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCkgaWYgJHZ0YWJsZU5hbWVHbnU7CiAK
ICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY2hlY2tUeXBlT3JEaWVUcnlpbmco
aW1wbC5nZXQoKSk7CisgICAgY2hlY2tUeXBlT3JEaWVUcnlpbmcoaW1wbCk7CiAjZW5kaWYKIEVO
RAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAoJGJhc2VUeXBlIG5lICRpbnRl
cmZhY2VOYW1lKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PCR7
YmFzZVR5cGV9Kj4oaW1wbC5nZXQoKSkpID09IHN0YXRpY19jYXN0PHZvaWQqPihpbXBsLmdldCgp
KSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDwke2Jhc2VUeXBl
fSo+KGltcGwpKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbCkpOwogRU5ECiAKICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJEb2N1bWVudCIp
KSB7CkBAIC0zNzI3LDcgKzM3NTQsNyBAQAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5m
cmFtZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+c2NyaXB0KCktPmluaXRpYWxpemVNYWluV29y
bGQoKSkgewogICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVh
dGVkIGEgd3JhcHBlciBmb3IgdGhlIG9iamVjdCwgcmV0cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6Omdl
dFdyYXBwZXIoaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXIoaW1wbCwgaXNvbGF0
ZSk7CiAgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogICAgICAgICB9CkBAIC0zNzM3LDExICszNzY0LDExIEBACiAKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwg
JmluZm8sIGltcGwuZ2V0KCksIGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZp
bmZvLCBpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkp
KQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAotICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICBpbnN0YWxsUGVyQ29udGV4
dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbCwgaXNvbGF0ZSk7CiAgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwg
aGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDog
V3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21FbGVtZW50Q29uc3RydWN0b3JDdXN0b20uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsMTMgQEAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGltcGwtPmNyZWF0ZUVsZW1l
bnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwor
CiAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjp3cmFwKGVsZW1lbnQuZ2V0KCksIGFy
Z3MuSG9sZGVyKCksIGltcGwsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAordm9pZCBzY3JpcHR3
cmFwcGFibGVfaW5pdEN1c3RvbShTY3JpcHRXcmFwcGFibGUqIG9iamVjdCkKK3sKKyAgICBvYmpl
Y3QtPnNldFR5cGVJbmZvKCZDdXN0b21FbGVtZW50SGVscGVyczo6aW5mbyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYktpdFBvaW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAgIH0KICAgICBSZWZQ
dHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAmaW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9p
bnQucmVsZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNhbGwg
dXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAgIFJl
ZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4QXJy
YXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9D
b250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogICAgIAog
ICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhl
IGF1ZGlvIGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGF1ZGlvQ29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVsZWFzZSgpLmdldCgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZv
ID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4SFRNTElt
YWdlRWxlbWVudDo6ZGVyZWZPYmplY3QsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6dG9FdmVudFRh
cmdldCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUlu
Zm8gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjhIVE1MSW1hZ2VFbGVtZW50OjpkZXJlZk9i
amVjdCwgMCwgVjhIVE1MSW1hZ2VFbGVtZW50Ojp0b0V2ZW50VGFyZ2V0LCAwLCBWOEhUTUxJbWFn
ZUVsZW1lbnQ6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBl
clR5cGVPYmplY3RQcm90b3R5cGUsIDAgfTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvck1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewpAQCAtNzcsNyArNzcsNyBAQAogCiAgICAgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
cihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLmdldCgpLCAmVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20u
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgUmVmUHRyPERPTUZvcm1EYXRhPiBkb21Gb3JtRGF0
YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVs
ZWFzZSgpLmdldCgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXJyYXlCdWZmZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2LDcgKzc2LDcgQEAKICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxv
Y2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUg
aG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJl
bGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNWR0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw4IEBACiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoU1ZHRWxlbWVudCog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAgICByZXR1cm4gY3JlYXRlVjhTVkdX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgY29uc3QgV3JhcHBl
clR5cGVJbmZvKiBpbmZvID0gU2NyaXB0V3JhcHBhYmxlOjpnZXRUeXBlSW5mb0Zyb21PYmplY3Qo
aW1wbCk7CisgICAgcmV0dXJuIGluZm8tPndyYXBPYmplY3RGdW5jdGlvbihpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDggQEAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChIVE1MRWxlbWVudCog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKLSAgICByZXR1cm4gY3JlYXRlVjhIVE1M
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGNvbnN0IFdyYXBw
ZXJUeXBlSW5mbyogaW5mbyA9IFNjcmlwdFdyYXBwYWJsZTo6Z2V0VHlwZUluZm9Gcm9tT2JqZWN0
KGltcGwpOworICAgIHJldHVybiBpbmZvLT53cmFwT2JqZWN0RnVuY3Rpb24oaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogI2lmIEVOQUJMRShNSUNST0RBVEEpCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFj
az4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QoYXJnKSwgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2
ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxl
YXNlKCkuZ2V0KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9t
LmgJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBhcmdz
LkhvbGRlcigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJyYXku
Z2V0KCktPmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgpKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgp
LCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkluZGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGFycmF5LnJlbGVhc2UoKS5nZXQoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgp
LmdldCgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBACiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRw
UmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4p
OwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1
ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCShyZXZpc2lvbiAxNDcxMjYp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw3
IEBACiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotCiAgICAgUmVm
UHRyPE1lc3NhZ2VDaGFubmVsPiBvYmogPSBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQp
OwotCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwog
CiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgZnJvbSB0aGUgTWVzc2FnZUNoYW5uZWwgd3JhcHBl
ciB0byB0aGUgdHdvCkBAIC01Niw4ICs1NCw3IEBACiAgICAgLy8gc3RheSBhbGl2ZSBhcyBsb25n
IGFzIHRoZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVyIGlzIGFyb3VuZC4KICAgICBWOEhpZGRlblBy
b3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQxIiwgdG9W
OChvYmotPnBvcnQxKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAg
VjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJw
b3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSkpOwotCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYmou
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKS5nZXQoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0
SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4g
d3JhcHBlcjsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJz
LmgJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBACiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRIZWxwZXJzIHsKIHB1YmxpYzoKKyAg
ICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZUNvbnN0cnVjdG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgcHJvdG90eXBlLCBTY3JpcHRTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGlzVmFs
aWRQcm90b3R5cGVQYXJhbWV0ZXIoY29uc3QgU2NyaXB0VmFsdWUmLCBTY3JpcHRTdGF0ZSosIEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90
eXBlUGFyYW1ldGVyKGNvbnN0IFNjcmlwdFZhbHVlJiwgU2NyaXB0U3RhdGUqKTsKQEAgLTc3LDE0
ICs3OCwxNSBAQAogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGludm9rZVJlYWR5Q2FsbGJh
Y2tJZk5lZWRlZChFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwotICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50
Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZVdyYXBwZXIoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcldp
dGhFeHBsaWNpdENvbnN0cnVjdG9yKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBQ
YXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4sIHY4OjpJc29sYXRlKik7CiB9Owog
CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBDdXN0b21FbGVtZW50SGVscGVyczo6d3Jh
cChFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
UGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7CiAgICAgQVNTRVJUKERPTURhdGFT
dG9yZTo6Z2V0V3JhcHBlcihpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwotICAgIHJldHVybiBD
dXN0b21FbGVtZW50SGVscGVyczo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGNvbnN0cnVjdG9yLCBpc29sYXRlKTsKKyAgICByZXR1cm4gQ3VzdG9tRWxlbWVudEhlbHBlcnM6
OmNyZWF0ZVdyYXBwZXJXaXRoRXhwbGljaXRDb25zdHJ1Y3RvcihpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGNvbnN0cnVjdG9yLCBpc29sYXRlKTsKIH0KIAogaW5saW5lIFBhc3NSZWZQdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50SGVscGVyczo6Y29uc3RydWN0b3JPZihF
bGVtZW50KiBlbGVtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1Jl
ZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNXb3Jr
ZXJDb250ZXh0LCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwor
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIobV93b3JrZXJDb250
ZXh0LCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0LCBtX2lzb2xhdGUsIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBvYmplY3QgaW5zdGFu
Y2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
bV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOwpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBACiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRl
V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5
cGVJbmZvKiwgdm9pZCosIHY4OjpJc29sYXRlKik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICAgICAgc3RhdGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkxpZmV0aW1lKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFQqLCBXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZl
dGltZSk7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKICAgICAgICAgc3RhdGlj
IGlubGluZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFw
cGVyVHlwZUluZm8qKTsKIApAQCAtODksMTIgKzg5LDEzIEBACiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGlt
ZSkKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKFQqIG9iamVjdCwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCiAgICAgewotICAgICAgICBzZXRO
YXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdC5nZXQoKSk7CisgICAgICAgIG9iamVjdC0+
cmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGZ1bmN0aW9uIGZyb20gV3JhcHBlclR5cGVJbmZv
LgorICAgICAgICBzZXROYXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdCk7CiAgICAgICAg
IEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgICAgICBXcmFwcGVyQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbihvYmplY3Qu
Z2V0KCksIGxpZmV0aW1lKTsKLSAgICAgICAgRE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVyKG9iamVj
dC5sZWFrUmVmKCksIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOworICAgICAgICBX
cmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJh
dGlvbihvYmplY3QsIGxpZmV0aW1lKTsKKyAgICAgICAgRE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVy
KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxs
LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDEsNyArMzQxLDcgQEAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVyR2xvYmFsT2Jq
ZWN0ID0gdG9Jbm5lckdsb2JhbE9iamVjdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIFY4RE9NV3Jh
cHBlcjo6c2V0TmF0aXZlSW5mbyhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZv
LCB3aW5kb3cpOwogICAgIGlubmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3Jh
cHBlcik7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNz
UmVmUHRyPERPTVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFw
cGVyLCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIod2luZG93LCAmVjhET01XaW5k
b3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkRlcGVuZGVudCk7CiAgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3co
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3
IEBACiAKIFdyYXBwZXJUeXBlSW5mbyogbnBPYmplY3RUeXBlSW5mbygpCiB7Ci0gICAgc3RhdGlj
IFdyYXBwZXJUeXBlSW5mbyB0eXBlSW5mbyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgV3JhcHBl
clR5cGVPYmplY3RQcm90b3R5cGUgfTsKKyAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyB0eXBlSW5m
byA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUsIDAg
fTsKICAgICByZXR1cm4gJnR5cGVJbmZvOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdy
YXBwYWJsZS5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzksNDYgKzM5LDEzMCBA
QAogCiBjbGFzcyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgotICAgIFNjcmlwdFdyYXBwYWJs
ZSgpIHsgfQorICAgIFNjcmlwdFdyYXBwYWJsZSgpIDogbV9tYXNrZWRTdG9yYWdlKDApIHsgfQog
CisgICAgflNjcmlwdFdyYXBwYWJsZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9tYXNrZWRT
dG9yYWdlKTsgIC8vIEFzc2VydCBpbml0aWFsaXphdGlvbiB2aWEgaW5pdCgpIGV2ZW4gaWYgbm90
IHdyYXBwZWQgbGF0ZXIuCisgICAgICAgIG1fbWFza2VkU3RvcmFnZSA9IDA7ICAgICAgLy8gQnJl
YWsgVUFGIGF0dGVtcHRzIHRvIHdyYXAuCisgICAgfQorCiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KG1hc2tPclVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAg
ICB2ODo6T2JqZWN0KiBvYmplY3QgPSBjb250YWluc1dyYXBwZXIoKSA/IHJlaW50ZXJwcmV0X2Nh
c3Q8djg6Ok9iamVjdCo+KG1hc2tPclVubWFza1ZhbHVlKG1fbWFza2VkU3RvcmFnZSkpIDogMDsK
KyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4ob2JqZWN0KTsKICAgICB9CiAK
ICAgICB2b2lkIHNldFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewotICAgICAgICBBU1NFUlQobV9tYXNrZWRXcmFwcGVyLklzRW1wdHkoKSk7Cisg
ICAgICAgIEFTU0VSVCghY29udGFpbnNXcmFwcGVyKCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhpc29sYXRlLCB3cmFwcGVyKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5jb25maWd1cmVXcmFw
cGVyKHBlcnNpc3RlbnQsIGlzb2xhdGUpOwogICAgICAgICBwZXJzaXN0ZW50Lk1ha2VXZWFrKGlz
b2xhdGUsIHRoaXMsIHdlYWtDYWxsYmFjayk7Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlciA9IG1h
c2tPclVubWFza1BvaW50ZXIoKnBlcnNpc3RlbnQpOworICAgICAgICBtX21hc2tlZFN0b3JhZ2Ug
PSBtYXNrT3JVbm1hc2tWYWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oKnBlcnNpc3Rl
bnQpKTsKICAgICB9CiAKKyAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIHR5cGVJbmZvKCkKKyAg
ICB7CisgICAgICAgIGlmIChjb250YWluc1R5cGVJbmZvKCkpCisgICAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBXcmFwcGVyVHlwZUluZm8qPihtX21hc2tlZFN0b3JhZ2Ug
JiB+MSk7CisKKyAgICAgICAgaWYgKGNvbnRhaW5zV3JhcHBlcigpKQorICAgICAgICAgICAgcmV0
dXJuIHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIoKSk7CisKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRUeXBlSW5mbyhjb25zdCBXcmFwcGVyVHlwZUluZm8qIGluZm8p
CisgICAgeworICAgICAgICBtX21hc2tlZFN0b3JhZ2UgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGluZm8pIHwgMSk7CisgICAgfQorCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKICAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpET00pOwotICAgICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX21hc2tlZFdyYXBwZXIp
OworICAgICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX21hc2tlZFN0b3JhZ2UpOwogICAgIH0KIAor
ICAgIHN0YXRpYyBib29sIHdyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KGNvbnN0IHZvaWQqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIHdyYXBwZXJDYW5CZVN0b3JlZEluT2Jq
ZWN0KGNvbnN0IFNjcmlwdFdyYXBwYWJsZSopIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9tT2JqZWN0KHZvaWQqKQorICAg
IHsKKyAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBnZXRXcmFwcGVyRnJvbU9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCkKKyAgICB7Cisg
ICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
c2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNv
bGF0ZSosIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJikKKyAgICB7CisgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmpl
Y3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQorICAgIHsKKyAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyLCBpc29s
YXRlLCBjb25maWd1cmF0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgV3JhcHBlclR5
cGVJbmZvKiBnZXRUeXBlSW5mb0Zyb21PYmplY3Qodm9pZCogb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdCBXcmFwcGVyVHlwZUluZm8qIGdldFR5cGVJbmZvRnJvbU9iamVjdChTY3Jp
cHRXcmFwcGFibGUqIG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QtPnR5cGVJ
bmZvKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0VHlwZUluZm9Jbk9iamVjdCh2b2lk
KiBvYmplY3QsIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNldFR5cGVJbmZv
SW5PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIGNvbnN0IFdyYXBwZXJUeXBlSW5mbyog
aW5mbykKKyAgICB7CisgICAgICAgIG9iamVjdC0+c2V0VHlwZUluZm8oaW5mbyk7CisgICAgfQor
CisgICAgLy8gV3JhcHBhYmxlcyBuZWVkIHRvIGJlIGluaXRpYWxpemVkIHdpdGggdGhlaXIgbW9z
dCBkZXJyaXZlZCB3cmFwcGVkIHR5cGUKKyAgICAvLyBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0
IGNlcnRhaW4gb3RoZXIgdHlwZXMgbmVlZCB0byBiZSBhZG9wdGVkIGFuZAorICAgIC8vIHNvIGZv
cnRoLiBUaGUgdGVtcGxhdGVkIEluaXQoKSBtZXRob2RzIGFyZSBpbnN0YW50aWF0ZWQgaW4gdGhl
IGdlbmVyYXRlZAorICAgIC8vIFY4IGJpbmRpbmdzIGNvZGUuIFRoZSBjdXN0b20gaW5pdCBtZXRo
b2QgaXMgcHJvdmlkZWQgYnkgdGhlIGN1c3RvbSBlbGVtZW50CisgICAgLy8gY29uc3RydWN0b3In
cyBjdXN0b20gY29kZS4gVGhlIEpTQyBjb2RlIHdpbGwgbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB2
aWEKKyAgICAvLyBuby1vcCAodm9pZCopIG1ldGhvZHMgaGVyZS4KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD5zdGF0aWMgdm9pZCBpbml0KFQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIGV4dGVy
biB2b2lkIHNjcmlwdHdyYXBwYWJsZV9pbml0KFQqKTsgIC8vIFdvcmthcm91bmQgZm9yIGxhY2sg
b2YgZXh0ZXJuIHRlbXBsYXRlIHByaW9yIHRvIEMrKzExLgorICAgICAgICBzY3JpcHR3cmFwcGFi
bGVfaW5pdChvYmplY3QpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGluaXRBc0N1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvckNhbGxlcihTY3JpcHRXcmFwcGFibGUqIG9iamVjdCkKKyAgICB7Cisg
ICAgICAgIGV4dGVybiB2b2lkIHNjcmlwdHdyYXBwYWJsZV9pbml0Q3VzdG9tKFNjcmlwdFdyYXBw
YWJsZSopOyAvLyBBdm9pZCBjaXJ1bGFyIGluY2x1c2lvbi4KKyAgICAgICAgc2NyaXB0d3JhcHBh
YmxlX2luaXRDdXN0b20ob2JqZWN0KTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZv
aWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCisgICAgc3RhdGljIGlubGluZSB1aW50cHRyX3QgbWFza09yVW5tYXNr
VmFsdWUodWludHB0cl90IHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdy
YXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKCp2YWx1ZSA9PSBtYXNrT3JVbm1hc2tQ
b2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKLSAgICAgICAgdmFsdWUuRGlzcG9zZShpc29sYXRl
KTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyLkNsZWFyKCk7CisgICAgICAgIGNvbnN0IHVpbnRw
dHJfdCByYW5kb21NYXNrID0gfigocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZXZWJDb3Jl
TWVtb3J5VHlwZXM6OkRPTSkgPj4gMTMpIHwgMSk7IC8vIEVudHJvcHkgdmlhIEFTTFIsIGJvdHRv
bSBiaXQgY2xlYXIuCisgICAgICAgIHJldHVybiAodmFsdWUgXiByYW5kb21NYXNrKSAmICghdmFs
dWUgLSAxKTsgLy8gUHJlc2VydmUgbnVsbCB3aXRob3V0IGJyYW5jaGluZy4KICAgICB9CiAKLSAg
ICAvLyBTdG9yZXMgYSBtYXNrZWQgd3JhcHBlciB0byBwcmV2ZW50IGF0dGFja2VycyBmcm9tIG92
ZXJ3cml0aW5nIHRoaXMgZmllbGQKLSAgICAvLyB3aXRoIGEgcGhvbnkgd3JhcHBlci4KLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX21hc2tlZFdyYXBwZXI7CisgICAgaW5saW5lIGJv
b2wgY29udGFpbnNUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIChtX21hc2tlZFN0b3JhZ2UgJiAx
KSA9PSAxOyB9CisgICAgaW5saW5lIGJvb2wgY29udGFpbnNXcmFwcGVyKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrZWRTdG9yYWdlICYmICgobV9tYXNrZWRTdG9yYWdlICYgMSkgPT0gMCk7IH0KIAot
ICAgIHN0YXRpYyBpbmxpbmUgdjg6Ok9iamVjdCogbWFza09yVW5tYXNrUG9pbnRlcihjb25zdCB2
ODo6T2JqZWN0KiBvYmplY3QpCisgICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdy
YXBwZXJUeXBlSW5mbyogaW5mbykKICAgICB7Ci0gICAgICAgIGNvbnN0IHVpbnRwdHJfdCBvYmpl
Y3RQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdCk7Ci0gICAgICAg
IGNvbnN0IHVpbnRwdHJfdCByYW5kb21NYXNrID0gfihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oJldlYkNvcmVNZW1vcnlUeXBlczo6RE9NKSA+PiAxMyk7IC8vIEVudHJvcHkgdmlhIEFTTFIu
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHY4OjpPYmplY3QqPigob2JqZWN0UG9p
bnRlciBeIHJhbmRvbU1hc2spICYgKCFvYmplY3RQb2ludGVyIC0gMSkpOyAvLyBQcmVzZXJ2ZSBu
dWxsIHdpdGhvdXQgYnJhbmNoaW5nLgorICAgICAgICBBU1NFUlQoY29udGFpbnNXcmFwcGVyKCkg
JiYgbV9tYXNrZWRTdG9yYWdlICE9IDApOworICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KCp2YWx1ZSkgPT0gbWFza09yVW5tYXNrVmFsdWUobV9tYXNrZWRTdG9yYWdl
KSk7CisgICAgICAgIHZhbHVlLkRpc3Bvc2UoaXNvbGF0ZSk7CisgICAgICAgIHNldFR5cGVJbmZv
KGluZm8pOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4
dCkKQEAgLTkzLDEyICsxNzcsMTkgQEAKICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0g
dG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChpbmZvLT5kZXJlZk9i
amVjdEZ1bmN0aW9uKTsKIAotICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZhbHVlLCBpc29s
YXRlKTsKKyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSwgaXNvbGF0ZSwgaW5mbyk7
CiAgICAgICAgIC8vIEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xl
IHRpbWVzIGNhbiBiZSBjb25zdW1lZAogICAgICAgICAvLyBpbnNpZGUga2V5LT5kZXJlZigpLCB3
aGljaCBjYXVzZXMgTm9kZSBkZXN0cnVjdGlvbnMuIFdlIHNob3VsZAogICAgICAgICAvLyBtYWtl
IE5vZGUgZGVzdHJ1Y3Rpb25zIGluY3JlbWVudGFsLgogICAgICAgICBpbmZvLT5kZXJlZk9iamVj
dChvYmplY3QpOwogICAgIH0KKworICAgIC8vIElmIHplcm8sIHRoZW4gdGhpcyBjb250YWlucyBu
b3RoaW5nLCBvdGhlcndpc2U6CisgICAgLy8gICBJZiB0aGUgYm90dG9tIGJpdCBpdCBjbGVhciwg
dGhlbiB0aGlzIGNvbnRhaW5zIGEgbWFza2VkIHBvaW50ZXIgdG8gYSB3cmFwcGVyIG9iamVjdC4K
KyAgICAvLyAgIElmIHRoZSBib3R0b20gYml0IGlzIHNldCwgdGhlbiB0aGlzIGNvbnRhaW5zIGEg
cG9pbnRlciB0byB0aGUgd3JhcHBlciB0eXBlIGluZm8gaW4gdGhlIHJlbWFpbmluZyBiaXRzLgor
ICAgIC8vIE1hc2tpbmcgd3JhcHBlcnMgcHJldmVudHMgYXR0YWNrZXJzIGZyb20gb3ZlcndyaXRp
bmcgdGhpcyBmaWVsZCB3aXRoIHBvaW50ZXJzIHRvIHNwcmF5ZWQgZGF0YS4KKyAgICAvLyBQb2lu
dGVycyBpbnNpZGUgV3JhcHBlciBUeXBlIEluZm8gYXJlIGFscmVhZHkgcHJvdGVjdGVkIGJ5IEFT
TFIuCisgICAgdWludHB0cl90IG1fbWFza2VkU3RvcmFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEFkYXB0b3JG
dW5jdGlvbjo6aW5mbyA9IHsgVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlLCAwLCAwLCAw
LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZv
IFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxh
dGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLCAwIH07CiAK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6
Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dyYXBwZXJUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dy
YXBwZXJUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiAgICAgY2xhc3MgQWN0aXZl
RE9NT2JqZWN0OwogICAgIGNsYXNzIERPTURhdGFTdG9yZTsKICAgICBjbGFzcyBFdmVudFRhcmdl
dDsKQEAgLTYxLDYgKzYxLDcgQEAKICAgICB0eXBlZGVmIEV2ZW50VGFyZ2V0KiAoKlRvRXZlbnRU
YXJnZXRGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiB2b2lk
KiAoKk9wYXF1ZVJvb3RGb3JHQykodm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCB2
ODo6SXNvbGF0ZSopOwogICAgIHR5cGVkZWYgdm9pZCAoKkluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllc0Z1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSopOworICAgIHR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAoKldyYXBPYmplY3RGdW5j
dGlvbikodm9pZCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7CiAKICAg
ICBlbnVtIFdyYXBwZXJUeXBlUHJvdG90eXBlIHsKICAgICAgICAgV3JhcHBlclR5cGVPYmplY3RQ
cm90b3R5cGUsCkBAIC03Niw4ICs3Nyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KHY4OjpFeHRlcm5hbDo6Q2FzdCgq
dHlwZUluZm9XcmFwcGVyKS0+VmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IAorCiAgICAgICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdyYXBwZXJUeXBlSW5mbyogdGhhdCkgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMgPT0gdGhhdDsKQEAgLTkyLDE1
ICs5MiwxOCBAQAogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpIHsg
cmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsgfQotICAgICAg
ICAKKworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRl
LCB3b3JsZFR5cGUpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkZXJlZk9iamVjdCh2b2lk
KiBvYmplY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9u
KSAKKyAgICAgICAgICAgIGlmIChkZXJlZk9iamVjdEZ1bmN0aW9uKQogICAgICAgICAgICAgICAg
IGRlcmVmT2JqZWN0RnVuY3Rpb24ob2JqZWN0KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHByb3RvLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9u
KQpAQCAtMTM2LDYgKzEzOSw3IEBACiAgICAgICAgIGNvbnN0IEluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllc0Z1bmN0aW9uIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllc0Z1bmN0aW9uOwogICAgICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIHBhcmVudENsYXNz
OwogICAgICAgICBjb25zdCBXcmFwcGVyVHlwZVByb3RvdHlwZSB3cmFwcGVyVHlwZVByb3RvdHlw
ZTsKKyAgICAgICAgY29uc3QgV3JhcE9iamVjdEZ1bmN0aW9uIHdyYXBPYmplY3RGdW5jdGlvbjsK
ICAgICB9OwogCiAgICAgaW5saW5lIHZvaWQqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwxNyArNDQsMjUgQEAKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKLXY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmNyZWF0ZVdyYXBwZXIoUGFz
c1JlZlB0cjxFbGVtZW50PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK1dyYXBwZXJUeXBlSW5mbyBDdXN0b21FbGVtZW50SGVscGVy
czo6aW5mbyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8V3JhcE9iamVjdEZ1bmN0aW9uPihDdXN0b21FbGVtZW50SGVs
cGVyczo6Y3JlYXRlV3JhcHBlcikgfTsKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBDdXN0b21F
bGVtZW50SGVscGVyczo6Y3JlYXRlV3JhcHBlcihFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CisgICAg
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBDdXN0b21FbGVt
ZW50SGVscGVyczo6Y29uc3RydWN0b3JPZihpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cldpdGhFeHBsaWNpdENvbnN0cnVjdG9yKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgY29uc3RydWN0
b3IsIGlzb2xhdGUpOworfQorCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEN1c3RvbUVsZW1lbnRI
ZWxwZXJzOjpjcmVhdGVXcmFwcGVyV2l0aEV4cGxpY2l0Q29uc3RydWN0b3IoRWxlbWVudCogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CiAgICAgQVNTRVJUKGltcGwpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIGFuZCByZWdp
c3RlcmVkIGxpZmVjeWNsZSBjYWxsYmFja3Mgc2hvdWxkIGJlIHZpc2libGUgb25seSBmcm9tIG1h
aW4gd29ybGQuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZCBvbmNlIGVh
Y2ggY3VzdG9tIGVsZW1lbnQgaGFzIGl0cyBvd24gRnVuY3Rpb25UZW1wbGF0ZQogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgxMzgKICAgICBpZiAoIUN1
c3RvbUVsZW1lbnRIZWxwZXJzOjppc0ZlYXR1cmVBbGxvd2VkKGNyZWF0aW9uQ29udGV4dC0+Q3Jl
YXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZWOEhUTUxF
bGVtZW50OjppbmZvLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9u
Q29udGV4dCwgJlY4SFRNTEVsZW1lbnQ6OmluZm8sIGltcGwsIGlzb2xhdGUpOwogICAgICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmVjhIVE1MRWxlbWVudDo6aW5mbywgd3JhcHBlciwg
aXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgICAgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmVjhIVE1MRWxlbWVu
dDo6aW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVu
dCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIApAQCAtNjcsNyArNzUsNyBAQAog
ICAgIGlmICghdHlwZUluZm8pCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCB0eXBlSW5mbywgaW1wbC5nZXQoKSwgaXNv
bGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgdHlwZUluZm8sIGltcGwsIGlzb2xhdGUp
OwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKTsKIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAkocmV2aXNpb24g
MTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiRE9NV3JhcHBlck1hcC5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJWOEdD
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHY4
Lmg+CkBAIC02Niw4ICs2Nyw4IEBACiAgICAgICAgIC8vIHdheSBpcyB0byBjaGVjayB3aGV0aGVy
IHRoZSB3cmFwcGFibGUncyB3cmFwcGVyIGlzIHRoZSBzYW1lIGFzCiAgICAgICAgIC8vIHRoZSBo
b2xkZXIuCiAgICAgICAgIGlmICgoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlz
dCgpICYmICFjYW5FeGlzdEluV29ya2VyKG9iamVjdCkpIHx8IGhvbGRlckNvbnRhaW5zV3JhcHBl
cihjb250YWluZXIsIGhvbGRlcikpIHsKLSAgICAgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVy
SXNTdG9yZWRJbk9iamVjdChvYmplY3QpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZXRXcmFw
cGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6
d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2NyaXB0V3JhcHBhYmxlOjpnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOwogICAgICAg
ICAgICAgcmV0dXJuIG1haW5Xb3JsZFN0b3JlKCktPm1fd3JhcHBlck1hcC5nZXQob2JqZWN0KTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gY3VycmVudChjb250YWluZXIuR2V0SXNvbGF0ZSgp
KS0+Z2V0KG9iamVjdCk7CkBAIC03Niw5ICs3Nyw5IEBACiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyKFQqIG9iamVj
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3Jh
cHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiAhY2FuRXhpc3RJbldvcmtlcihvYmplY3Qp
KSB7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2Jq
ZWN0KG9iamVjdCkgJiYgIWNhbkV4aXN0SW5Xb3JrZXIob2JqZWN0KSkgewogICAgICAgICAgICAg
aWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAg
ICAgICAgICAgIHJldHVybiBTY3JpcHRXcmFwcGFibGU6OmdldFdyYXBwZXJGcm9tT2JqZWN0KG9i
amVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGN1cnJlbnQoaXNvbGF0ZSktPmdldChv
YmplY3QpOwogICAgIH0KQEAgLTg2LDE3ICs4NywxOCBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZvck1haW5X
b3JsZChUKiBvYmplY3QpCiAgICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3Rv
cmVkSW5PYmplY3Qob2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9i
amVjdChvYmplY3QpOworCisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5C
ZVN0b3JlZEluT2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gU2NyaXB0V3JhcHBh
YmxlOjpnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gbWFpbldv
cmxkU3RvcmUoKS0+Z2V0KG9iamVjdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyKFQqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewotICAgICAgICBpZiAobWFpbldvcmxkV3Jh
cHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiAhY2FuRXhpc3RJbldvcmtlcihvYmplY3Qp
KSB7CisgICAgICAgIGlmIChTY3JpcHRXcmFwcGFibGU6OndyYXBwZXJDYW5CZVN0b3JlZEluT2Jq
ZWN0KG9iamVjdCkgJiYgIWNhbkV4aXN0SW5Xb3JrZXIob2JqZWN0KSkgewogICAgICAgICAgICAg
aWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKSB7Ci0g
ICAgICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0
ZSwgY29uZmlndXJhdGlvbik7CisgICAgICAgICAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjpzZXRX
cmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEw
Niw4ICsxMDgsOCBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZ2V0KFQqIG9iamVjdCkKICAgICB7Ci0gICAgICAgIGlmIChtYWlu
V29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBNYWluV29y
bGQpCi0gICAgICAgICAgICByZXR1cm4gZ2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKKyAg
ICAgICAgaWYgKFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmplY3Qob2Jq
ZWN0KSAmJiBtX3R5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFdy
YXBwYWJsZTo6Z2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG1f
d3JhcHBlck1hcC5nZXQob2JqZWN0KTsKICAgICB9CiAKQEAgLTExOSw4ICsxMjEsOCBAQAogICAg
IHsKICAgICAgICAgQVNTRVJUKCEhb2JqZWN0KTsKICAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklz
RW1wdHkoKSk7Ci0gICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChv
YmplY3QpICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKLSAgICAgICAgICAgIHNldFdyYXBwZXJJ
bk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOworICAgICAg
ICBpZiAoU2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyQ2FuQmVTdG9yZWRJbk9iamVjdChvYmplY3Qp
ICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKKyAgICAgICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6
c2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlv
bik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV93cmFwcGVyTWFw
LnNldChvYmplY3QsIHdyYXBwZXIsIGNvbmZpZ3VyYXRpb24pOwpAQCAtMTI4LDkgKzEzMCw2IEBA
CiAKICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBtYWluV29ybGRTdG9yZSgpOwogCi0gICAgc3Rh
dGljIGJvb2wgbWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qodm9pZCopIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgc3RhdGljIGJvb2wgbWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmpl
Y3QoU2NyaXB0V3JhcHBhYmxlKikgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgc3RhdGljIGJvb2wg
Y2FuRXhpc3RJbldvcmtlcih2b2lkKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29s
IGNhbkV4aXN0SW5Xb3JrZXIoTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTEzOSw2ICsx
MzgsNyBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhvbGRlckNvbnRhaW5lcj4KICAgICBzdGF0aWMgYm9vbCBob2xkZXJDb250
YWluc1dyYXBwZXIoY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFNjcmlwdFdyYXBw
YWJsZSogd3JhcHBhYmxlKQogICAgIHsKQEAgLTE0NywyNSArMTQ3LDYgQEAKICAgICAgICAgcmV0
dXJuIGNvbnRhaW5lci5Ib2xkZXIoKSA9PSB3cmFwcGFibGUtPndyYXBwZXIoKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2
b2lkKikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIH0KLSAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVj
dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvYmplY3QtPndyYXBwZXIoKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCosIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKiwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mKQotICAgIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNl
dFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCi0gICAgewotICAgICAgICBvYmplY3QtPnNldFdyYXBw
ZXIod3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7Ci0gICAgfQotCiAgICAgV3JhcHBl
cldvcmxkVHlwZSBtX3R5cGU7CiAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiBtX3dyYXBwZXJNYXA7
CiB9OwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIG1h
cmtlcldpZHRoL21hcmtlckhlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVm
ZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIzIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6bWFya2VyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFya2VyRWxl
bWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAsIG1faXNBbmltVmFsT2JzZXJ2
ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdQYXRoRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9mYWNlX3VyaVRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZVVyaUVsZW1l
bnQ+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogICAg
IDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVRpbGVUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdGRVRpbGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogICAgIDogU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQog
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFn
TmFtZSwgZG9jKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHVGV4dEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiB7CiAgICAgc2V0Q2FsY01vZGUoQ2FsY01vZGVQYWNl
ZCk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYW5pbWF0ZU1vdGlvblRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlTW90aW9u
RWxlbWVudD4gU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAsIG1fX29wZXJhdG9yKEZFTU9SUEhPTE9HWV9PUEVS
QVRPUl9FUk9ERSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9s
b2d5VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCgpOwogfQogCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVNZXJnZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUo
QW5pbWF0ZWRTdHJpbmcpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1h
dGVUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykgfHwgaGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZUNvbG9yVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJh
bnNmb3JtVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNz
UmVmUHRyPFNWR0FuaW1hdGVFbGVtZW50PiBTVkdBbmltYXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRkVMaWdodEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3Bv
dExpZ2h0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNz
UmVmUHRyPFNWR0ZFU3BvdExpZ2h0RWxlbWVudD4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBA
CiBTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rp
b25UeXBlKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY29uc3RydWN0aW9u
VHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9jbGlwUGF0aFVuaXRzKFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6Y2xpcFBhdGhUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDbGlwUGF0aEVsZW1lbnQoKTsK
IH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1
bmNCRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAgICAgOiBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNCRWxlbWVudD4gU1ZHRkVGdW5jQkVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAg
ICAgLCBtX2V4cG9uZW50KDEpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAgICAgOiBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUU3BhbkVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQAogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdHRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RnVuY1JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICAgICA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZUZ1bmNSVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0ZFRnVuY1JFbGVtZW50PiBTVkdGRUZ1bmNSRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
eW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHU3ltYm9sRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAsIG1fdHlwZShTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4gU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAKICAgICAsIG1fdHlwZShGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VT
cmNFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VTcmNFbGVt
ZW50PiBTVkdGb250RmFjZVNyY0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAg
ICAsIG1fcihMZW5ndGhNb2RlT3RoZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmNpcmNsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0NpcmNsZUVsZW1lbnQoKTsKIH0KIApJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAg
ICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZURpZmZ1c2VMaWdodGluZ1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICAgICA6IFNWR1N0eWxlZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmdseXBoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0dseXBoRWxlbWVudD4gU1ZHR2x5cGhFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5j
cHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiBT
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAg
ICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBTVkdTVkdFbGVtZW50KiBTVkdEb2N1bWVudDo6cm9v
dEVsZW1lbnQoKSBjb25zdApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikK
KysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgLCBtX2lzR2x5cGhDYWNo
ZVZhbGlkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmb250VGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9udEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAgICAgLCBtX3N0ZERldmlhdGlvblkoMikKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEcm9wU2hhZG93VGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVEcm9wU2hhZG93RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICAg
ICAsIG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6bGluZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVFbGVtZW50KCk7CiB9CiAKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jQUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogICAgIDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlRnVuY0FUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVGdW5jQUVsZW1lbnQ+IFNWR0ZFRnVuY0FFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiB7CiAgICAgLy8g
U3BlYzogSWYgdGhlIGN4L2N5L3IvZnIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBl
ZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpKTsKKyAgICBTY3JpcHRX
cmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3
IEBACiAgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpw
YXR0ZXJuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0dGVybkVsZW1lbnQoKTsKIH0KIApJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBA
CiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9uZW50VHJh
bnNmZXJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwog
fQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICA6IFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQWx0R2x5cGhFbGVtZW50KCk7
CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQAogICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHUmVjdEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlSW1hZ2VUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdGRUltYWdlRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDcgQEAKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVPZmZzZXRU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNldEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpkZXNjVGFnKSk7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVtZW50PiBTVkdEZXNj
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogICAgIDogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZsb29kVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRmxvb2RFbGVtZW50PiBTVkdGRUZs
b29kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAog
ICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBACiAgICAg
Ly8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVj
dCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVj
OiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZm
ZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGaWx0ZXJF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShmb250X2ZhY2VfZm9ybWF0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudD4g
U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBACiAgICAgLCBtX3RpbWVD
b250YWluZXIoU01JTFRpbWVDb250YWluZXI6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU1ZHRWxlbWVudCgp
OwogICAgIGRvYy0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMp
OwogfQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgLCBtX3N2Z0xvYWRFdmVudFRpbWVyKHRo
aXMsICZTVkdFbGVtZW50OjpzdmdMb2FkRXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogU1ZHU3R5bGVFbGVtZW50Ojp+U1ZHU3R5bGVFbGVtZW50KCkKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhJdGVtRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEl0ZW1FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YWx0
R2x5cGhJdGVtVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0FsdEdseXBoSXRlbUVsZW1lbnQ+IFNWR0FsdEdseXBoSXRlbUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHVGV4
dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGdW5jR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAg
ICAgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jR1RhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUZ1bmNH
RWxlbWVudD4gU1ZHRkVGdW5jR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01ldGFkYXRhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6Om1ldGFkYXRhVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR01ldGFkYXRhRWxlbWVudD4gU1ZHTWV0YWRh
dGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlTmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVtZW50PiBTVkdG
b250RmFjZU5hbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBACiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3Bl
Y2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpOwogfQogCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw2ICsxMzYsNyBAQAogICAgICwgbV90YXJnZXRMaXN0ZW5lcihTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0cmVmVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVFJlZkVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgLCBtX3NwYWNpbmcoU1ZHVGV4dFBhdGhTcGFjaW5n
RXhhY3QpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogU1ZHRWxlbWVu
dDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKICAgICA6IFN0eWxlZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7
CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAogICAgICwgbV9jYWxjTW9k
ZShDYWxjTW9kZUxpbmVhcikKICAgICAsIG1fYW5pbWF0aW9uTW9kZShOb0FuaW1hdGlvbikKIHsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdBbmltYXRpb25FbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBA
QAogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRo
ZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAg
Ly8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwg
dGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01h
c2tFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQAogewogICAgIEFTU0VSVChoYXNDdXN0
b21TdHlsZUNhbGxiYWNrcygpKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dXNl
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDcgQEAKICAgICAsIG1fc3ByZWFkTWV0aG9kKFNWR1NwcmVhZE1ldGhvZFBhZCkK
ICAgICAsIG1fZ3JhZGllbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR3JhZGllbnRFbGVtZW50KCk7CiB9CiAKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnN3aXRjaFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N3aXRjaEVsZW1lbnQoKTsKIH0KIApJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SEtlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpoa2VyblRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdIS2VybkVsZW1lbnQ+IFNW
R0hLZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50PiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw2ICs3MSw3IEBACiAgICAgLCBtX3NwZWNpZmllZFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVy
KQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdUZXh0Q29udGVudEVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAsIG1feUNoYW5uZWxT
ZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
RGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysr
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogICAgICwgbV9pbWFnZUxvYWRlcih0
aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjppbWFnZVRhZykpOworICAg
IFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ltYWdlRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICAgICA6IFNWR1BvbHlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BvbHlnb25FbGVtZW50PiBTVkdQb2x5
Z29uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhEZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogICAg
IDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6YWx0R2x5cGhEZWZUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhEZWZFbGVtZW50PiBTVkdBbHRHbHlw
aERlZkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICAgICA6IFNWR0ZFTGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQ+IFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHWm9vbUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogICAg
IDogbV9uZXdTY2FsZSgwLjBmKQogICAgICwgbV9wcmV2aW91c1NjYWxlKDAuMGYpCiB7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBGbG9hdFJlY3QgU1ZHWm9vbUV2ZW50
Ojp6b29tUmVjdFNjcmVlbigpIGNvbnN0CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAKICAgICAsIG1fX29wZXJhdG9yKEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnKSk7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHRkVDb21wb3NpdGVFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
NyBAQAogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmN1cnNvclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0N1cnNvckVsZW1lbnQoKTsK
IH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAgICAg
LCBtX2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRo
aXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQoKTsKIH0KIApJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgOiBTVkdTdHlsZWRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0aXRsZVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdUaXRsZUVsZW1lbnQ+IFNWR1RpdGxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
NyBAQAogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmRlZnNUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdEZWZzRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAsIG1f
dmlld1RhcmdldChTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnZpZXdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdWaWV3RWxlbWVudCgpOwog
fQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVu
dCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWcp
KTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsKIH0KIApJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAgICAg
LCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpm
ZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhS
ZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogICAgICwgbV9k
eSgwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpnbHlwaFJlZlRhZykpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0dseXBoUmVmRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAK
ICAgICAsIG1fb2Zmc2V0KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0
b3BUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdG9wRWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnZrZXJuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgLCBtX2ZvbnRFbGVt
ZW50KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKENTU1N0cmljdE1vZGUp
OwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQcm9wZXJ0aWVzKHN0eWxlRGVjbGFyYXRpb24ucmVs
ZWFzZSgpKTsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogewogICAgIHNldEFuaW1hdGlvbk1vZGUoVG9B
bmltYXRpb24pOwogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU2V0RWxl
bWVudD4gU1ZHU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogICAgIDogU1ZHRkVMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVBvaW50TGln
aHRFbGVtZW50PiBTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0
OCw3IEBACiAgICAgLCBtX21vZGUoRkVCTEVORF9NT0RFX05PUk1BTCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQmxlbmRF
bGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogICAgICwgbV9zdmdMb2Fk
RXZlbnRUaW1lcih0aGlzLCAmU1ZHRWxlbWVudDo6c3ZnTG9hZEV2ZW50VGltZXJGaXJlZCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHU2NyaXB0RWxlbWVudCgpOwogfQogCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6Om1wYXRoVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTVBhdGhFbGVtZW50KCk7CiB9CiAKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9y
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICAgIDogU1ZHQW5pbWF0
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmltYXRlQ29sb3JFbGVtZW50PiBTVkdBbmltYXRlQ29s
b3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSw3IEBACiAgICAgLCBtX2VkZ2VNb2RlKEVER0VNT0RFX0RVUExJQ0FURSkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb252b2x2ZU1hdHJpeFRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlsaW5l
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogICAgIDogU1ZHUG9seUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnKSk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BvbHlsaW5lRWxl
bWVudD4gU1ZHUG9seWxpbmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxVTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAg
ICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZSh1bFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEy
NikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkbFRhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
RExpc3RFbGVtZW50PiBIVE1MRExpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShtZXRhVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw2ICs0Niw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShib2R5VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhZGlvTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAgICAg
OiBMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFJhZGlvTm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlRm9y
Rm9ybUNvbnRyb2xzLCByb290Tm9kZS0+aGFzVGFnTmFtZShmb3JtVGFnKSA/IE5vZGVMaXN0SXNS
b290ZWRBdERvY3VtZW50IDogTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAsIG1fbmFtZShu
YW1lKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUmFkaW9Ob2Rl
TGlzdDo6flJhZGlvTm9kZUxpc3QoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShkaXJUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IEhUTUxEaXJlY3RvcnlFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhS
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShoclRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0clRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBI
VE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAK
ICAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIHR5cGUpCiB7CiAgICAgQVNT
RVJUKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBA
QAogCiBNZWRpYUtleUV2ZW50OjpNZWRpYUtleUV2ZW50KCkKIHsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhS2V5RXZlbnQ6Ok1lZGlhS2V5RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CkBAIC01Myw2ICs1NCw3IEBACiAgICAgLCBtX2Vycm9yQ29kZShpbml0aWFsaXplci5lcnJvckNv
ZGUpCiAgICAgLCBtX3N5c3RlbUNvZGUoaW5pdGlhbGl6ZXIuc3lzdGVtQ29kZSkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIE1lZGlhS2V5RXZlbnQ6On5NZWRpYUtl
eUV2ZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogICAgIDogSFRNTE1lZGlhRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGF1ZGlvVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtu
b3duRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgSFRNTFVu
a25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICB7Cisg
ICAgICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKICAgICB9CiB9OwogCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAsIG1fdmFsdWUoMCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShwcm9ncmVzc1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogSFRNTFByb2dyZXNzRWxlbWVudDo6fkhUTUxQcm9ncmVzc0VsZW1lbnQo
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShiYXNlVGFnKSk7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCYXNlRWxlbWVudD4g
SFRNTEJhc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ3MTI2
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAKICAgICA6IExpdmVOb2Rl
TGlzdEJhc2Uob3duZXJOb2RlLCByb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZSh0eXBlKSwgaW52
YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXModHlwZSksCiAgICAgICAg
IFdlYkNvcmU6OnNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4odHlwZSksIHR5cGUsIGl0
ZW1BZnRlck92ZXJyaWRlVHlwZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUo
Tm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
NyBAQAogICAgICwgbV9wYWRkaW5nKDEpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGFibGVU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
ZWdlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysr
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGVnZW5kVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxM
ZWdlbmRFbGVtZW50PiBIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogaW5saW5lIEhUTUxIZWFkaW5nRWxlbWVudDo6SFRNTEhlYWRpbmdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSGVhZGluZ0VsZW1lbnQ+IEhUTUxIZWFk
aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgICwg
bV9kb2N1bWVudFZlcnNpb24oMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShmaWVsZHNldFRh
ZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxI
VE1MRmllbGRTZXRFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQq
IGZvcm0pCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGlhbG9nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERpYWxvZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlhbG9nRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICAgICA6IEhUTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRpYWxvZ1RhZykp
OworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
RGlhbG9nRWxlbWVudD4gSFRNTERpYWxvZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAKIEhUTUxE
b2N1bWVudDo6SFRNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAg
IDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZmFsc2UsIHRydWUpCiB7CisgICAgU2NyaXB0V3JhcHBh
YmxlOjppbml0KHRoaXMpOwogICAgIGNsZWFyWE1MVmVyc2lvbigpOwogfQogCkluZGV4OiB0aGly
ZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxI
dG1sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKGh0bWxUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6Omlu
aXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBIVE1MSHRtbEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGxhYmVsVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcGFuKDEpCiB7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+
IEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIGlubGluZSBIVE1M
UHJlRWxlbWVudDo6SFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lbnVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUobWVudVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IEhUTUxNZW51RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVvVGFnKSk7
CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIGlmIChkb2N1bWVudC0+c2V0
dGluZ3MoKSkKICAgICAgICAgbV9kZWZhdWx0UG9zdGVyVVJMID0gZG9jdW1lbnQtPnNldHRpbmdz
KCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpOwogfQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSw3IEBACiAgICAgLCBtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAK
ICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRC
eVBhcnNlciwgU2hvdWxkTm90UHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShhcHBsZXRUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7
CiAKICAgICBtX3NlcnZpY2VUeXBlID0gImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiOwogfQpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiBpbmxpbmUgSFRNTFRhYmxl
Q2VsbEVsZW1lbnQ6OkhUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAsIG1fc2hvdWxkUmVjYWxjdWxhdGVJ
dGVtQ291bnQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2xUYWcpKTsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxl
bWVudD4gSFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogICAgIDogSFRNTEZyYW1lRWxlbWVudEJhc2UodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7Cisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlQ2Fs
bGJhY2tzKCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogaW5saW5lIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpIVE1MVGFibGVTZWN0aW9u
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICBT
Y3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob3B0Z3JvdXBUYWcp
KTsKICAgICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOworICAgIFNjcmlwdFdyYXBwYWJs
ZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50PiBIVE1M
T3B0R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShoZWFkVGFn
KSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxIZWFkRWxlbWVudD4gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX2lzQWN0aXZhdGVkU3Vi
bWl0KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJ1dHRvblRhZykpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQnV0dG9uRWxl
bWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQAogICAgIDogTGFiZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZXRlclRhZykpOworICAgIFNjcmlwdFdy
YXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogSFRNTE1ldGVyRWxlbWVudDo6fkhUTUxNZXRlckVs
ZW1lbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERpdkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkaXZUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tFdmVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMiArNDAsMTQgQEAKIAogVHJhY2tFdmVudDo6VHJhY2tFdmVudCgpCiB7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBUcmFja0V2ZW50OjpUcmFja0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgVHJhY2tFdmVudEluaXQmIGluaXRpYWxpemVy
KQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3RyYWNrKGluaXRpYWxp
emVyLnRyYWNrKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogVHJh
Y2tFdmVudDo6flRyYWNrRXZlbnQoKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxRdW90ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAgICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShxVGFnKSB8fCBoYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFi
bGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFF1b3RlRWxlbWVudD4gSFRNTFF1
b3RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgICwgQWN0
aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcnF1ZWVU
YWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDcgQEAKIGlubGluZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpIVE1MRGF0
YUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRGF0YUxpc3RFbGVt
ZW50PiBIVE1MRGF0YUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAgICAgOiBIVE1MQ29sbGVjdGlvbihvd25lck5v
ZGUsIEZvcm1Db250cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQogewogICAgIEFTU0VSVChvd25l
ck5vZGUtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgb3duZXJOb2RlLT5oYXNUYWdOYW1lKGZpZWxk
c2V0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6Y3JlYXRlKE5vZGUqIG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUpCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGJyVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGNhcHRpb25UYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQo
dGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJs
ZUNhcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBACiAg
ICAgLCBtX25vcmVzaXplKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZyYW1lc2V0
VGFnKSk7Ci0gICAgCisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogICAgIHNldEhh
c0N1c3RvbVN0eWxlQ2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
NyBAQAogSFRNTEFsbENvbGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0aW9uKE5vZGUqIG5vZGUsIENv
bGxlY3Rpb25UeXBlIHR5cGUpCiAgICAgOiBIVE1MQ29sbGVjdGlvbihub2RlLCB0eXBlLCBEb2Vz
Tm90T3ZlcnJpZGVJdGVtQWZ0ZXIpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBIVE1MQWxsQ29sbGVjdGlvbjo6fkhUTUxBbGxDb2xsZWN0aW9uKCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsNyBAQAogICAgICwgbV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRl
KE5vdFJlZ2lzdGVyZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc3R5bGVUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIEhUTUxTdHlsZUVsZW1lbnQ6On5I
VE1MU3R5bGVFbGVtZW50KCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogewogICAgIExP
RyhNZWRpYSwgIkhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQgLSAlcCIsIHRoaXMp
OwogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRyYWNrVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBIVE1MVHJhY2tFbGVtZW50Ojp+SFRNTFRyYWNrRWxlbWVudCgp
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDE0
NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAg
ICA6IEluc2VydGlvblBvaW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTaGFkb3dFbGVtZW50PiBIVE1MU2hhZG93RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgs
OCBAQAogICAgICwgbV9zaG91bGRQYXJzZVNlbGVjdG9yTGlzdChmYWxzZSkKICAgICAsIG1faXNW
YWxpZFNlbGVjdG9yKHRydWUpCiB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YWRvd0RPTUVuYWJsZWQoKSkKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwog
fQogCiBIVE1MQ29udGVudEVsZW1lbnQ6On5IVE1MQ29udGVudEVsZW1lbnQoKQpJbmRleDogdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShmb250VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGb250RWxlbWVudD4gSFRNTEZvbnRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgOiBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIsIFNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZW1iZWRUYWcpKTsKKyAg
ICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEVtYmVk
RWxlbWVudD4gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkluZGV4OiB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5p
dCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFy
dHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkRPTVNldHRhYmxl
VG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCkBAIC00OSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29y
ZEJyZWFrLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlUHJvcGVydHlTZXQuaCIKQEAgLTMzMiw2ICszMzUsMTEgQEAKICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gb253ZWJraXRmdWxsc2NyZWVuZXJyb3JBdHRyKSB7CiAgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIH0gZWxzZSBpZiAobmFtZSA9PSBp
c0F0dHIpIHsKKyAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjdXN0b21ET01FbGVt
ZW50c0VuYWJsZWQoKSAmJiBkb2N1bWVudCgpLT5yZWdpc3RyeSgpICYmIGRvY3VtZW50KCktPnJl
Z2lzdHJ5KCktPmZpbmRGb3IodGhpcykpCisgICAgICAgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0
QXNDdXN0b21FbGVtZW50Q29uc3RydWN0b3JDYWxsZXIodGhpcyk7CisjZW5kaWYKICAgICB9CiB9
CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3
LDYgKzQ3Nyw4IEBACiAgICAgLCBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZChtYXhHTEVy
cm9yc0FsbG93ZWRUb0NvbnNvbGUpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOworCiAgICAgbV9jb250ZXh0R3JvdXAgPSBXZWJHTENv
bnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250ZXh0R3JvdXAtPmFkZENvbnRleHQodGhp
cyk7CiAKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBACiAjaWYgIUVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
ICAgICBBU1NFUlRfVU5VU0VEKHVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSwgIXVzZXNE
YXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAjZW5kaWYKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp1bndpbmRT
dGF0ZVN0YWNrKCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQogICAgIDogbV9jYW52YXMo
Y2FudmFzKQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRl
cm4qIHBhdHRlcm4pCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4
ICszOCwyMSBAQAogCiBXZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoKQogewor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogV2ViR0xDb250ZXh0RXZlbnQ6
OldlYkdMQ29udGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIDog
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9zdGF0dXNNZXNzYWdl
KHN0YXR1c01lc3NhZ2UpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQog
CiBXZWJHTENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBXZWJHTENvbnRleHRFdmVudEluaXQmIGluaXRpYWxpemVyKQogICAgIDog
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3N0YXR1c01lc3NhZ2UoaW5pdGlhbGl6
ZXIuc3RhdHVzTWVzc2FnZSkKIHsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9
CiAKIFdlYkdMQ29udGV4dEV2ZW50Ojp+V2ViR0xDb250ZXh0RXZlbnQoKQpJbmRleDogdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBh
cmFtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJhbVRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6
aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBIVE1MUGFyYW1F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBhcmFncmFwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShw
VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKHRleHRhcmVhVGFnKSk7CiAgICAgc2V0Rm9ybUNvbnRyb2xW
YWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhp
cyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVudD4gSFRNTFRleHRBcmVhRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDgg
QEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNlbmRpZgorCisgICAgU2Ny
aXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICAgICA6IEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoa2V5Z2VuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpp
bml0KHRoaXMpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2VsZWN0IGVsZW1lbnQgd2l0aCBvbmUgb3B0
aW9uIGVsZW1lbnQgZm9yIGVhY2gga2V5IHNpemUuCiAgICAgVmVjdG9yPFN0cmluZz4ga2V5czsK
SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBACiAjaWYgRU5BQkxFKElOUFVUX01VTFRJUExF
X0ZJRUxEU19VSSkKICAgICBzZXRIYXNDdXN0b21TdHlsZUNhbGxiYWNrcygpOwogI2VuZGlmCisg
ICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAsIFNj
cmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0ZWQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2NyaXB0VGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2Ny
aXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVk
KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUob2JqZWN0VGFnKSk7CiAgICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6IGZpbmRGb3JtQW5jZXN0
b3IoKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBpbmxpbmUgSFRN
TE9iamVjdEVsZW1lbnQ6On5IVE1MT2JqZWN0RWxlbWVudCgpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAKICAgICAsIG1fY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbWdUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6
OmluaXQodGhpcyk7CiAgICAgaWYgKGZvcm0pCiAgICAgICAgIGZvcm0tPnJlZ2lzdGVySW1nRWxl
bWVudCh0aGlzKTsKIH0KSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogICAgIDogSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxlY3RPcHRpb25zLCBEb2VzTm90T3Zl
cnJpZGVJdGVtQWZ0ZXIpCiB7CiAgICAgQVNTRVJUKHNlbGVjdC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlbGVjdFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
Y3JlYXRlKE5vZGUqIHNlbGVjdCwgQ29sbGVjdGlvblR5cGUpCkluZGV4OiB0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0
LDcgQEAKICAgICAsIG1fcGVuZGluZ1NoZWV0VHlwZShOb25lKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGxpbmtUYWcpKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBIVE1MTGlua0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjZW5kaWYKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob3B0aW9uVGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVDYWxsYmFja3MoKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcx
MjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAgICAgLCBtX3NoYXBl
KFVua25vd24pCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXJlYVRhZykpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+
IEhUTUxBcmVhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGVtcGxhdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAog
aW5saW5lIEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OkhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBIVE1MVGVtcGxhdGVFbGVtZW50Ojp+SFRNTFRlbXBsYXRlRWxlbWVudCgpCkluZGV4
OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRpdGxlVGFnKSk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUaXRsZUVsZW1lbnQ+IEhU
TUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3
MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAsIG1fZnJh
bWVCb3JkZXJTZXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZnJhbWVUYWcpKTsK
KyAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEZy
YW1lRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQAogICAgICwgbV9kZWZhdWx0VmFsdWUoIiIpCiAgICAgLCBtX3Rva2VucyhET01TZXR0YWJs
ZVRva2VuTGlzdDo6Y3JlYXRlKCkpCiB7CisgICAgU2NyaXB0V3JhcHBhYmxlOjppbml0KHRoaXMp
OwogfQogCiBQYXNzUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBIVE1MT3V0cHV0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiB7
CiAgICAgTE9HKE1lZGlhLCAiSFRNTFNvdXJjZUVsZW1lbnQ6OkhUTUxTb3VyY2VFbGVtZW50IC0g
JXAiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzb3VyY2VUYWcpKTsKKyAgICBTY3Jp
cHRXcmFwcGFibGU6OmluaXQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNvdXJjZUVsZW1l
bnQ+IEhUTUxTb3VyY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRf
cGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShiYXNlZm9udFRhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBIVE1MQmFzZUZvbnRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJ
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsaVRhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50PiBIVE1MTElF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNw
cAkocmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6OkhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogeworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogICAgICwgbV9pc09wZW4oZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6aW5pdCh0
aGlzKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpJbmRleDogdGhpcmRfcGFydHkv
V2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAko
cmV2aXNpb24gMTQ3MTI2KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0
bWwvVmFsaWRpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxMCBAQAogICAg
IGJvb2wgdmFsaWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBWYWxpZGl0eVN0YXRlKEZvcm1B
c3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkgeyB9CisgICAg
VmFsaWRpdHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9s
KGNvbnRyb2wpCisgICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGU6OmluaXQodGhpcyk7Cisg
ICAgfQogCiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBtX2NvbnRyb2w7CiB9OwpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDcxMjYpCisrKyB0aGlyZF9wYXJ0eS9XZWJL
aXQvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBACiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzcGFuVGFnKSk7CisgICAgU2NyaXB0V3JhcHBhYmxl
Ojppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gSFRNTFNwYW5F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3MTI2KQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgLCBtX2xpbmtSZWxh
dGlvbnMoMCkKICAgICAsIG1fY2FjaGVkVmlzaXRlZExpbmtIYXNoKDApCiB7CisgICAgU2NyaXB0
V3JhcHBhYmxlOjppbml0KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50
PiBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IHRo
aXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NzEyNikKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsNyBAQAogICAgICwgbV9kaWRDbGVhckltYWdlQnVmZmVyKGZhbHNl
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNhbnZhc1RhZykpOworICAgIFNjcmlwdFdyYXBw
YWJsZTo6aW5pdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRN
TENhbnZhc0VsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCg==
</data>
<flag name="review"
          id="217714"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>