<?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>235023</bug_id>
          
          <creation_ts>2022-01-09 21:26:00 -0800</creation_ts>
          <short_desc>Fix C++20 build warnings with GCC</short_desc>
          <delta_ts>2022-01-17 10:17:02 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233963</dependson>
          <blocked>195548</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829376</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-01-09 21:26:00 -0800</bug_when>
    <thetext>These warnings appeared after r287698 (the first stint of bug233963 in the tree before being reverted for small adjustments).

They&apos;re mostly about:

* `this` not being captured by default in [=] lambdas. (Largely the most common issue)
* Operations between enums of different types are deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829377</commentid>
    <comment_count>1</comment_count>
      <attachid>448722</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-01-09 21:30:22 -0800</bug_when>
    <thetext>Created attachment 448722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829378</commentid>
    <comment_count>2</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-01-09 21:31:59 -0800</bug_when>
    <thetext>Oops. Thought that by adding the bug dependency it would pull the patch from the dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829577</commentid>
    <comment_count>3</comment_count>
      <attachid>448722</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-10 11:41:38 -0800</bug_when>
    <thetext>Comment on attachment 448722
Patch

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

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:338
&gt; +        return (TwoByteOpcodeID)(static_cast&lt;int&gt;(OP2_CMOVCC) + static_cast&lt;int&gt;(cond));

I think instead of adding two static_casts, we could just move the cast to static_cast&lt;TwoByteOpcodeID&gt;(cond)

&gt; Source/WebCore/dom/ViewportArguments.h:77
&gt; +    static constexpr int ValueAuto = -1;

Can we make this an enum class instead of just making them all an int with no type?

&gt; Source/WebCore/dom/WheelEvent.h:35
&gt; +    static const char TickMultiplier = 120;

constexpr
Also char isn&apos;t great for this.  Could it be a size_t?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:641
&gt; +    static constexpr int MaxDimenstionForDirectCompositing = 2000;

float?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831161</commentid>
    <comment_count>4</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-01-14 21:47:53 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 448722 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448722&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/X86Assembler.h:338
&gt; &gt; +        return (TwoByteOpcodeID)(static_cast&lt;int&gt;(OP2_CMOVCC) + static_cast&lt;int&gt;(cond));
&gt; 
&gt; I think instead of adding two static_casts, we could just move the cast to
&gt; static_cast&lt;TwoByteOpcodeID&gt;(cond)

Right, will do.

&gt; 
&gt; &gt; Source/WebCore/dom/ViewportArguments.h:77
&gt; &gt; +    static constexpr int ValueAuto = -1;
&gt; 
&gt; Can we make this an enum class instead of just making them all an int with
&gt; no type?

Wouldn&apos;t making it an enum class require static_casts to be used when doing operations with the raw types, even when float is their underlying type? (See https://godbolt.org/z/sqj88fM63 )

Btw, still regarding this enum, looks like `ValueLandscape` and `ValuePortrait` can be removed, as they aren&apos;t used anywhere since r256477 / 220631@main.

&gt; 
&gt; &gt; Source/WebCore/dom/WheelEvent.h:35
&gt; &gt; +    static const char TickMultiplier = 120;
&gt; 
&gt; constexpr
&gt; Also char isn&apos;t great for this.  Could it be a size_t?

It&apos;s used with an IntPoint in WheelEvent.cpp, so I&apos;ve changed it to int to avoid &quot;narrowing conversions&quot; warnings.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:641
&gt; &gt; +    static constexpr int MaxDimenstionForDirectCompositing = 2000;
&gt; 
&gt; float?

Well spotted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831162</commentid>
    <comment_count>5</comment_count>
      <attachid>449243</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-01-14 22:35:04 -0800</bug_when>
    <thetext>Created attachment 449243
Updated patch after rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831390</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-16 21:19:14 -0800</bug_when>
    <thetext>Committed r288085 (246099@main): &lt;https://commits.webkit.org/246099@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831391</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-16 21:20:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/87664817&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448722</attachid>
            <date>2022-01-09 21:30:22 -0800</date>
            <delta_ts>2022-01-14 22:34:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235023-20220110023021.patch</filename>
            <type>text/plain</type>
            <size>71302</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTEwYzY0ZjYyODNiN2RmNzg1MWZiNzZiMjRmNjhiMDE4NjFkMDNmLi4wZTAzOTZhNWIwMzk5OGYw
Y2Q5OWJmMzA5ZWExZDVlOWY1OGQ4NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjItMDEtMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgRml4IEMrKzIwIGJ1aWxkIHdhcm5pbmdzIHdpdGggR0NDCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgcmVsYXRlZCB0byBk
ZXByZWNhdGluZyBvcGVyYXRpb25zIGJldHdlZW4gZW51bXMgb2YgZGlmZmVyZW50CisgICAgICAg
IHR5cGVzIGFuZCBub3QgY2FwdHVyaW5nIHRoaXMgYnkgZGVmYXVsdCBpbiBsYW1iZGFzLgorCisg
ICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOiBDYXN0aW5nIGVudW1zIHRvIHNhbWUg
dHlwZS4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbW92Y2MpOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OmpjY1JlbDMyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpz
ZXRjY09wY29kZSk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwuY3BwOiBDYXB0dXJlIHRo
aXMgaW4gbGFtYmRhLgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5lcmF0ZSk6
CisgICAgICAgICogYjMvQjNUeXBlLmNwcDogUmVwbGFjZSBpc19wb2RfdiBpcyBpc19zdGFuZGFy
ZF9sYXlvdXRfdiBhbmQKKyAgICAgICAgaXNfdHJpdmlhbF92CisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6IENhcHR1cmUgdGhpcyBpbiBsYW1iZGEuCisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXRE
aXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmVt
aXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxM
aW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6IERpdHRvLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDogRGl0dG8uCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6IENhc3QgZW51bXMgdG8gc2FtZSB0eXBlLgorICAgICAg
ICAoSlNDOjpJQ0V2ZW50OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6IENhcHR1cmUgdGhpcyBpbiBsYW1iZGEuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1h
dGhJQ1Nsb3cpOgorICAgICAgICAqIGppdC9KSVRTaXplU3RhdGlzdGljcy5jcHA6IERpdHRvLgor
ICAgICAgICAoSlNDOjpKSVRTaXplU3RhdGlzdGljczo6bWFya0VuZCk6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpWTTo6ZGVsZXRlQWxsTGlua2VkQ29k
ZSk6CisgICAgICAgIChKU0M6OlZNOjpkZWxldGVBbGxDb2RlKToKKyAgICAgICAgKEpTQzo6Vk06
OnNocmlua0Zvb3RwcmludFdoZW5JZGxlKToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHA6IERpdHRvLgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWly
SVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQp
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVJbml0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCk6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUNvcHkpOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5RmlsbCk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjphZGRNZW1vcnlDb3B5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUluaXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0xvYWRPcCk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljU3RvcmVPcCk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmluYXJ5Uk1XT3ApOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0NvbXBhcmVFeGNoYW5nZSk6CisgICAg
ICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphdG9taWNXYWl0KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmF0b21pY05vdGlmeSk6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjplbWl0RW50cnlUaWVyVXBDaGVjayk6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJVcENoZWNrKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsUmVmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdik6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4pOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGMzI+
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMy
VHJ1bmNVRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxP
cFR5cGU6OkkzMlRydW5jVUYzMj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGNjQ+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjY0Pik6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0YzMj4pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VG
MzI+KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDogRGl0dG8uCisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6YWRkVGFibGVJbml0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVGaWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
YWRkVGFibGVDb3B5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdElu
ZGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE1lbW9y
eUZpbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRNZW1vcnlJbml0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTWVtb3J5Q29weSk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXRG
b3JBdG9taWNPcHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphdG9taWNX
YWl0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YXRvbWljTm90aWZ5KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdEVudHJ5VGllclVwQ2hlY2sp
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJVcENoZWNr
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tzRm9yTW9kT3JEaXYpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4pOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0YzMj4p
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRy
dW5jVUY2ND4pOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5
cGU6OkkzMlRydW5jVUYzMj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjph
ZGRPcDxPcFR5cGU6Okk2NFRydW5jU0Y2ND4pOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2ND4pOgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0YzMj4pOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUYzMj4pOgor
ICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6IERpdHRvLgorCiAyMDIyLTAxLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNp
bmcgQysrMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggZmM3NTU2OGRhZjZlYjhlMGYyY2IxMjhkNDg1MjI3Yzc5MWNhYjQ1My4u
NDg3M2JiNjU2Y2U2YmNjZWY5ZjdlZDA2MmM5MzU1ZmZlNTAxNjIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMi0wMS0wOSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBGaXggQysrMjAgYnVpbGQgd2FybmluZ3Mgd2l0aCBHQ0MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSByZWxhdGVkIHRvIGRlcHJlY2F0
aW5nIG9wZXJhdGlvbnMgYmV0d2VlbiBlbnVtcyBvZiBkaWZmZXJlbnQKKyAgICAgICAgdHlwZXMg
YW5kIG5vdCBjYXB0dXJpbmcgdGhpcyBieSBkZWZhdWx0IGluIGxhbWJkYXMuCisKKyAgICAgICAg
KiB3dGYvQXV0b21hdGljVGhyZWFkLmNwcDogQ2FwdHVyZSB0aGlzIGluIGxhbWJkYS4KKyAgICAg
ICAgKFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisKIDIwMjItMDEtMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGFydCB1c2lu
ZyBDKysyMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNkZDA0YzkzOTcyNTkyZjZiNWEzZmQwODIyZjRmM2RiMzli
YTM2MmQuLjRlZTc0MmYxN2MxMDliZWMxNTFmYmE4ODYwYjkzNmFmYmQyNjgyZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMS0wOSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KKworICAgICAgICBGaXggQysrMjAgYnVpbGQgd2FybmluZ3Mgd2l0aCBHQ0MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3RseSByZWxh
dGVkIHRvIGRlcHJlY2F0aW5nIG9wZXJhdGlvbnMgYmV0d2VlbiBlbnVtcyBvZiBkaWZmZXJlbnQK
KyAgICAgICAgdHlwZXMgYW5kIG5vdCBjYXB0dXJpbmcgdGhpcyBieSBkZWZhdWx0IGluIGxhbWJk
YXMuCisKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogUmVwbGFjZSBlbnVtIHdp
dGggY29uc3RleHByIGludHMgYXMgdGhleSdyZQorICAgICAgICBjb21wYXJlZCB0byBkb3VibGVz
IGluIHZhcmlvdXMgcGxhY2VzIHRocm91Z2ggVmlld3BvcnRBcmd1bWVudHMuY3BwLgorICAgICAg
ICAqIGRvbS9XaGVlbEV2ZW50Lmg6IFJlcGxhY2Ugc2luZ2xlLXZhbHVlZCBlbnVtIHdpdGggY29u
c3RleHByCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3Rs
eUNvbXBvc2l0ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaDogTWVyZ2UgdHdvIGVudW1zIHRoYXQgYXJlCisgICAgICAgIHVzZWQg
b25seSBpbiB0aGUgY29udGV4dCBvZiBiZWluZyBjb21iaW5lZCB0byBmb3JtIGEgdGhpcmQgZW51
bS4KKwogMjAyMi0wMS0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN0YXJ0IHVzaW5nIEMrKzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxM2Q1YzQ3NGNm
NjdhODQwYTlhZGI4ODY0MDIxMTdlMmExMmM5YjAuLjUzZTI1NDc4MDUwZDM0NGM5NTAyMjUwNDJj
MDVmMmQ1MGVhOTlkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDEtMDkgIExh
dXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgRml4IEMrKzIwIGJ1aWxk
IHdhcm5pbmdzIHdpdGggR0NDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3N0bHkgcmVsYXRlZCB0byBkZXByZWNhdGluZyBvcGVyYXRpb25zIGJldHdl
ZW4gZW51bXMgb2YgZGlmZmVyZW50CisgICAgICAgIHR5cGVzIGFuZCBub3QgY2FwdHVyaW5nIHRo
aXMgYnkgZGVmYXVsdCBpbiBsYW1iZGFzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yLmNwcDogQ2FwdHVyZSB0aGlzIGluIGxhbWJkYXMuCisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3I6OnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6
OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
cjo6c3RhcnRQYWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpz
dG9wUGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RhcnRF
bGVtZW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdG9wRWxl
bWVudFNlbGVjdGlvbik6CisKIDIwMjItMDEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGFydCB1c2luZyBDKysyMApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggOTUwM2I5OWJh
YTI5OWY2NTRlOTQ1MTU0ZGYxMTU0OTg4YzM4Y2M5ZC4uODhhYTNlODRhY2UyMjI5NjIxMWVhZDRi
NzAzNGRmZmMxNGViNzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCkBAIC0zMzUsMTcgKzMzNSwxNyBAQCBwcml2YXRlOgogICAgIAogICAg
IFR3b0J5dGVPcGNvZGVJRCBjbW92Y2MoQ29uZGl0aW9uIGNvbmQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gKFR3b0J5dGVPcGNvZGVJRCkoT1AyX0NNT1ZDQyArIGNvbmQpOworICAgICAgICByZXR1
cm4gKFR3b0J5dGVPcGNvZGVJRCkoc3RhdGljX2Nhc3Q8aW50PihPUDJfQ01PVkNDKSArIHN0YXRp
Y19jYXN0PGludD4oY29uZCkpOwogICAgIH0KIAogICAgIFR3b0J5dGVPcGNvZGVJRCBqY2NSZWwz
MihDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIHJldHVybiAoVHdvQnl0ZU9wY29kZUlE
KShPUDJfSkNDX3JlbDMyICsgY29uZCk7CisgICAgICAgIHJldHVybiAoVHdvQnl0ZU9wY29kZUlE
KShzdGF0aWNfY2FzdDxpbnQ+KE9QMl9KQ0NfcmVsMzIpICsgc3RhdGljX2Nhc3Q8aW50Pihjb25k
KSk7CiAgICAgfQogCiAgICAgVHdvQnl0ZU9wY29kZUlEIHNldGNjT3Bjb2RlKENvbmRpdGlvbiBj
b25kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChUd29CeXRlT3Bjb2RlSUQpKE9QX1NFVENDICsg
Y29uZCk7CisgICAgICAgIHJldHVybiAoVHdvQnl0ZU9wY29kZUlEKShzdGF0aWNfY2FzdDxpbnQ+
KE9QX1NFVENDKSArIHN0YXRpY19jYXN0PGludD4oY29uZCkpOwogICAgIH0KIAogICAgIHR5cGVk
ZWYgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1Nw
ZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApp
bmRleCBjMmRmNjIyYjUxYWM1NDk5M2EzYWMxOWEwNDA1MTIzYWUyYTZiYTc2Li4yZTM0Nzg0Mzdm
ZmEwYTcyMzdjYmI0YTI4ODA2MTNjODhiM2U0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBDQ2FsbEhlbHBlcnM6
Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGpp
dCwgR2VuZXJhdAogCiAgICAgY29udGV4dC5sYXRlUGF0aHMuYXBwZW5kKAogICAgICAgICBjcmVh
dGVTaGFyZWRUYXNrPEdlbmVyYXRpb25Db250ZXh0OjpMYXRlUGF0aEZ1bmN0aW9uPigKLSAgICAg
ICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgICAgICBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgICAgIGZhaWwubGluaygmaml0KTsKIAog
ICAgICAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgdW5kbyB0aGUgb3BlcmF0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAppbmRleCA2Nzg0MWJkZGMyYjY3YmI0NGE3NTUxYjNi
YzBjODBmZjYyYTAxMDMyLi41MWNkYWMwOTUyMmQ0ZWRjYzg1NmJhYWY5MzAzMDVhMDc5NzcyMTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0eXBlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpY19hc3NlcnQoc3RkOjppc19wb2RfdjxK
U0M6OkIzOjpUeXBlS2luZD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91
dF92PEpTQzo6QjM6OlR5cGVLaW5kPiAmJiBzdGQ6OmlzX3RyaXZpYWxfdjxKU0M6OkIzOjpUeXBl
S2luZD4pOwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDI1MWU1YWI1YzY2MDIyNWJkNzUzYTExNzll
MjIyNTUzNGNlOWE1M2IuLjgxZDdkMDg3OTk1NDYwNDVlZGVlYjI2NTdmNTQ5MTNkZDFmYWQ3MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBib29sIGNhbGxIYXNSZXR1cm5WYWx1
ZSA9IGlzR2V0dGVyKCk7CiAgICAgICAgICAgICByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVlKTsKIAotICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewog
ICAgICAgICAgICAgICAgIHRoaXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExp
bmtJbmZvKCktPnNldENvZGVMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzbG93UGF0aFN0YXJ0KSwKICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGRvbmVM
b2NhdGlvbikpOwpAQCAtMjE3Miw3ICsyMTcyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBvcGVy
YXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoQ3VzdG9tQWNjZXNzb3JQ
dHJUYWcpOwotICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgeworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdl
dHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JHZXR0ZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsob3BlcmF0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPih2bUVudHJ5Q3VzdG9tR2V0dGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDM0YWNhNTE3ZTY4ZjZmOGU0ZTM1
MDAzYTQ3ZjI5ZGNhZWQyNDUyNDEuLjUwMGY1ZWQ1YjY2ZjI0OTliMzRlZmFmMjlmNTVmMzU3NjY3
Yjc2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpl
bWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgc2V0VXNlc0RhdGFJQ3Mo
VXNlRGF0YUlDOjpObyk7CiAKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKLSAgICBq
aXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgaml0LmFk
ZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICBt
X2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+KGNhbGwpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNdIChM
aW5rQnVmZmVyJikgewpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3Bl
CiAgICAgc2V0VXNlc0RhdGFJQ3MoVXNlRGF0YUlDOjpObyk7CiAKICAgICBhdXRvIGZhc3RQYXRo
U3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CisgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewogICAgICAgICBtX2Zhc3RQYXRoU3RhcnQgPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oZmFzdFBhdGhTdGFydCk7CiAgICAgfSk7CiAKQEAg
LTQ4OCw3ICs0ODgsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogCiAgICAgcHJlcGFyZUZv
clRhaWxDYWxsKCk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwotICAgIGpp
dC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICBqaXQuYWRk
TGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIG1f
Y2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0
clRhZz4oY2FsbCk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExp
bmtCdWZmZXImKSB7CkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZhc3RQ
YXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQ
YXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhl
bHBlcnMmIGppdCkgewogICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKLSAgICAg
ICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAg
ICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc2xvd1BhdGhTdGFy
dCgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSwgImluaXRpYWxpemUgZGlyZWN0IGNh
bGwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggMmNiOTE2NTNmMDk4ZTkyYzg4YzNmMjY0NGQ5NDE3MTQxNjdlOGM4OS4uMzQ5Zjg3
ZDEzNzQwOTI1MWE0ZmIxMTIzZGJkZTUwZGZlMTI1YzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUzOTIsNyArNTM5Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAKICAgICAgICAgYXV0byBkb25lID0gbV9qaXQubGFi
ZWwoKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgc2F2ZVBsYW5z
ID0gV1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
TGFtYmRhKFs9LCB0aGlzLCBzYXZlUGxhbnMgPSBXVEZNb3ZlKHNhdmVQbGFucyldICgpIHsKICAg
ICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aEp1bXBzLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aFN0YXJ0ID0gbV9q
aXQubGFiZWwoKTsKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTYwMTUsNyArNjAxNSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUVW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAKICAgICAgICAgYXV0byBkb25lID0gbV9qaXQu
bGFiZWwoKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgc2F2ZVBs
YW5zID0gV1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yTGFtYmRhKFs9LCB0aGlzLCBzYXZlUGxhbnMgPSBXVEZNb3ZlKHNhdmVQbGFucyldICgpIHsK
ICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aEp1bXBzLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aFN0YXJ0ID0gbV9qaXQu
bGFiZWwoKTsKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDA3OGJiZTM5ZWFiYjVl
M2VkMmM4Y2I4YzE4MDJjMDU4ZmIzNmNhZjkuLjYyNmY2MTk1Y2Y2NzM2ODI3OTRiMWUzYmI5YmMw
OTQwYmRmOTZmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtNTk1MCw3ICs1OTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0lt
cGwoZmFsc2UsIHNhdmVQbGFucywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3JMYW1iZGEoWz1dKCkgeworICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgdGhpc10oKSB7CiAgICAgICAgICAgICBjYWxs
VGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5z
KTsKQEAgLTYwMDIsNyArNjAwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgc3RyZWFtSW5kZXggPSBtX3N0cmVhbS0+c2l6ZSgp
OwogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4LmFk
ZChieXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3JMYW1iZGEoWz1dKCkgeworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShb
PSwgdGhpc10oKSB7CiAgICAgICAgICAgICBmb3JjZU9TUkVudHJ5LmxpbmsoJm1faml0KTsKICAg
ICAgICAgICAgIG92ZXJmbG93ZWRDb3VudGVyLmxpbmsoJm1faml0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaAppbmRleCA5MWIzYjMxNTUxMGRhNjgyNGIzYzk2MzQxMGUzMzZkOTU4
OWFiYzdjLi41ZDBiMmYzMWNjNDFmZTIyZWYyYTlkMDlhMjlmNmJhNDhhOTE0M2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3Byb3BlcnR5TmFt
ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2tpbmQgKyBtX3Byb3BlcnR5TG9jYXRp
b24gKyBXVEY6OlB0ckhhc2g8Y29uc3QgQ2xhc3NJbmZvKj46Omhhc2gobV9jbGFzc0luZm8pOwot
ICAgICAgICByZXR1cm4gbV9raW5kICsgbV9wcm9wZXJ0eUxvY2F0aW9uICsgV1RGOjpQdHJIYXNo
PGNvbnN0IENsYXNzSW5mbyo+OjpoYXNoKG1fY2xhc3NJbmZvKSArIFN0cmluZ0hhc2g6Omhhc2go
bV9wcm9wZXJ0eU5hbWUuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2tpbmQpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcHJvcGVydHlMb2Nh
dGlvbikgKyBXVEY6OlB0ckhhc2g8Y29uc3QgQ2xhc3NJbmZvKj46Omhhc2gobV9jbGFzc0luZm8p
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fa2luZCkgKyBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9wcm9wZXJ0eUxvY2F0aW9uKSArIFdURjo6UHRySGFzaDxjb25zdCBD
bGFzc0luZm8qPjo6aGFzaChtX2NsYXNzSW5mbykgKyBTdHJpbmdIYXNoOjpoYXNoKG1fcHJvcGVy
dHlOYW1lLnN0cmluZygpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAppbmRleCA2OTllYWZjYjcyOWVjYTQxNDA3NWVjMTBjY2M5MjYyMjBiZDQ1NDc1Li43NmUw
Njg5ZmMxOTUwZTQ1NTMxNDY0N2Q1NDk3MjYwODZmMjQyYWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25z
dCBJbnN0cnVjdGlvbiogYwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJl
c3VsdFJlZ3MpOwogCi0gICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CiAgICAgICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0YXRlID0g
bV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudEluc3RydWN0
aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIG1hdGhJQy0+ZmluYWxpemVJbmxpbmVDb2RlKG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSwgbGlua0J1ZmZlcik7CiAgICAgfSk7CkBAIC05MTksNyArOTE5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHQsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CisgICAgYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CiAgICAgICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJh
dGlvblN0YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3Vy
cmVudEluc3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIG1hdGhJQy0+ZmluYWxpemVJ
bmxpbmVDb2RlKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSwgbGlua0J1ZmZlcik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFNpemVTdGF0aXN0aWNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3BwCmluZGV4
IDlhZjlmNmQ3MjZlMTZmNGE2ZTYzNDkxOWY5ZTViYzcyMDE2YzE0NGUuLmE2YTMwNTBmYzgxNDg3
ZDQ4NmZhMTk0MjE0N2MxYWY1ZGI1OTAwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3BwCkBAIC00NSw5ICs0NSw5IEBAIEpJVFNpemVTdGF0
aXN0aWNzOjpNYXJrZXIgSklUU2l6ZVN0YXRpc3RpY3M6Om1hcmtTdGFydChTdHJpbmcgaWRlbnRp
ZmllciwgQ0NhbGxICiB2b2lkIEpJVFNpemVTdGF0aXN0aWNzOjptYXJrRW5kKE1hcmtlciBtYXJr
ZXIsIENDYWxsSGVscGVycyYgaml0KQogewogICAgIENDYWxsSGVscGVyczo6TGFiZWwgZW5kID0g
aml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgIGppdC5hZGRMaW5rVGFzayhbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICBqaXQuYWRkTGlua1Rhc2soWz0sIHRoaXNd
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1
ZmZlci5sb2NhdGlvbk9mPE5vUHRyVGFnPihlbmQpLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8
Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1hcmtlci5zdGFydCku
dW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKLSAgICAgICAgbGlua0J1ZmZlci5h
ZGRNYWluVGhyZWFkRmluYWxpemF0aW9uVGFzayhbPV0geworICAgICAgICBsaW5rQnVmZmVyLmFk
ZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9LCB0aGlzXSB7CiAgICAgICAgICAgICBhdXRv
JiBlbnRyeSA9IG1fZGF0YS5hZGQobWFya2VyLmlkZW50aWZpZXIsIEVudHJ5IHsgfSkuaXRlcmF0
b3ItPnZhbHVlOwogICAgICAgICAgICAgKytlbnRyeS5jb3VudDsKICAgICAgICAgICAgIGVudHJ5
LnRvdGFsQnl0ZXMgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCBmNTQ5NDY0NDgyNGY3MjJhNzliM2RjNGFlMDNkYzEwYmJlNDg3OTgxLi5mZjFhYWY3M2E0OWQz
ZjcxMWY1NDJkNjVmMGQxZGYzNzYxY2MyMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC03NzQsMTQgKzc3NCwxNCBAQCB2b2lkIFZNOjp3aGVuSWRsZShGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCiAKIHZvaWQgVk06OmRlbGV0ZUFsbExpbmtlZENvZGUoRGVsZXRl
QWxsQ29kZUVmZm9ydCBlZmZvcnQpCiB7Ci0gICAgd2hlbklkbGUoWz1dICgpIHsKKyAgICB3aGVu
SWRsZShbPSwgdGhpc10gKCkgewogICAgICAgICBoZWFwLmRlbGV0ZUFsbENvZGVCbG9ja3MoZWZm
b3J0KTsKICAgICB9KTsKIH0KIAogdm9pZCBWTTo6ZGVsZXRlQWxsQ29kZShEZWxldGVBbGxDb2Rl
RWZmb3J0IGVmZm9ydCkKIHsKLSAgICB3aGVuSWRsZShbPV0gKCkgeworICAgIHdoZW5JZGxlKFs9
LCB0aGlzXSAoKSB7CiAgICAgICAgIG1fY29kZUNhY2hlLT5jbGVhcigpOwogICAgICAgICBtX3Jl
Z0V4cENhY2hlLT5kZWxldGVBbGxDb2RlKCk7CiAgICAgICAgIGhlYXAuZGVsZXRlQWxsQ29kZUJs
b2NrcyhlZmZvcnQpOwpAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgVk06OmRlbGV0ZUFsbENvZGUo
RGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiAKIHZvaWQgVk06OnNocmlua0Zvb3RwcmludFdo
ZW5JZGxlKCkKIHsKLSAgICB3aGVuSWRsZShbPV0gKCkgeworICAgIHdoZW5JZGxlKFs9LCB0aGlz
XSAoKSB7CiAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgqdGhpcyk7CiAgICAgICAgIGRlbGV0
ZUFsbENvZGUoRGVsZXRlQWxsQ29kZUlmTm90Q29sbGVjdGluZyk7CiAgICAgICAgIGhlYXAuY29s
bGVjdE5vdyhTeW5jaHJvbm91c25lc3M6OlN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApp
bmRleCBiNjllYTYxNWY3YWVkZjM3ZWQyMjVkZmM2YjZmZGRmYTMwNTQxMmFhLi45MTI0MTEyNGMx
M2E5NTdjOTljMTdlMWZkM2ViMWI3NjhkNWMyZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTg1MSw3ICs4NTEsNyBAQCBB
aXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGlu
Zm8sIEIzOjpQcm9jZWR1cmUmIHBybwogCiAgICAgR1BSUmVnIGNvbnRleHRJbnN0YW5jZSA9IENv
bnRleHQ6OnVzZUZhc3RUTFMoKSA/IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2Ny
YXRjaEdQUnNbMV0gOiBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFI7CiAKLSAgICBSZWY8QjM6OkFp
cjo6UHJvbG9ndWVHZW5lcmF0b3I+IHByb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFz
azxCMzo6QWlyOjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBCMzo6QWlyOjpDb2RlJiBjb2RlKSB7CisgICAgUmVmPEIzOjpBaXI6OlByb2xvZ3VlR2Vu
ZXJhdG9yPiBwcm9sb2d1ZUdlbmVyYXRvciA9IGNyZWF0ZVNoYXJlZFRhc2s8QjM6OkFpcjo6UHJv
bG9ndWVHZW5lcmF0b3JGdW5jdGlvbj4oWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgQjM6
OkFpcjo6Q29kZSYgY29kZSkgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgIGNvZGUuZW1pdERlZmF1bHRQcm9sb2d1ZShq
aXQpOwogCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJs
ZUdldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcgogICAg
IGVtaXRDQ2FsbCgmb3BlcmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudCwgcmVzdWx0LCBpbnN0YW5j
ZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIHRhYmxlSW5kZXgpLCBpbmRleCk7CiAg
ICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVs
bHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQp
OwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRo
cm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7
CiAgICAgfSk7CiAKQEAgLTExNjMsNyArMTE2Myw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHBy
CiAKICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMy
LCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzaG91bGRUaHJv
dywgc2hvdWxkVGhyb3cpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAg
ICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3Vu
ZHNUYWJsZUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTExOTAsNyArMTE5MCw3IEBAIGF1dG8gQWly
SVJHZW5lcmF0b3I6OmFkZFRhYmxlSW5pdCh1bnNpZ25lZCBlbGVtZW50SW5kZXgsIHVuc2lnbmVk
IHRhYmxlSW5kZXgsIEV4CiAKICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgcmV0dXJuIElu
c3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8pLCByZXN1bHQsIHJlc3VsdCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhpc10gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICB9KTsKIApAQCAtMTI0MCw3ICsxMjQwLDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlIG9mZnNldCwgRXgKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIH0sIFs9LCB0aGlz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgIH0pOwogCkBAIC0xMjY3LDcgKzEyNjcsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUNvcHkodW5zaWduZWQgZHN0VGFibGVJbmRl
eCwgdW5zaWduZWQgc3JjVGFibGVJbmRleAogCiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0s
IHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTEzNDIsNyArMTM0
Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUZpbGwoRXhwcmVzc2lvblR5cGUg
ZHN0QWRkcmVzcywgRXhwcmVzc2lvblR5cGUgdGFyCiAKICAgICBlbWl0Q2hlY2soWyZdIHsKICAg
ICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJlc3VsdCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9
LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNl
cHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTEzNjcs
NyArMTM2Nyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUNvcHkoRXhwcmVzc2lv
blR5cGUgZHN0QWRkcmVzcywgRXhwcmVzc2lvblR5cGUgc3JjCiAKICAgICBlbWl0Q2hlY2soWyZd
IHsKICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJlc3VsdCk7Ci0gICAgfSwgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0
LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICB9KTsKIApAQCAt
MTM5Myw3ICsxMzkzLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5SW5pdCh1bnNp
Z25lZCBkYXRhU2VnbWVudEluZGV4LCBFeHByZXNzaW9uVHlwZSBkc3QKIAogICAgIGVtaXRDaGVj
ayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6
cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgIH0pOwog
CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBpbmxpbmUgQWlySVJHZW5lcmF0b3I6OkV4cHJlc3Npb25U
eXBlIEFpcklSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcgogCiAgICAgICAg
IGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQsIG51bGxw
dHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsKSwgdGVtcCwgVG1w
KG1fYm91bmRzQ2hlY2tpbmdTaXplR1BSKSk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0s
IFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBF
eGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAg
ICAgICBicmVhazsKQEAgLTE2MjYsNyArMTYyNiw3IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6
RXhwcmVzc2lvblR5cGUgQWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVy
CiAKICAgICAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgICAgIHJldHVybiBJ
bnN0KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCksIHRlbXAsIHNpemVNYXgpOwotICAgICAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAg
ICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0
aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTIxOTcsNyArMjE5Nyw3IEBAIGlubGluZSBUeXBlZFRt
cCBBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0xvYWRPcChFeHRBdG9taWNPcFR5cGUgb3AsIFR5
cGUgdmFsdWVUCiAgICAgaWYgKGFjY2Vzc1dpZHRoKG9wKSAhPSBCMzo6V2lkdGg4KSB7CiAgICAg
ICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDY0
LCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8pLCBuZXdQdHIs
IGlzWDg2KCkgPyBBcmc6OmJpdEltbShzaXplT2ZBdG9taWNPcE1lbW9yeUFjY2VzcyhvcCkgLSAx
KSA6IEFyZzo6Yml0SW1tNjQoc2l6ZU9mQXRvbWljT3BNZW1vcnlBY2Nlc3Mob3ApIC0gMSkpOwot
ICAgICAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeworICAgICAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhp
cy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1v
cnlBY2Nlc3MpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0yMjY5LDcgKzIyNjksNyBAQCBpbmxp
bmUgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY1N0b3JlT3AoRXh0QXRvbWljT3BUeXBl
IG9wLCBUeXBlIHZhbHVlVHlwZQogICAgIGlmIChhY2Nlc3NXaWR0aChvcCkgIT0gQjM6OldpZHRo
OCkgewogICAgICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgICAgIHJldHVybiBJbnN0KEJy
YW5jaFRlc3Q2NCwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
KSwgbmV3UHRyLCBpc1g4NigpID8gQXJnOjpiaXRJbW0oc2l6ZU9mQXRvbWljT3BNZW1vcnlBY2Nl
c3Mob3ApIC0gMSkgOiBBcmc6OmJpdEltbTY0KHNpemVPZkF0b21pY09wTWVtb3J5QWNjZXNzKG9w
KSAtIDEpKTsKLSAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAg
ICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9m
Qm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjMyMyw3ICsyMzIz
LDcgQEAgVHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNCaW5hcnlSTVdPcChFeHRB
dG9taWNPcFR5cGUgb3AsIFR5cGUgdmFsdWVUeXAKICAgICBpZiAoYWNjZXNzV2lkdGgob3ApICE9
IEIzOjpXaWR0aDgpIHsKICAgICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0NjQsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIG5ld1B0ciwgaXNYODYoKSA/IEFyZzo6Yml0SW1tKHNpemVPZkF0b21pY09w
TWVtb3J5QWNjZXNzKG9wKSAtIDEpIDogQXJnOjpiaXRJbW02NChzaXplT2ZBdG9taWNPcE1lbW9y
eUFjY2VzcyhvcCkgLSAxKSk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0sIFs9LCB0aGlz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25U
eXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTI0
OTUsNyArMjQ5NSw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFy
ZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1CiAgICAgaWYgKGFjY2Vzc1dp
ZHRoICE9IEIzOjpXaWR0aDgpIHsKICAgICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAg
ICByZXR1cm4gSW5zdChCcmFuY2hUZXN0NjQsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybyksIG5ld1B0ciwgaXNYODYoKSA/IEFyZzo6Yml0SW1tKHNpemVPZkF0
b21pY09wTWVtb3J5QWNjZXNzKG9wKSAtIDEpIDogQXJnOjpiaXRJbW02NChzaXplT2ZBdG9taWNP
cE1lbW9yeUFjY2VzcyhvcCkgLSAxKSk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0sIFs9
LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNl
cHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0K
QEAgLTI1OTMsNyArMjU5Myw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmF0b21pY1dhaXQoRXh0
QXRvbWljT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByCiAgICAgICAgIGVt
aXRDQ2FsbCgmb3BlcmF0aW9uTWVtb3J5QXRvbWljV2FpdDY0LCByZXN1bHQsIGluc3RhbmNlVmFs
dWUoKSwgcG9pbnRlciwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgb2Zmc2V0KSwgdmFsdWUsIHRp
bWVvdXQpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2gz
MiwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiksIHJlc3Vs
dCwgQXJnOjppbW0oMCkpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAg
ICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3Vu
ZHNNZW1vcnlBY2Nlc3MpOwogICAgIH0pOwogCkBAIC0yNjA3LDcgKzI2MDcsNyBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjphdG9taWNOb3RpZnkoRXh0QXRvbWljT3BUeXBlLCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZQogICAgIGVtaXRDQ2FsbCgmb3BlcmF0aW9uTWVtb3J5QXRvbWljTm90
aWZ5LCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgcG9pbnRlciwgYWRkQ29uc3RhbnQoVHlwZXM6
OkkzMiwgb2Zmc2V0KSwgY291bnQpOwogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2gzMiwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpM
ZXNzVGhhbiksIHJlc3VsdCwgQXJnOjppbW0oMCkpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0s
IHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgIH0pOwogCkBAIC0yODQ0LDEzICsy
ODQ0LDEzIEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRFbnRyeVRpZXJVcENoZWNrKCkKICAg
ICBwYXRjaC0+ZWZmZWN0cyA9IGVmZmVjdHM7CiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAotICAgIHBhdGNoLT5zZXRHZW5lcmF0b3Io
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CisgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCB0aWVyVXAgPSBqaXQuYnJhbmNoQWRkMzIo
Q0NhbGxIZWxwZXJzOjpQb3NpdGl2ZU9yWmVybywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
VGllclVwQ291bnQ6OmZ1bmN0aW9uRW50cnlJbmNyZW1lbnQoKSksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB0aWVy
VXBSZXN1bWUgPSBqaXQubGFiZWwoKTsKIAotICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz0sIHRo
aXNdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgdGllclVwLmxpbmsoJmppdCk7
CiAKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGV4dHJhUGFkZGluZ0J5dGVzID0gMDsKQEAg
LTI5MTgsNyArMjkxOCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hl
Y2sodWludDMyX3QgbG9vcEluZGV4LCBjb25zdCBTdGFjayYgZW5jbG9zCiAgICAgVGllclVwQ291
bnQ6OlRyaWdnZXJSZWFzb24qIGZvcmNlRW50cnlUcmlnZ2VyID0gJihtX3RpZXJVcC0+b3NyRW50
cnlUcmlnZ2VycygpLmxhc3QoKSk7CiAgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oVGllclVwQ291bnQ6OlRyaWdnZXJSZWFzb246OkRvbnRUcmlnZ2VyKSwgInRoZSBKSVQg
Y29kZSBhc3N1bWVzIG5vbi16ZXJvIG1lYW5zICdlbnRlciciKTsKICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihUaWVyVXBDb3VudDo6VHJpZ2dlclJlYXNvbikgPT0gMSwgImJyYW5jaFRlc3Q4IGFz
c3VtZXMgdGhpcyBzaXplIik7Ci0gICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBmb3JjZU9TUkVudHJ5ID0gaml0LmJyYW5jaFRlc3Q4KENDYWxsSGVs
cGVyczo6Tm9uWmVybywgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoZm9yY2VFbnRyeVRy
aWdnZXIpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHRpZXJVcCA9IGppdC5icmFuY2hB
ZGQzMihDQ2FsbEhlbHBlcnM6OlBvc2l0aXZlT3JaZXJvLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihUaWVyVXBDb3VudDo6bG9vcEluY3JlbWVudCgpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHBhcmFtc1swXS5ncHIoKSkpOwpAQCAtMzM5Miw3ICszMzkyLDcgQEAgYXV0byBBaXJJUkdlbmVy
YXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmEKICAgICAvLyBDaGVjayB0aGUgaW5kZXggd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHZh
bGlkLgogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2gzMiwg
bnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCBjYWxs
ZWVJbmRleCwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7Ci0gICAgfSwgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAg
ICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBF
eGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7CiAgICAgfSk7CiAKQEAgLTM0
MTksNyArMzQxOSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNp
Z25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgIGVtaXRDaGVj
ayhbJl0gewogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChTaWduYXR1cmU6OmludmFsaWRJbmRl
eCA9PSAwLCAiIik7CiAgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0NjQsIG51bGxw
dHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGNhbGxlZVNpZ25hdHVyZUlu
ZGV4LCBjYWxsZWVTaWduYXR1cmVJbmRleCk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0s
IFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBF
eGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CiAgICAgICAgIH0pOwogCkBAIC0zNDI3LDcg
KzM0MjcsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICBhcHBlbmQoTW92ZSwg
QXJnOjpiaWdJbW0oU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKSwgZXhwZWN0
ZWRTaWduYXR1cmVJbmRleCk7CiAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAg
cmV0dXJuIEluc3QoQnJhbmNoNjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwpLCBjYWxsZWVTaWduYXR1cmVJbmRleCwgZXhwZWN0ZWRTaWduYXR1cmVJbmRl
eCk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAg
ICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpCYWRTaWduYXR1
cmUpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0zNDUyLDcgKzM0NTIsNyBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8
RXhwcmVzc2lvblR5cAogICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpKSwgdG1wRm9yTnVsbCk7CiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsKSwgY2FsbGVlRnVuY3Rpb24sIHRtcEZvck51bGwpOwotICAgIH0sIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwg
RXhjZXB0aW9uVHlwZTo6TnVsbFJlZmVyZW5jZSk7CiAgICAgfSk7CiAKQEAgLTM2NDQsNyArMzY0
NCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdihib29sIGlz
U2lnbmVkRGl2LCBFeHByZXNzaW9uVHlwZSBsZWZ0CiAKICAgICBlbWl0Q2hlY2soWyZdIHsKICAg
ICAgICAgcmV0dXJuIEluc3Qoc2l6ZW9mKEludFR5cGUpID09IDQgPyBCcmFuY2hUZXN0MzIgOiBC
cmFuY2hUZXN0NjQsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyks
IHJpZ2h0LCByaWdodCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAg
ICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpEaXZpc2lvbkJ5
WmVybyk7CiAgICAgfSk7CiAKQEAgLTM2NjcsNyArMzY2Nyw3IEBAIHZvaWQgQWlySVJHZW5lcmF0
b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdihib29sIGlzU2lnbmVkRGl2LCBFeHByZXNzaW9uVHlw
ZSBsZWZ0CiAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgcmV0dXJuIEluc3Qo
QnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8pLCBtaW5UbXAsIG5lZ09uZSk7CiAgICAgICAgIH0sCi0gICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAg
IFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBF
eGNlcHRpb25UeXBlOjpJbnRlZ2VyT3ZlcmZsb3cpOwogICAgICAgICB9KTsKICAgICB9CkBAIC00
MDI4LDcgKzQwMjgsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRy
dW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MDU3LDcgKzQwNTcsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRy
dW5jU0YzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MDg2LDcgKzQwODYsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRy
dW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MTE0LDcgKzQxMTQsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRy
dW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MTQyLDcgKzQxNDIsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRy
dW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MTcxLDcgKzQxNzEsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRy
dW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MjE4LDcgKzQyMTgsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRy
dW5jU0YzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC00
MjQ2LDcgKzQyNDYsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRy
dW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVAogCiAgICAgZW1pdENoZWNr
KFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGVtcDIsIHRlbXAyKTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
MjVmYjhkYzNlMDhmMjAzZTE0M2I5NmZhNTZhZjFmMjUyZTVmMDM1Yy4uOTE3OTJjNjI1NmI5NjQ1
MDE1NWYwYzNlMTM0NmEwYmY4NDViMTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNjY2LDcgKzY2Niw3IEBAIEIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2Nl
ZHVyZSYgcHJvY2VkdXJlCiAgICAgfQogCiAgICAgaWYgKGluZm8ubWVtb3J5KSB7Ci0gICAgICAg
IG1fcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBpbm5lZEdQUikgeworICAgICAgICBtX3Byb2Muc2V0V2FzbUJvdW5kc0NoZWNr
R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIp
IHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKICAgICAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNl
IE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nOgpAQCAtNzM4LDcgKzczOCw3IEBAIEIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2Nl
ZHVyZSYgcHJvY2VkdXJlCiAgICAgICAgIHN0YWNrT3ZlcmZsb3dDaGVjay0+YXBwZW5kU29tZVJl
Z2lzdGVyKGZyYW1lUG9pbnRlcigpKTsKICAgICAgICAgc3RhY2tPdmVyZmxvd0NoZWNrLT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIHN0YWNr
T3ZlcmZsb3dDaGVjay0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKLSAgICAgICAgc3RhY2tP
dmVyZmxvd0NoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIHN0YWNrT3Zl
cmZsb3dDaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAg
Y29uc3QgQ2hlY2tlZDxpbnQzMl90PiB3YXNtRnJhbWVTaXplID0gcGFyYW1zLnByb2MoKS5mcmFt
ZVNpemUoKTsKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1QYXJlbnRDaGVja1Np
emUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCAxMDI0
KTsKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGV4dHJhRnJhbWVTaXplID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgc3RkOjptYXg8dWludDMyX3Q+
KApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmUKICAgICAgICAg
Q2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHJlc3VsdFZhbHVlLCBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkp
KTsKIAotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25D
aGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgICAg
ICB9KTsKICAgICB9CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHBy
ZQogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgc2hvdWxk
VGhyb3csIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1p
dEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vz
cyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTEwNjgsNyArMTA2OCw3IEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkVGFibGVJbml0KHVuc2lnbmVkIGVsZW1lbnRJbmRleCwgdW5zaWduZWQgdGFi
bGVJbmRleCwgRXhwCiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdp
bigpLCByZXN1bHRWYWx1ZSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CiAKLSAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAg
ICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5k
c1RhYmxlQWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTExNiw3ICsxMTE2LDcgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUZpbGwodW5zaWduZWQgdGFibGVJbmRleCwgRXhw
cmVzc2lvblR5cGUgb2Zmc2V0LCBFeHAKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigp
LAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBF
cXVhbCwgb3JpZ2luKCksIHJlc3VsdFZhbHVlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsKIAotICAgICAgICBjaGVjay0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
ICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0xMTM4LDcg
KzExMzgsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RU
YWJsZUluZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4LAogICAgICAgICBDaGVja1ZhbHVlKiBj
aGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVj
aywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVzdWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAg
IGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhj
ZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0K
QEAgLTEyMTMsNyArMTIxMyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2Fs
bChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjCiAKICAgICBCMzo6
VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSk7CiAgICAgVmFsdWUq
IGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2lu
KCksIHNpZ25hdHVyZSwgYXJncywKLSAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hw
b2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz1dIChQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5k
bGUpIC0+IHZvaWQgeworICAgICAgICBzY29wZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBvaW50VmFs
dWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPihbPSwgdGhpc10gKFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhhbmRs
ZSkgLT4gdm9pZCB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5l
ZCA9IHRydWU7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCkBA
IC0xMjI0LDcgKzEyMjQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwo
VmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgYwogICAgICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKIAogICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAg
ICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKICAgICAgICAgICAg
ICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5UeXBl
KV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZE1lbW9yeUZpbGwoRXhwcmVzc2lvblR5cGUgZHN0QWRkcmVzcywgRXhw
cmVzc2lvblR5cGUgdGFyZwogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBv
cmlnaW4oKSwgcmVzdWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAg
ICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZC
b3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0xMzE1LDcgKzEzMTUs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE1lbW9yeUluaXQodW5zaWduZWQgZGF0YVNlZ21l
bnRJbmRleCwgRXhwcmVzc2lvblR5cGUgZHN0QQogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3Jp
Z2luKCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVzdWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNr
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTEz
MzUsNyArMTMzNSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTWVtb3J5Q29weShFeHByZXNz
aW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBzcmNBCiAgICAgICAgIENoZWNrVmFs
dWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCByZXN1bHRWYWx1ZSwgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CiAKLSAg
ICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBjaGVjay0+c2V0R2VuZXJh
dG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0
LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtMTc5Nyw3ICsxNzk3LDcgQEAgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmZpeHVwUG9p
bnRlclBsdXNPZmZzZXRGb3JBdG9taWNPcHMoRXh0QXRvbWljT3BUeXBlIG9wLCBWYWwKICAgICBp
ZiAoYWNjZXNzV2lkdGgob3ApICE9IEIzOjpXaWR0aDgpIHsKICAgICAgICAgQ2hlY2tWYWx1ZSog
Y2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hl
Y2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBCaXRBbmQsIG9yaWdpbigpLCBwb2ludGVyLCBjb25zdGFudChwb2ludGVyVHlw
ZSgpLCBzaXplT2ZBdG9taWNPcE1lbW9yeUFjY2VzcyhvcCkgLSAxKSkpOwotICAgICAgICBjaGVj
ay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRo
aXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlv
blR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
MjEyNCw3ICsyMTI0LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphdG9taWNXYWl0KEV4dEF0b21p
Y09wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlclZhciwgRXgKICAgICAgICAgQ2hlY2tW
YWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJv
YywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwgb3JpZ2luKCksIHJlc3VsdFZhbHVlLCBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsK
IAotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRH
ZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVj
ayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAg
fSk7CiAgICAgfQpAQCAtMjE0Miw3ICsyMTQyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphdG9t
aWNOb3RpZnkoRXh0QXRvbWljT3BUeXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXMK
ICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwgb3JpZ2luKCksIHJlc3Vs
dFZhbHVlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgMCkpKTsKIAotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAg
ICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVt
aXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNj
ZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjM0NywxMiArMjM0NywxMiBAQCB2b2lkIEIz
SVJHZW5lcmF0b3I6OmVtaXRFbnRyeVRpZXJVcENoZWNrKCkKICAgICBwYXRjaC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCiAgICAgcGF0Y2gtPmFwcGVu
ZChjb3VudERvd25Mb2NhdGlvbiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgcGF0Y2gt
PnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgdGllclVwID0gaml0LmJyYW5jaEFk
ZDMyKENDYWxsSGVscGVyczo6UG9zaXRpdmVPclplcm8sIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKFRpZXJVcENvdW50OjpmdW5jdGlvbkVudHJ5SW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
dGllclVwUmVzdW1lID0gaml0LmxhYmVsKCk7CiAKLSAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRo
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9
LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgIHRpZXJVcC5saW5rKCZq
aXQpOwogCiAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBleHRyYVBhZGRpbmdCeXRlcyA9IDA7
CkBAIC0yNDIzLDcgKzI0MjMsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVw
Q2hlY2sodWludDMyX3QgbG9vcEluZGV4LCBjb25zdCBTdGFjayYgZW5jbG9zaQogICAgIFRpZXJV
cENvdW50OjpUcmlnZ2VyUmVhc29uKiBmb3JjZUVudHJ5VHJpZ2dlciA9ICYobV90aWVyVXAtPm9z
ckVudHJ5VHJpZ2dlcnMoKS5sYXN0KCkpOwogICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0
PHVpbnQ4X3Q+KFRpZXJVcENvdW50OjpUcmlnZ2VyUmVhc29uOjpEb250VHJpZ2dlciksICJ0aGUg
SklUIGNvZGUgYXNzdW1lcyBub24temVybyBtZWFucyAnZW50ZXInIik7CiAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVGllclVwQ291bnQ6OlRyaWdnZXJSZWFzb24pID09IDEsICJicmFuY2hUZXN0
OCBhc3N1bWVzIHRoaXMgc2l6ZSIpOwotICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGZvcmNlT1NSRW50cnkgPSBqaXQuYnJhbmNoVGVzdDgoQ0NhbGxIZWxwZXJz
OjpOb25aZXJvLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhmb3JjZUVudHJ5VHJpZ2dl
cikpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgdGllclVwID0gaml0LmJyYW5jaEFkZDMy
KENDYWxsSGVscGVyczo6UG9zaXRpdmVPclplcm8sIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KFRpZXJVcENvdW50Ojpsb29wSW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFy
YW1zWzBdLmdwcigpKSk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9j
LCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwgaXNXYXNtQ2FsbCwgRnJlcXVlbnRlZEJsb2NrKGlzV2Fz
bUJsb2NrKSwgRnJlcXVlbnRlZEJsb2NrKGlzRW1iZWRkZXJCbG9jaykpOwogCiAgICAgICAgIFZh
bHVlKiB3YXNtQ2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KGlzV2FzbUJsb2NrLCBv
cmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdzLAotICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZv
aWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz1d
IChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlPiBoYW5kbGUpIC0+IHZvaWQgeworICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQo
UGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz0sIHRo
aXNdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgewogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5l
ZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRv
IGNsb2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJl
IGxlYXZpbmcgdGhlIGluc3RhbmNlLgpAQCAtMzAxMSw3ICszMDExLDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLAogICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGlu
c3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mV2FzbVRv
RW1iZWRkZXJTdHViKGZ1bmN0aW9uSW5kZXgpKSk7CiAKICAgICAgICAgVmFsdWUqIGVtYmVkZGVy
Q2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KGlzRW1iZWRkZXJCbG9jaywgb3JpZ2lu
KCksIHNpZ25hdHVyZSwgYXJncywKLSAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBh
dGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9XSAoUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
aGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNo
cG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXSAo
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gaGFuZGxlKSAtPiB2b2lkIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
LndyaXRlc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KGp1bXBEZXN0aW5hdGlvbiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CkBAIC0zMDQyLDcgKzMw
NDIsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgfSBlbHNlIHsKIAogICAgICAgICBW
YWx1ZSogcGF0Y2ggPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2lu
KCksIHNpZ25hdHVyZSwgYXJncywKLSAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBh
dGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9XSAoUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
aGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNo
cG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXSAo
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gaGFuZGxlKSAtPiB2b2lkIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
LndyaXRlc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAKQEAgLTMwOTQsNyArMzA5NCw3IEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0CiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWJvdmVFcXVhbCwg
b3JpZ2luKCksIGNhbGxlZUluZGV4LCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKSk7CiAK
LSAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBjaGVjay0+c2V0R2Vu
ZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2so
aml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7CiAgICAgICAgIH0p
OwogICAgIH0KQEAgLTMxMTgsNyArMzExOCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0CiAg
ICAgICAgICAgICAgICAgICAgIGNhbGxlZVNpZ25hdHVyZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CiAKLSAgICAgICAgICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRo
aXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNl
cHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpA
QCAtMzEyOSw3ICszMTI5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3Qo
dW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICAgICAgICAg
IENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVl
PihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlU2ln
bmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsKIAotICAgICAgICAgICAgY2hl
Y2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgewogICAgICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQs
IEV4Y2VwdGlvblR5cGU6OkJhZFNpZ25hdHVyZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQpAQCAtMzE2OSw3ICszMTY5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGUKICAgICB7CiAg
ICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVj
a1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBjYWxsZWUsIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSkpOwotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAg
ICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxSZWZl
cmVuY2UpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0zMzUxLDcgKzMzNTEsNyBAQCB2b2lkIEIz
SVJHZW5lcmF0b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdihCMzo6T3Bjb2RlIG9wZXJhdGlvbiwg
VmFsdWUqIGxlZnQsIFZhbAogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBv
cmlnaW4oKSwgcmlnaHQsIGNvbnN0YW50KHR5cGUsIDApKSk7CiAKLSAgICAgICAgY2hlY2stPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CiAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBl
OjpEaXZpc2lvbkJ5WmVybyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTMzNjQsNyArMzM2NCw3
IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrc0Zvck1vZE9yRGl2KEIzOjpPcGNvZGUg
b3BlcmF0aW9uLCBWYWx1ZSogbGVmdCwgVmFsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIGxlZnQsIGNvbnN0
YW50KHR5cGUsIG1pbikpLAogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCByaWdodCwgY29uc3RhbnQodHlwZSwg
LTEpKSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hl
Y2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2Vw
dGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6SW50ZWdlck92ZXJmbG93KTsKICAgICAgICAg
fSk7CiAgICAgfQpAQCAtMzY0MSw3ICszNjQxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnVmFyLCBFeHByZXNzaW8K
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVy
VGhhbiwgb3JpZ2luKCksIGFyZywgbWluKSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3Vu
ZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91
dE9mQm91bmRzKTsKLSAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNldEdlbmVy
YXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2Vw
dGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
PihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSk7CkBAIC0zNjY1LDcgKzM2NjUsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjMyPihFeHByZXNzaW9uVHlwZSBh
cmdWYXIsIEV4cHJlc3NpbwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGFyZywgbWluKSk7CiAgICAgb3V0T2ZC
b3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBv
cmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1
ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBD
aGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKLSAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRp
b25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwog
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSk7CkBAIC0zNjkwLDcg
KzM2OTAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNVRjY0
PihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3NpbwogICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgYXJnLCBt
aW4pKTsKICAgICBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDAp
KTsKICAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVj
a1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwotICAgIHRyYXAt
PnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAg
dGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNU
cnVuYyk7CiAgICAgfSk7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgSW50MzIsIG9yaWdp
bigpKTsKQEAgLTM3MTQsNyArMzcxNCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BU
eXBlOjpJMzJUcnVuY1VGMzI+KEV4cHJlc3Npb25UeXBlIGFyZ1ZhciwgRXhwcmVzc2lvCiAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgR3JlYXRlclRoYW4s
IG9yaWdpbigpLCBhcmcsIG1pbikpOwogICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCBj
b25zdGFudChJbnQzMiwgMCkpOwogICAgIENoZWNrVmFsdWUqIHRyYXAgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLCBvdXRPZkJv
dW5kcyk7Ci0gICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB0cmFwLT5zZXRHZW5lcmF0b3Io
Wz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgewogICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25U
eXBlOjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9w
cm9jLCBJbnQzMiwgb3JpZ2luKCkpOwpAQCAtMzczOCw3ICszNzM4LDcgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnVmFy
LCBFeHByZXNzaW8KICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBHcmVhdGVyRXF1YWwsIG9yaWdpbigpLCBhcmcsIG1pbikpOwogICAgIG91dE9mQm91bmRz
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2lu
KCksIG91dE9mQm91bmRzLCBjb25zdGFudChJbnQzMiwgMCkpOwogICAgIENoZWNrVmFsdWUqIHRy
YXAgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7Ci0gICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB0
cmFwLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hl
Y2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgb3JpZ2luKCkpOwpAQCAtMzc2Miw3ICszNzYy
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2ND4oRXhw
cmVzc2lvblR5cGUgYXJnVmFyLCBFeHByZXNzaW8KICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGFyZywgbWluKSk7
CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAg
ICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKLSAgICB0cmFwLT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeworICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMt
PmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMp
OwogICAgIH0pOwogCkBAIC0zODA2LDcgKzM4MDYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjMyPihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3Np
bwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0
ZXJFcXVhbCwgb3JpZ2luKCksIGFyZywgbWluKSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZC
b3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
IG91dE9mQm91bmRzKTsKLSAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNldEdl
bmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4
Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihtX3Byb2MsIEludDY0LCBvcmlnaW4oKSk7CkBAIC0zODMwLDcgKzM4MzAsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlw
ZSBhcmdWYXIsIEV4cHJlc3NpbwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIEdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgYXJnLCBtaW4pKTsKICAgICBvdXRP
ZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWws
IG9yaWdpbigpLCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDApKTsKICAgICBDaGVja1Zh
bHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwotICAgIHRyYXAtPnNldEdlbmVyYXRvcihb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CisgICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdEV4Y2Vw
dGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUcnVuYyk7CiAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggYTQ5OGVmNzgwNzMx
ODI0ZGNmMmVmODc5ODViYjA5YjI5MzIwY2VhZS4uYzhlYjcyYzc0ODdkNmVhNGJlZDM5ZjM0YjE0
NWYzOGQwMTQ3ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAg
LTQyODIsNyArNDI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbV90
cnlSZWFkVW5pY29kZUNoYXJhY3RlckNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9q
aXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAg
ICBtX2ppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxOb1B0clRhZz4gdHJ5UmVhZFVuaWNv
ZGVDaGFyYWN0ZXJIZWxwZXIgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fdHJ5
UmVhZFVuaWNvZGVDaGFyYWN0ZXJFbnRyeSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8g
Y2FsbCA6IG1fdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJDYWxscykKQEAgLTQ0MDEsNyArNDQwMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbV90cnlSZWFkVW5pY29kZUNo
YXJhY3RlckNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9qaXQuYWRkTGlua1Rhc2so
Wz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBtX2ppdC5hZGRMaW5r
VGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxOb1B0clRhZz4gdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxw
ZXIgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fdHJ5UmVhZFVuaWNvZGVDaGFy
YWN0ZXJFbnRyeSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gY2FsbCA6IG1fdHJ5UmVh
ZFVuaWNvZGVDaGFyYWN0ZXJDYWxscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9t
YXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4
IGY0ZWE3OGQxM2UxY2RkYjYxOWI4MjI4NjhkMzNjNzI3YzlmMmY5OGIuLmU5NWQ5OTEyNjNmNmE5
ZmQwMzM1NzUyNmYyYTNkNTg2ZTE3OThjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1
dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNw
cApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgQXV0b21hdGljVGhyZWFkOjpzdGFydChjb25zdCBB
YnN0cmFjdExvY2tlciYpCiAgICAgCiAgICAgVGhyZWFkOjpjcmVhdGUoCiAgICAgICAgIG5hbWUo
KSwKLSAgICAgICAgWz1dICgpIHsKKyAgICAgICAgWz0sIHRoaXNdICgpIHsKICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwg
IjogUnVubmluZyBhdXRvbWF0aWMgdGhyZWFkIVxuIik7CiAgICAgICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXggZGM3MTg3M2JmOWE0MGFhN2QyODk3OGJi
MTY1Y2FjNGI5OTkwNDdmNC4uM2YwY2NjZjQzNTJhNjJmN2NmZmJmOWNmY2VkMDBiMTZkN2FiNmY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTc0LDEzICs3NCwx
MSBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAgICAgICBDU1NEZXZpY2VBZGFwdGF0
aW9uCiAgICAgfSB0eXBlOwogCi0gICAgZW51bSB7Ci0gICAgICAgIFZhbHVlQXV0byA9IC0xLAot
ICAgICAgICBWYWx1ZURldmljZVdpZHRoID0gLTIsCi0gICAgICAgIFZhbHVlRGV2aWNlSGVpZ2h0
ID0gLTMsCi0gICAgICAgIFZhbHVlUG9ydHJhaXQgPSAtNCwKLSAgICAgICAgVmFsdWVMYW5kc2Nh
cGUgPSAtNQotICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgVmFsdWVBdXRvID0gLTE7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgVmFsdWVEZXZpY2VXaWR0aCA9IC0yOworICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IFZhbHVlRGV2aWNlSGVpZ2h0ID0gLTM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgVmFsdWVQb3J0cmFpdCA9IC00OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IFZhbHVlTGFuZHNjYXBlID0gLTU7CiAKICAgICBleHBsaWNpdCBWaWV3cG9ydEFyZ3VtZW50cyhU
eXBlIHR5cGUgPSBJbXBsaWNpdCkKICAgICAgICAgOiB0eXBlKHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuaAppbmRleCA0ODdjNzA1OGViOTc2MWE0ODJhYmY5ZWIzNTY5NzUzNzhjOTY4NzZjLi5k
MGRhMzcxNDBhY2ViNTM5YzNjYmQ5Y2NiZGI1MzUxODRhOTQ0ZDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2hl
ZWxFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdoZWVsRXZlbnQpOwogcHVibGljOgotICAgIGVudW0geyBUaWNrTXVsdGlwbGllciA9
IDEyMCB9OworICAgIHN0YXRpYyBjb25zdCBjaGFyIFRpY2tNdWx0aXBsaWVyID0gMTIwOwogCiAg
ICAgZW51bSB7CiAgICAgICAgIERPTV9ERUxUQV9QSVhFTCA9IDAsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKaW5kZXggMmU4YmRlZTdhYWExOWRmODA2
Yzc4NTgwNGMwMjA3NGVjYTk5ZTZjMS4uNTRjMjFhNDEzOTE3ZWE3MWJhODE5NGE5NDYzZDQyNTAy
ZjY0YWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0lkZW50aWZp
ZXIgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBlbnVtIHsgSXRlcmF0aW9uQ291bnRJbmZpbml0
ZSA9IC0xIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgSXRlcmF0aW9uQ291bnRJbmZp
bml0ZSA9IC0xOwogICAgIGRvdWJsZSBpdGVyYXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0aW9uQ291bnQ7IH0KICAgICBjb25zdCBOYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVTY29wZU9yZGluYWwo
KSBjb25zdCB7IHJldHVybiBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAw
NTQxNmE1MDAxNWI2ZmMxY2Q1NTAzMTA5MjEyZDM2NWViZjc5ZGU5Li5mN2M3YzNhMjUyMDkyMTFk
YTA3M2VlNzAxOWU5ZmZhYzVlMWU4YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjM4LDcgKzYzOCw3IEBAIGJv
b2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdl
KEltYWdlKiBpbWFnZSkgY29uc3QKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJ
bWFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBlbnVtIHsgTWF4RGltZW5zdGlv
bkZvckRpcmVjdENvbXBvc2l0aW5nID0gMjAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IE1heERpbWVuc3Rpb25Gb3JEaXJlY3RDb21wb3NpdGluZyA9IDIwMDA7CiAgICAgaWYgKGltYWdl
LT53aWR0aCgpID4gTWF4RGltZW5zdGlvbkZvckRpcmVjdENvbXBvc2l0aW5nIHx8IGltYWdlLT5o
ZWlnaHQoKSA+IE1heERpbWVuc3Rpb25Gb3JEaXJlY3RDb21wb3NpdGluZykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGY1OGY1MjdjY2Q3ZjczNWZmY2I3MDUzNTRiM2Fk
NmVmNTQ1OTZiZDYuLmZkZTIxYmZhM2M3ZDAyODIxZDlmYzcwMzE0ZDdmZWViZWVkMGVlMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCkBAIC0xMDczLDEyICsxMDczLDkgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBDb2xv
clNjaGVtZUJpdHMgPSAyOwogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgR3JpZEF1dG9G
bG93Qml0cyA9IDQ7Ci1lbnVtIEludGVybmFsR3JpZEF1dG9GbG93QWxnb3JpdGhtIHsKK2VudW0g
SW50ZXJuYWxHcmlkQXV0b0Zsb3cgewogICAgIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFy
c2UgPSAxIDw8IDAsCiAgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlICA9IDEgPDwg
MSwKLX07Ci0KLWVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dEaXJlY3Rpb24gewogICAgIEludGVy
bmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cgICAgPSAxIDw8IDIsCiAgICAgSW50ZXJuYWxBdXRvRmxv
d0RpcmVjdGlvbkNvbHVtbiA9IDEgPDwgMwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmNwcAppbmRleCAyNDZiMjNhYzIwOTEzZjk5
NjNmYjEyOGRmN2NkNTU2ZTU5YzY0OTdlLi42MzBlM2Y4M2NhOWI0NDBjM2ZlNjliMDA0YjNmMWY3
ZGQ1MWEyMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6
OnNob3dDb25zb2xlKCkKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnNob3coKTsKIAotICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3RhYmxpc2hlZChb
PV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3RhYmxpc2hlZChbPSwgdGhpc10gewog
ICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNob3dDb25zb2xlKCksIDApOwogICAgIH0pOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKIAotICAgIHdoZW5Gcm9udGVuZENvbm5l
Y3Rpb25Fc3RhYmxpc2hlZChbPV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3RhYmxp
c2hlZChbPSwgdGhpc10gewogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiAgICAgfSk7CiB9CkBA
IC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGkKIAogICAgIFN0cmluZyBp
bnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5lbnN1cmVQYWdlQWdlbnQoKS5mcmFtZUlkKGZyYW1lLT5jb3JlRnJhbWUoKSk7
CiAKLSAgICB3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz1dIHsKKyAgICB3aGVu
RnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz0sIHRoaXNdIHsKICAgICAgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93TWFpblJl
c291cmNlRm9yRnJhbWUoaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyKSwgMCk7CiAgICAgfSk7CiB9
CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGlu
ZygpCiAKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93
KCk7CiAKLSAgICB3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz1dIHsKKyAgICB3
aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz0sIHRoaXNdIHsKICAgICAgICAgbV9m
cm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydFBh
Z2VQcm9maWxpbmcoKSwgMCk7CiAgICAgfSk7CiB9CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKIAotICAgIHdoZW5Gcm9udGVuZENvbm5l
Y3Rpb25Fc3RhYmxpc2hlZChbPV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3RhYmxp
c2hlZChbPSwgdGhpc10gewogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0b3BQYWdlUHJvZmlsaW5nKCksIDApOwogICAgIH0pOwog
fQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEVsZW1lbnRTZWxl
Y3Rpb24oKQogICAgIGlmICghbV9wYWdlLT5jb3JlUGFnZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz1dIHsKKyAgICB3aGVuRnJv
bnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz0sIHRoaXNdIHsKICAgICAgICAgbV9mcm9udGVu
ZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydEVsZW1lbnRT
ZWxlY3Rpb24oKSwgMCk7CiAgICAgfSk7CiB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3I6OnN0b3BFbGVtZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIW1fcGFnZS0+Y29yZVBh
Z2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFi
bGlzaGVkKFs9XSB7CisgICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9LCB0
aGlzXSB7CiAgICAgICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6U3RvcEVsZW1lbnRTZWxlY3Rpb24oKSwgMCk7CiAgICAgfSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449243</attachid>
            <date>2022-01-14 22:35:04 -0800</date>
            <delta_ts>2022-01-16 21:19:17 -0800</delta_ts>
            <desc>Updated patch after rebase</desc>
            <filename>bug-235023-20220115033502.patch</filename>
            <type>text/plain</type>
            <size>74418</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWJhNDI4ZGExMjhkOGY4MjVkYWZhZTAzNjc1OWZmNGFiYjkxOTY2Li40MzY0MjY3NGFkZDc3MWMx
NzY4OTJjZGM3ZGUxY2U2MjBkMzIwYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjItMDEtMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgRml4IEMrKzIwIGJ1aWxkIHdhcm5pbmdzIHdpdGggR0NDCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1vc3RseSByZWxhdGVkIHRv
IGRlcHJlY2F0aW5nIG9wZXJhdGlvbnMgYmV0d2VlbiBlbnVtcyBvZiBkaWZmZXJlbnQKKyAgICAg
ICAgdHlwZXMgYW5kIG5vdCBjYXB0dXJpbmcgdGhpcyBieSBkZWZhdWx0IGluIGxhbWJkYXMuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6IENhc3RpbmcgZW51bXMgdG8gc2Ft
ZSB0eXBlLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtb3ZjYyk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6amNjUmVsMzIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
OnNldGNjT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6IENhcHR1cmUg
dGhpcyBpbiBsYW1iZGEuCisgICAgICAgIChKU0M6OkIzOjpDaGVja1NwZWNpYWw6OmdlbmVyYXRl
KToKKyAgICAgICAgKiBiMy9CM1R5cGUuY3BwOiBSZXBsYWNlIGlzX3BvZF92IGlzIGlzX3N0YW5k
YXJkX2xheW91dF92IGFuZAorICAgICAgICBpc190cml2aWFsX3YKKyAgICAgICAgKiBieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcDogQ2FwdHVyZSB0aGlzIGluIGxhbWJkYS4KKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1p
dERpcmVjdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6
ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDogRGl0dG8uCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOiBEaXR0by4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogaml0L0lDU3RhdHMuaDogQ2FzdCBlbnVtcyB0byBzYW1lIHR5cGUuCisgICAg
ICAgIChKU0M6OklDRXZlbnQ6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1l
dGljLmNwcDogQ2FwdHVyZSB0aGlzIGluIGxhbWJkYS4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0aElDU2xvdyk6CisgICAgICAgICogaml0L0pJVFNpemVTdGF0aXN0aWNzLmNwcDogRGl0dG8u
CisgICAgICAgIChKU0M6OkpJVFNpemVTdGF0aXN0aWNzOjptYXJrRW5kKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OlZNOjpkZWxldGVBbGxMaW5rZWRD
b2RlKToKKyAgICAgICAgKEpTQzo6Vk06OmRlbGV0ZUFsbENvZGUpOgorICAgICAgICAoSlNDOjpW
TTo6c2hyaW5rRm9vdHByaW50V2hlbklkbGUpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpB
aXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRU
YWJsZUdldCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJsZVNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUluaXQpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVGaWxsKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSk6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRNZW1vcnlGaWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE1lbW9yeUNvcHkpOgorICAgICAgICAoSlNDOjpXYXNt
OjpBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5SW5pdCk6CisgICAgICAgIChKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcik6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljTG9hZE9wKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNTdG9yZU9wKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNCaW5hcnlSTVdPcCk6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmF0b21pY1dhaXQpOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YXRvbWljTm90aWZ5KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRFbnRyeVRpZXJVcENoZWNrKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2spOgorICAgICAgICAo
SlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAgICAoSlNDOjpXYXNt
OjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrc0Zvck1vZE9yRGl2KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjY0Pik6CisgICAg
ICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Yz
Mj4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJ
MzJUcnVuY1VGNjQ+KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9w
PE9wVHlwZTo6STMyVHJ1bmNVRjMyPik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0Y2ND4pOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGNjQ+KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjMyPik6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5j
VUYzMj4pOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOiBEaXR0by4KKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUluaXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZUZpbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRUYWJsZUNvcHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0
SW5kaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTWVt
b3J5RmlsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE1lbW9yeUlu
aXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRNZW1vcnlDb3B5KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNl
dEZvckF0b21pY09wcyk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmF0b21p
Y1dhaXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphdG9taWNOb3RpZnkp
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0RW50cnlUaWVyVXBDaGVj
ayk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hl
Y2spOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdik6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjY0Pik6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNTRjMy
Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMy
VHJ1bmNVRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STMyVHJ1bmNVRjMyPik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjY0Pik6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjMyPik6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjMyPik6
CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDogRGl0dG8uCisKIDIwMjItMDEtMTQgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIElSQyBmb3IgV2FzbSwg
YW5kIEJyaWdncyBmb3IgSlMgb24gQVJNNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNjE0ZTMyNjk4ZjNlMmMwZWZjZmEyYjQ2
MmNmNDBjMjQ0M2FkY2M1Yy4uMWQ3M2JhMTU2ZmI2MDIxOGZmMGMwOWJmZDJlMTk1YjUzY2RiYWQ4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0wOSAgTGF1cm8gTW91cmEgIDxsbW91cmFA
aWdhbGlhLmNvbT4KKworICAgICAgICBGaXggQysrMjAgYnVpbGQgd2FybmluZ3Mgd2l0aCBHQ0MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTW9zdGx5
IHJlbGF0ZWQgdG8gZGVwcmVjYXRpbmcgb3BlcmF0aW9ucyBiZXR3ZWVuIGVudW1zIG9mIGRpZmZl
cmVudAorICAgICAgICB0eXBlcyBhbmQgbm90IGNhcHR1cmluZyB0aGlzIGJ5IGRlZmF1bHQgaW4g
bGFtYmRhcy4KKworICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOiBDYXB0dXJlIHRo
aXMgaW4gbGFtYmRhLgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKwog
MjAyMi0wMS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBXVEY6OlVVSUQncyBwb3RlbnRpYWwgY29sbGlzaW9uIHdpdGggZW1wdHkgYW5kIGRlbGV0
ZWQgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ1M2I0ZjVmMzNmMjM2ODg0MGVlMjA5MDM0MTVhZDM4
NzgyYTA2YS4uMDQzNGI1MzFmYTJmMjBkNTAyZjhjZTNkODE0NzQ0MmY3ODM2ZWI2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAxLTA5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIEZpeCBDKysyMCBidWlsZCB3YXJuaW5ncyB3aXRoIEdDQwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNb3N0bHkg
cmVsYXRlZCB0byBkZXByZWNhdGluZyBvcGVyYXRpb25zIGJldHdlZW4gZW51bXMgb2YgZGlmZmVy
ZW50CisgICAgICAgIHR5cGVzIGFuZCBub3QgY2FwdHVyaW5nIHRoaXMgYnkgZGVmYXVsdCBpbiBs
YW1iZGFzLgorCisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IFJlcGxhY2UgZW51
bSB3aXRoIGNvbnN0ZXhwciBpbnRzIGFzIHRoZXkncmUKKyAgICAgICAgY29tcGFyZWQgdG8gZG91
YmxlcyBpbiB2YXJpb3VzIHBsYWNlcyB0aHJvdWdoIFZpZXdwb3J0QXJndW1lbnRzLmNwcC4KKyAg
ICAgICAgKiBkb20vV2hlZWxFdmVudC5oOiBSZXBsYWNlIHNpbmdsZS12YWx1ZWQgZW51bSB3aXRo
IGNvbnN0ZXhwcgorICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2hvdWxkRGly
ZWN0bHlDb21wb3NpdGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6IE1lcmdlIHR3byBlbnVtcyB0aGF0IGFyZQorICAgICAgICB1
c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYmVpbmcgY29tYmluZWQgdG8gZm9ybSBhIHRoaXJk
IGVudW0uCisKIDIwMjItMDEtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdyZXNzaW9uKHIyODE1MjApIDMgc3VidGVzdHMgc3RhcnRlZCBmYWlsaW5nIG9u
IGRvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5o
dG1sIFdQVCB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzNjg5MzYzMGM5NDEwMzllYzQwNjQyYTJhYTc3ZTZk
NWRmZTk0MTMuLjg1YTE0MzFlY2E2YTRiNTkwOTYwZjNjZDdhZGMyOTNkMWI2Y2I0YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDEtMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGln
YWxpYS5jb20+CisKKyAgICAgICAgRml4IEMrKzIwIGJ1aWxkIHdhcm5pbmdzIHdpdGggR0NDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1vc3RseSBy
ZWxhdGVkIHRvIGRlcHJlY2F0aW5nIG9wZXJhdGlvbnMgYmV0d2VlbiBlbnVtcyBvZiBkaWZmZXJl
bnQKKyAgICAgICAgdHlwZXMgYW5kIG5vdCBjYXB0dXJpbmcgdGhpcyBieSBkZWZhdWx0IGluIGxh
bWJkYXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuY3Bw
OiBDYXB0dXJlIHRoaXMgaW4gbGFtYmRhcy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2hvd1Jlc291
cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdGFydEVsZW1lbnRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0b3BFbGVtZW50U2VsZWN0aW9uKToKKwog
MjAyMi0wMS0xNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW5qZWN0IExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZSBiZWZvcmUgTlNBcHBsaWNhdGlvbiBp
cyBpbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKaW5kZXggOTUwM2I5OWJhYTI5OWY2NTRlOTQ1MTU0ZGYxMTU0OTg4YzM4Y2M5ZC4u
YTQwZWM3ZGExYWI3NGEwODA2ZDk0YjZhNzBjOWViOWZlYmNlODRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0zMzUsMTcgKzMzNSwx
NyBAQCBwcml2YXRlOgogICAgIAogICAgIFR3b0J5dGVPcGNvZGVJRCBjbW92Y2MoQ29uZGl0aW9u
IGNvbmQpCiAgICAgewotICAgICAgICByZXR1cm4gKFR3b0J5dGVPcGNvZGVJRCkoT1AyX0NNT1ZD
QyArIGNvbmQpOworICAgICAgICByZXR1cm4gKFR3b0J5dGVPcGNvZGVJRCkoT1AyX0NNT1ZDQyAr
IHN0YXRpY19jYXN0PFR3b0J5dGVPcGNvZGVJRD4oY29uZCkpOwogICAgIH0KIAogICAgIFR3b0J5
dGVPcGNvZGVJRCBqY2NSZWwzMihDb25kaXRpb24gY29uZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biAoVHdvQnl0ZU9wY29kZUlEKShPUDJfSkNDX3JlbDMyICsgY29uZCk7CisgICAgICAgIHJldHVy
biAoVHdvQnl0ZU9wY29kZUlEKShPUDJfSkNDX3JlbDMyICsgc3RhdGljX2Nhc3Q8VHdvQnl0ZU9w
Y29kZUlEPihjb25kKSk7CiAgICAgfQogCiAgICAgVHdvQnl0ZU9wY29kZUlEIHNldGNjT3Bjb2Rl
KENvbmRpdGlvbiBjb25kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIChUd29CeXRlT3Bjb2RlSUQp
KE9QX1NFVENDICsgY29uZCk7CisgICAgICAgIHJldHVybiAoVHdvQnl0ZU9wY29kZUlEKShPUF9T
RVRDQyArIHN0YXRpY19jYXN0PFR3b0J5dGVPcGNvZGVJRD4oY29uZCkpOwogICAgIH0KIAogICAg
IHR5cGVkZWYgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
aGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFs
LmNwcAppbmRleCBjMmRmNjIyYjUxYWM1NDk5M2EzYWMxOWEwNDA1MTIzYWUyYTZiYTc2Li4yZTM0
Nzg0MzdmZmEwYTcyMzdjYmI0YTI4ODA2MTNjODhiM2U0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBDQ2FsbEhl
bHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBl
cnMmIGppdCwgR2VuZXJhdAogCiAgICAgY29udGV4dC5sYXRlUGF0aHMuYXBwZW5kKAogICAgICAg
ICBjcmVhdGVTaGFyZWRUYXNrPEdlbmVyYXRpb25Db250ZXh0OjpMYXRlUGF0aEZ1bmN0aW9uPigK
LSAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBHZW5l
cmF0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgICAgIGZhaWwubGluaygmaml0
KTsKIAogICAgICAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgdW5kbyB0aGUgb3BlcmF0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAppbmRleCA2Nzg0MWJkZGMyYjY3YmI0NGE3
NTUxYjNiYzBjODBmZjYyYTAxMDMyLi41MWNkYWMwOTUyMmQ0ZWRjYzg1NmJhYWY5MzAzMDVhMDc5
NzcyMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcApAQCAtNTksNyArNTksNyBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZSB0eXBlKQogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpY19hc3NlcnQoc3RkOjppc19w
b2RfdjxKU0M6OkIzOjpUeXBlS2luZD4pOworc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJk
X2xheW91dF92PEpTQzo6QjM6OlR5cGVLaW5kPiAmJiBzdGQ6OmlzX3RyaXZpYWxfdjxKU0M6OkIz
OjpUeXBlS2luZD4pOwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDI1MWU1YWI1YzY2MDIyNWJkNzUz
YTExNzllMjIyNTUzNGNlOWE1M2IuLjgxZDdkMDg3OTk1NDYwNDVlZGVlYjI2NTdmNTQ5MTNkZDFm
YWQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBib29sIGNhbGxIYXNSZXR1
cm5WYWx1ZSA9IGlzR2V0dGVyKCk7CiAgICAgICAgICAgICByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zy
b21TdGFja0ZvckNhbGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVlKTsKIAotICAgICAg
ICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgICAgIHRoaXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCku
Y2FsbExpbmtJbmZvKCktPnNldENvZGVMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzbG93UGF0aFN0YXJ0KSwKICAg
ICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KGRvbmVMb2NhdGlvbikpOwpAQCAtMjE3Miw3ICsyMTcyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoQ3VzdG9tQWNj
ZXNzb3JQdHJUYWcpOwotICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1
c2VKSVRDYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21W
YWx1ZUdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JHZXR0ZXIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsob3BlcmF0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPih2bUVudHJ5Q3VzdG9tR2V0dGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDM0YWNhNTE3ZTY4ZjZm
OGU0ZTM1MDAzYTQ3ZjI5ZGNhZWQyNDUyNDEuLjUwMGY1ZWQ1YjY2ZjI0OTliMzRlZmFmMjlmNTVm
MzU3NjY3Yjc2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgc2V0VXNlc0Rh
dGFJQ3MoVXNlRGF0YUlDOjpObyk7CiAKICAgICBhdXRvIGNhbGwgPSBqaXQubmVhckNhbGwoKTsK
LSAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAg
aml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAg
ICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50
ZXJuYWxQdHJUYWc+KGNhbGwpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3Ro
aXNdIChMaW5rQnVmZmVyJikgewpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQs
IFNjb3BlCiAgICAgc2V0VXNlc0RhdGFJQ3MoVXNlRGF0YUlDOjpObyk7CiAKICAgICBhdXRvIGZh
c3RQYXRoU3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgaml0LmFkZExpbmtUYXNrKFs9LCB0aGlzXSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICBtX2Zhc3RQYXRoU3RhcnQgPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oZmFzdFBhdGhTdGFydCk7CiAgICAgfSk7
CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXRE
aXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZQogCiAgICAgcHJl
cGFyZUZvclRhaWxDYWxsKCk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwot
ICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICBq
aXQuYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAg
ICAgIG1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRl
cm5hbFB0clRhZz4oY2FsbCk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhp
c10gKExpbmtCdWZmZXImKSB7CkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVy
KGZhc3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShD
Q2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsK
LSAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc2xvd1Bh
dGhTdGFydCgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSwgImluaXRpYWxpemUgZGly
ZWN0IGNhbGwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggMmNiOTE2NTNmMDk4ZTkyYzg4YzNmMjY0NGQ5NDE3MTQxNjdlOGM4OS4u
MzQ5Zjg3ZDEzNzQwOTI1MWE0ZmIxMTIzZGJkZTUwZGZlMTI1YzIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUzOTIsNyArNTM5
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklU
QmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAKICAgICAgICAgYXV0byBkb25lID0gbV9q
aXQubGFiZWwoKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgc2F2
ZVBsYW5zID0gV1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yTGFtYmRhKFs9LCB0aGlzLCBzYXZlUGxhbnMgPSBXVEZNb3ZlKHNhdmVQbGFucyldICgp
IHsKICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aEp1bXBzLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aFN0YXJ0
ID0gbV9qaXQubGFiZWwoKTsKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTYwMTUsNyAr
NjAxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwg
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAKICAgICAgICAgYXV0byBkb25lID0g
bV9qaXQubGFiZWwoKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwg
c2F2ZVBsYW5zID0gV1RGTW92ZShzYXZlUGxhbnMpXSAoKSB7CisgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yTGFtYmRhKFs9LCB0aGlzLCBzYXZlUGxhbnMgPSBXVEZNb3ZlKHNhdmVQbGFucyld
ICgpIHsKICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aEp1bXBzLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aFN0YXJ0ID0g
bV9qaXQubGFiZWwoKTsKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDA3OGJiZTM5
ZWFiYjVlM2VkMmM4Y2I4YzE4MDJjMDU4ZmIzNmNhZjkuLjYyNmY2MTk1Y2Y2NzM2ODI3OTRiMWUz
YmI5YmMwOTQwYmRmOTZmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTk1MCw3ICs1OTUwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVyc0ltcGwoZmFsc2UsIHNhdmVQbGFucywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4KCk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3JMYW1iZGEoWz1dKCkgeworICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxhbWJkYShbPSwgdGhpc10oKSB7CiAgICAgICAgICAg
ICBjYWxsVGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2
ZVBsYW5zKTsKQEAgLTYwMDIsNyArNjAwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgc3RyZWFtSW5kZXggPSBtX3N0cmVhbS0+
c2l6ZSgpOwogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmJ5dGVjb2RlSW5kZXhUb1N0cmVhbUlu
ZGV4LmFkZChieXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCk7CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3JMYW1iZGEoWz1dKCkgeworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvckxh
bWJkYShbPSwgdGhpc10oKSB7CiAgICAgICAgICAgICBmb3JjZU9TUkVudHJ5LmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIG92ZXJmbG93ZWRDb3VudGVyLmxpbmsoJm1faml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA5MWIzYjMxNTUxMGRhNjgyNGIzYzk2MzQxMGUz
MzZkOTU4OWFiYzdjLi41ZDBiMmYzMWNjNDFmZTIyZWYyYTlkMDlhMjlmNmJhNDhhOTE0M2E3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtMTUwLDggKzE1MCw4IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3Byb3Bl
cnR5TmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2tpbmQgKyBtX3Byb3BlcnR5
TG9jYXRpb24gKyBXVEY6OlB0ckhhc2g8Y29uc3QgQ2xhc3NJbmZvKj46Omhhc2gobV9jbGFzc0lu
Zm8pOwotICAgICAgICByZXR1cm4gbV9raW5kICsgbV9wcm9wZXJ0eUxvY2F0aW9uICsgV1RGOjpQ
dHJIYXNoPGNvbnN0IENsYXNzSW5mbyo+OjpoYXNoKG1fY2xhc3NJbmZvKSArIFN0cmluZ0hhc2g6
Omhhc2gobV9wcm9wZXJ0eU5hbWUuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2tpbmQpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcHJvcGVy
dHlMb2NhdGlvbikgKyBXVEY6OlB0ckhhc2g8Y29uc3QgQ2xhc3NJbmZvKj46Omhhc2gobV9jbGFz
c0luZm8pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fa2luZCkgKyBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wcm9wZXJ0eUxvY2F0aW9uKSArIFdURjo6UHRySGFzaDxj
b25zdCBDbGFzc0luZm8qPjo6aGFzaChtX2NsYXNzSW5mbykgKyBTdHJpbmdIYXNoOjpoYXNoKG1f
cHJvcGVydHlOYW1lLnN0cmluZygpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAppbmRleCA2OTllYWZjYjcyOWVjYTQxNDA3NWVjMTBjY2M5MjYyMjBiZDQ1NDc1
Li43NmUwNjg5ZmMxOTUwZTQ1NTMxNDY0N2Q1NDk3MjYwODZmMjQyYWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTg1OCw3ICs4NTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1
bHQsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CisgICAgYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CiAgICAgICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElDR2VuZXJhdGlvblN0
YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZpbmQoY3VycmVudElu
c3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIG1hdGhJQy0+ZmluYWxpemVJbmxpbmVD
b2RlKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSwgbGlua0J1ZmZlcik7CiAgICAgfSk7CkBAIC05MTks
NyArOTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5l
cmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHQsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgYWRkTGlua1Rhc2soWz0sIHRoaXNdIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgbWF0aElD
R2VuZXJhdGlvblN0YXRlID0gbV9pbnN0cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlLmZp
bmQoY3VycmVudEluc3RydWN0aW9uKS0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIG1hdGhJQy0+Zmlu
YWxpemVJbmxpbmVDb2RlKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSwgbGlua0J1ZmZlcik7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFNpemVTdGF0aXN0
aWNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3Bw
CmluZGV4IDlhZjlmNmQ3MjZlMTZmNGE2ZTYzNDkxOWY5ZTViYzcyMDE2YzE0NGUuLmE2YTMwNTBm
YzgxNDg3ZDQ4NmZhMTk0MjE0N2MxYWY1ZGI1OTAwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU2l6ZVN0YXRpc3RpY3MuY3BwCkBAIC00NSw5ICs0NSw5IEBAIEpJVFNp
emVTdGF0aXN0aWNzOjpNYXJrZXIgSklUU2l6ZVN0YXRpc3RpY3M6Om1hcmtTdGFydChTdHJpbmcg
aWRlbnRpZmllciwgQ0NhbGxICiB2b2lkIEpJVFNpemVTdGF0aXN0aWNzOjptYXJrRW5kKE1hcmtl
ciBtYXJrZXIsIENDYWxsSGVscGVycyYgaml0KQogewogICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZW5kID0gaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgIGppdC5hZGRMaW5rVGFz
ayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICBqaXQuYWRkTGlua1Rhc2soWz0s
IHRoaXNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgIHNpemVfdCBzaXplID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mPE5vUHRyVGFnPihlbmQpLnVudGFnZ2VkRXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1hcmtlci5z
dGFydCkudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKLSAgICAgICAgbGlua0J1
ZmZlci5hZGRNYWluVGhyZWFkRmluYWxpemF0aW9uVGFzayhbPV0geworICAgICAgICBsaW5rQnVm
ZmVyLmFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9LCB0aGlzXSB7CiAgICAgICAgICAg
ICBhdXRvJiBlbnRyeSA9IG1fZGF0YS5hZGQobWFya2VyLmlkZW50aWZpZXIsIEVudHJ5IHsgfSku
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgKytlbnRyeS5jb3VudDsKICAgICAgICAgICAg
IGVudHJ5LnRvdGFsQnl0ZXMgKz0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBmNTQ5NDY0NDgyNGY3MjJhNzliM2RjNGFlMDNkYzEwYmJlNDg3OTgxLi5mZjFhYWY3
M2E0OWQzZjcxMWY1NDJkNjVmMGQxZGYzNzYxY2MyMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC03NzQsMTQgKzc3NCwxNCBAQCB2b2lkIFZNOjp3aGVuSWRsZShGdW5j
dGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAKIHZvaWQgVk06OmRlbGV0ZUFsbExpbmtlZENvZGUo
RGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiB7Ci0gICAgd2hlbklkbGUoWz1dICgpIHsKKyAg
ICB3aGVuSWRsZShbPSwgdGhpc10gKCkgewogICAgICAgICBoZWFwLmRlbGV0ZUFsbENvZGVCbG9j
a3MoZWZmb3J0KTsKICAgICB9KTsKIH0KIAogdm9pZCBWTTo6ZGVsZXRlQWxsQ29kZShEZWxldGVB
bGxDb2RlRWZmb3J0IGVmZm9ydCkKIHsKLSAgICB3aGVuSWRsZShbPV0gKCkgeworICAgIHdoZW5J
ZGxlKFs9LCB0aGlzXSAoKSB7CiAgICAgICAgIG1fY29kZUNhY2hlLT5jbGVhcigpOwogICAgICAg
ICBtX3JlZ0V4cENhY2hlLT5kZWxldGVBbGxDb2RlKCk7CiAgICAgICAgIGhlYXAuZGVsZXRlQWxs
Q29kZUJsb2NrcyhlZmZvcnQpOwpAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgVk06OmRlbGV0ZUFs
bENvZGUoRGVsZXRlQWxsQ29kZUVmZm9ydCBlZmZvcnQpCiAKIHZvaWQgVk06OnNocmlua0Zvb3Rw
cmludFdoZW5JZGxlKCkKIHsKLSAgICB3aGVuSWRsZShbPV0gKCkgeworICAgIHdoZW5JZGxlKFs9
LCB0aGlzXSAoKSB7CiAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgqdGhpcyk7CiAgICAgICAg
IGRlbGV0ZUFsbENvZGUoRGVsZXRlQWxsQ29kZUlmTm90Q29sbGVjdGluZyk7CiAgICAgICAgIGhl
YXAuY29sbGVjdE5vdyhTeW5jaHJvbm91c25lc3M6OlN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAppbmRleCA1YmM0MjYwOTJiOTE3NjhhMGY5MjAxYTliN2QxM2Q4MWU5NGYyNGQ0Li5jYjRk
MzU1MmJkNWY0YzM1YWYxNDdhOTgwOTIxY2U3ZGJlMTU3MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTk2Myw3ICs5NjMs
NyBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogCiAgICAgbV9wcm9sb2d1ZVdhc21Db250ZXh0
R1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygpID8gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJv
bG9ndWVTY3JhdGNoR1BSc1sxXSA6IG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUjsKIAotICAgIG1f
cHJvbG9ndWVHZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPEIzOjpBaXI6OlByb2xvZ3VlR2Vu
ZXJhdG9yRnVuY3Rpb24+KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEIzOjpBaXI6OkNvZGUmIGNv
ZGUpIHsKKyAgICBtX3Byb2xvZ3VlR2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFzazxCMzo6QWly
OjpQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0
LCBCMzo6QWlyOjpDb2RlJiBjb2RlKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgY29kZS5lbWl0RGVmYXVsdFByb2xv
Z3VlKGppdCk7CiAKQEAgLTEzMjksNyArMTMyOSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHBy
CiAgICAgZW1pdENDYWxsKCZvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50LCByZXN1bHQsIGlu
c3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgdGFibGVJbmRleCksIGluZGV4
KTsKICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMy
LCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJl
c3VsdCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5l
bWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNj
ZXNzKTsKICAgICB9KTsKIApAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6YWRkVGFibGVTZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5kZXgs
IEV4cHIKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hU
ZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHNob3Vs
ZFRocm93LCBzaG91bGRUaHJvdyk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhpc10gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICB9KTsKIApAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkVGFibGVJbml0KHVuc2lnbmVkIGVsZW1lbnRJbmRleCwgdW5z
aWduZWQgdGFibGVJbmRleCwgRXgKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIH0sIFs9LCB0aGlz
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgIH0pOwogCkBAIC0xNDI1LDcgKzE0MjUsNyBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRUYWJsZUZpbGwodW5zaWduZWQgdGFibGVJbmRleCwg
RXhwcmVzc2lvblR5cGUgb2Zmc2V0LCBFeAogCiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0s
IHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTE0NTIsNyArMTQ1
Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJs
ZUluZGV4LCB1bnNpZ25lZCBzcmNUYWJsZUluZGV4CiAKICAgICBlbWl0Q2hlY2soWyZdIHsKICAg
ICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDMyLCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8pLCByZXN1bHQsIHJlc3VsdCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9
LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNl
cHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICB9KTsKIApAQCAtMTUyNyw3
ICsxNTI3LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5RmlsbChFeHByZXNzaW9u
VHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSB0YXIKIAogICAgIGVtaXRDaGVjayhbJl0g
ewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICB9LCBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQs
IEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICB9KTsKIApAQCAt
MTU1Miw3ICsxNTUyLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTWVtb3J5Q29weShFeHBy
ZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHByZXNzaW9uVHlwZSBzcmMKIAogICAgIGVtaXRDaGVj
ayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6
cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICB9LCBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgeworICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlv
bihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3MpOwogICAgIH0pOwog
CkBAIC0xNTc4LDcgKzE1NzgsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRNZW1vcnlJbml0
KHVuc2lnbmVkIGRhdGFTZWdtZW50SW5kZXgsIEV4cHJlc3Npb25UeXBlIGRzdAogCiAgICAgZW1p
dENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0ciwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgcmVzdWx0LCByZXN1bHQpOwotICAg
IH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhj
ZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAg
fSk7CiAKQEAgLTE3ODUsNyArMTc4NSw3IEBAIGlubGluZSBBaXJJUkdlbmVyYXRvcjo6RXhwcmVz
c2lvblR5cGUgQWlySVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyCiAKICAg
ICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2g2NCwg
bnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCB0ZW1w
LCBUbXAobV9ib3VuZHNDaGVja2luZ1NpemVHUFIpKTsKLSAgICAgICAgfSwgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihq
aXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTgxMSw3ICsxODExLDcgQEAgaW5saW5lIEFpcklSR2VuZXJh
dG9yOjpFeHByZXNzaW9uVHlwZSBBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBv
aW50ZXIKIAogICAgICAgICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEluc3QoQnJhbmNoNjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsKSwgdGVtcCwgc2l6ZU1heCk7Ci0gICAgICAgICAgICB9LCBbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAg
ICAgICAgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dF
eGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMjM4Miw3ICsyMzgyLDcgQEAgaW5saW5lIFR5
cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljTG9hZE9wKEV4dEF0b21pY09wVHlwZSBv
cCwgVHlwZSB2YWx1ZVQKICAgICBpZiAoYWNjZXNzV2lkdGgob3ApICE9IEIzOjpXaWR0aDgpIHsK
ICAgICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hU
ZXN0NjQsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybyksIG5l
d1B0ciwgaXNYODYoKSA/IEFyZzo6Yml0SW1tKHNpemVPZkF0b21pY09wTWVtb3J5QWNjZXNzKG9w
KSAtIDEpIDogQXJnOjpiaXRJbW02NChzaXplT2ZBdG9taWNPcE1lbW9yeUFjY2VzcyhvcCkgLSAx
KSk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAg
ICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5k
c01lbW9yeUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTI0NTQsNyArMjQ1NCw3IEBA
IGlubGluZSB2b2lkIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljU3RvcmVPcChFeHRBdG9taWNP
cFR5cGUgb3AsIFR5cGUgdmFsdWVUeXBlCiAgICAgaWYgKGFjY2Vzc1dpZHRoKG9wKSAhPSBCMzo6
V2lkdGg4KSB7CiAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgcmV0dXJuIElu
c3QoQnJhbmNoVGVzdDY0LCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8pLCBuZXdQdHIsIGlzWDg2KCkgPyBBcmc6OmJpdEltbShzaXplT2ZBdG9taWNPcE1lbW9y
eUFjY2VzcyhvcCkgLSAxKSA6IEFyZzo6Yml0SW1tNjQoc2l6ZU9mQXRvbWljT3BNZW1vcnlBY2Nl
c3Mob3ApIC0gMSkpOwotICAgICAgICB9LCBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICB9LCBbPSwgdGhpc10gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6
T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0yNTA4LDcg
KzI1MDgsNyBAQCBUeXBlZFRtcCBBaXJJUkdlbmVyYXRvcjo6ZW1pdEF0b21pY0JpbmFyeVJNV09w
KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5cAogICAgIGlmIChhY2Nlc3NXaWR0aChv
cCkgIT0gQjM6OldpZHRoOCkgewogICAgICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaFRlc3Q2NCwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvKSwgbmV3UHRyLCBpc1g4NigpID8gQXJnOjpiaXRJbW0oc2l6ZU9mQXRv
bWljT3BNZW1vcnlBY2Nlc3Mob3ApIC0gMSkgOiBBcmc6OmJpdEltbTY0KHNpemVPZkF0b21pY09w
TWVtb3J5QWNjZXNzKG9wKSAtIDEpKTsKLSAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgfSwgWz0s
IHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2Vw
dGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpA
QCAtMjY4MCw3ICsyNjgwLDcgQEAgVHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWND
b21wYXJlRXhjaGFuZ2UoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHUKICAgICBpZiAoYWNj
ZXNzV2lkdGggIT0gQjM6OldpZHRoOCkgewogICAgICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAg
ICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3Q2NCwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgbmV3UHRyLCBpc1g4NigpID8gQXJnOjpiaXRJbW0oc2l6
ZU9mQXRvbWljT3BNZW1vcnlBY2Nlc3Mob3ApIC0gMSkgOiBBcmc6OmJpdEltbTY0KHNpemVPZkF0
b21pY09wTWVtb3J5QWNjZXNzKG9wKSAtIDEpKTsKLSAgICAgICAgfSwgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAg
fSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQs
IEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtMjc3OCw3ICsyNzc4LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YXRvbWljV2Fp
dChFeHRBdG9taWNPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHIKICAgICAg
ICAgZW1pdENDYWxsKCZvcGVyYXRpb25NZW1vcnlBdG9taWNXYWl0NjQsIHJlc3VsdCwgaW5zdGFu
Y2VWYWx1ZSgpLCBwb2ludGVyLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBvZmZzZXQpLCB2YWx1
ZSwgdGltZW91dCk7CiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KEJy
YW5jaDMyLCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuKSwg
cmVzdWx0LCBBcmc6OmltbSgwKSk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhpc10gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTI3OTIsNyArMjc5Miw3IEBAIGF1
dG8gQWlySVJHZW5lcmF0b3I6OmF0b21pY05vdGlmeShFeHRBdG9taWNPcFR5cGUsIEV4cHJlc3Np
b25UeXBlIHBvaW50ZXIsIEV4cHJlCiAgICAgZW1pdENDYWxsKCZvcGVyYXRpb25NZW1vcnlBdG9t
aWNOb3RpZnksIHJlc3VsdCwgaW5zdGFuY2VWYWx1ZSgpLCBwb2ludGVyLCBhZGRDb25zdGFudChU
eXBlczo6STMyLCBvZmZzZXQpLCBjb3VudCk7CiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAg
IHJldHVybiBJbnN0KEJyYW5jaDMyLCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJs
ZXI6Okxlc3NUaGFuKSwgcmVzdWx0LCBBcmc6OmltbSgwKSk7Ci0gICAgfSwgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9
LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNl
cHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgfSk7CiAKQEAgLTMwMjks
MTMgKzMwMjksMTMgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdEVudHJ5VGllclVwQ2hlY2so
KQogICAgIHBhdGNoLT5lZmZlY3RzID0gZWZmZWN0czsKICAgICBwYXRjaC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCi0gICAgcGF0Y2gtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHRpZXJVcCA9IGppdC5icmFuY2hB
ZGQzMihDQ2FsbEhlbHBlcnM6OlBvc2l0aXZlT3JaZXJvLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihUaWVyVXBDb3VudDo6ZnVuY3Rpb25FbnRyeUluY3JlbWVudCgpKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHRpZXJVcFJlc3VtZSA9IGppdC5sYWJlbCgpOwogCi0gICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0
aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aChb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICB0aWVyVXAubGluaygm
aml0KTsKIAogICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgZXh0cmFQYWRkaW5nQnl0ZXMgPSAw
OwpAQCAtMzA5Myw3ICszMDkzLDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVy
VXBDaGVjayh1aW50MzJfdCBsb29wSW5kZXgsIGNvbnN0IFZlY3RvcjxUeXBlZFQKICAgICBUaWVy
VXBDb3VudDo6VHJpZ2dlclJlYXNvbiogZm9yY2VFbnRyeVRyaWdnZXIgPSAmKG1fdGllclVwLT5v
c3JFbnRyeVRyaWdnZXJzKCkubGFzdCgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDx1aW50OF90PihUaWVyVXBDb3VudDo6VHJpZ2dlclJlYXNvbjo6RG9udFRyaWdnZXIpLCAidGhl
IEpJVCBjb2RlIGFzc3VtZXMgbm9uLXplcm8gbWVhbnMgJ2VudGVyJyIpOwogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFRpZXJVcENvdW50OjpUcmlnZ2VyUmVhc29uKSA9PSAxLCAiYnJhbmNoVGVz
dDggYXNzdW1lcyB0aGlzIHNpemUiKTsKLSAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGZvcmNlT1NSRW50cnkgPSBqaXQuYnJhbmNoVGVzdDgoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhmb3JjZUVu
dHJ5VHJpZ2dlcikpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgdGllclVwID0gaml0LmJy
YW5jaEFkZDMyKENDYWxsSGVscGVyczo6UG9zaXRpdmVPclplcm8sIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKFRpZXJVcENvdW50Ojpsb29wSW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFyYW1zWzBdLmdwcigpKSk7CkBAIC0zNjEwLDcgKzM2MTAsNyBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlLAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRv
IGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEK
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6
Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CiAKLSAgICAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0
Y2hhYmxlTmVhckNhbGwoKTsKQEAgLTM2MzksNyArMzYzOSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIGNvdWxk
IGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nLgogICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1v
ZGU6OkJvdW5kc0NoZWNraW5nKSk7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0s
IHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRs
ZS5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwo
cGFyYW1zW3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocGFyYW1zLnZhbHVlKCktPnR5cGUoKSld
LmdwcigpLCBXYXNtRW50cnlQdHJUYWcpOwpAQCAtMzY1OSw3ICszNjU5LDcgQEAgYXV0byBBaXJJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZSwKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJl
Z2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAgICAgICBpZiAo
bV9tb2RlID09IE1lbW9yeU1vZGU6OlNpZ25hbGluZyB8fCBtX2luZm8ubWVtb3J5LmlzU2hhcmVk
KCkpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFy
Q2FsbCgpOwpAQCAtMzcwOSw3ICszNzA5LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmEKICAg
ICAvLyBDaGVjayB0aGUgaW5kZXggd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHZhbGlkLgogICAgIGVt
aXRDaGVjayhbJl0gewogICAgICAgICByZXR1cm4gSW5zdChCcmFuY2gzMiwgbnVsbHB0ciwgQXJn
OjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCBjYWxsZWVJbmRleCwgY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7CiAgICAgfSk7CiAKQEAgLTM3MzYsNyArMzczNiw3
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChTaWduYXR1cmU6OmludmFsaWRJbmRleCA9PSAwLCAiIik7
CiAgICAgICAgICAgICByZXR1cm4gSW5zdChCcmFuY2hUZXN0NjQsIG51bGxwdHIsIEFyZzo6cmVz
Q29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBjYWxsZWVT
aWduYXR1cmVJbmRleCk7Ci0gICAgICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIH0sIFs9LCB0aGlzXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CiAgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpOdWxsVGFibGVFbnRyeSk7CiAgICAgICAgIH0pOwogCkBAIC0zNzQ0LDcgKzM3NDQsNyBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0o
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKSwgZXhwZWN0ZWRTaWduYXR1cmVJ
bmRleCk7CiAgICAgICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICAgICAgcmV0dXJuIEluc3Qo
QnJhbmNoNjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwp
LCBjYWxsZWVTaWduYXR1cmVJbmRleCwgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCk7Ci0gICAgICAg
IH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0
VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpCYWRTaWduYXR1cmUpOwogICAgICAg
ICB9KTsKICAgICB9CkBAIC0zNzY5LDcgKzM3NjksNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cAogICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
KSwgdG1wRm9yTnVsbCk7CiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0
KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKSwg
Y2FsbGVlRnVuY3Rpb24sIHRtcEZvck51bGwpOwotICAgIH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgfSwgWz0sIHRo
aXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlw
ZTo6TnVsbFJlZmVyZW5jZSk7CiAgICAgfSk7CiAKQEAgLTM4NTIsNyArMzg1Miw3IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2Us
IEV4cHJlc3Npb25UeXBlIGNhCiAKICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRS
ZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOwog
Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICBleGNlcHRpb25I
YW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOwogICAgICAgICBqaXQuY2FsbChwYXJh
bXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChwYXJhbXMudmFsdWUoKS0+dHlwZSgpKV0uZ3By
KCksIFdhc21FbnRyeVB0clRhZyk7CkBAIC0zOTY3LDcgKzM5NjcsNyBAQCB2b2lkIEFpcklSR2Vu
ZXJhdG9yOjplbWl0Q2hlY2tzRm9yTW9kT3JEaXYoYm9vbCBpc1NpZ25lZERpdiwgRXhwcmVzc2lv
blR5cGUgbGVmdAogCiAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgIHJldHVybiBJbnN0KHNp
emVvZihJbnRUeXBlKSA9PSA0ID8gQnJhbmNoVGVzdDMyIDogQnJhbmNoVGVzdDY0LCBudWxscHRy
LCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCByaWdodCwgcmlnaHQpOwotICAg
IH0sIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhj
ZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6RGl2aXNpb25CeVplcm8pOwogICAgIH0pOwogCkBA
IC0zOTkwLDcgKzM5OTAsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjplbWl0Q2hlY2tzRm9yTW9k
T3JEaXYoYm9vbCBpc1NpZ25lZERpdiwgRXhwcmVzc2lvblR5cGUgbGVmdAogICAgICAgICBlbWl0
Q2hlY2soWyZdIHsKICAgICAgICAgICAgIHJldHVybiBJbnN0KEJyYW5jaFRlc3QzMiwgbnVsbHB0
ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgbWluVG1wLCBuZWdPbmUp
OwogICAgICAgICB9LAotICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBbPSwgdGhpc10gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAg
ICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6SW50ZWdl
ck92ZXJmbG93KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNDM1MSw3ICs0MzUxLDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGNjQ+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDM4MCw3ICs0MzgwLDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGMzI+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDQwOSw3ICs0NDA5LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1VGNjQ+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDQzNyw3ICs0NDM3LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1VGMzI+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDQ2NSw3ICs0NDY1LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGNjQ+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDQ5NCw3ICs0NDk0LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGNjQ+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDU0MSw3ICs0NTQxLDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGMzI+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApAQCAtNDU2OSw3ICs0NTY5LDcgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1VGMzI+KEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblQKIAogICAgIGVtaXRDaGVjayhbJl0gewogICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2hUZXN0MzIsIG51bGxwdHIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybyksIHRlbXAyLCB0ZW1wMik7Ci0gICAgfSwgWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB9LCBbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGFlODFlYWQ3NWY0OTYxMGI3NTFj
YzkzMDgzYzNkOGEyM2EwYTYzM2UuLmZlYzM3NTU2MWY2Yzg3N2NlNjljY2RjZWE4YzU3YzVhMGEx
OWQ2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAg
IH0KIAogICAgIGlmIChpbmZvLm1lbW9yeSkgewotICAgICAgICBtX3Byb2Muc2V0V2FzbUJvdW5k
c0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIp
IHsKKyAgICAgICAgbV9wcm9jLnNldFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvcihbPSwgdGhpc10g
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSKSB7CiAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAg
ICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3VuZHND
aGVja2luZzoKQEAgLTcxNCw3ICs3MTQsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAg
ICAgICBzdGFja092ZXJmbG93Q2hlY2stPmFwcGVuZFNvbWVSZWdpc3RlcihmcmFtZVBvaW50ZXIo
KSk7CiAgICAgICAgIHN0YWNrT3ZlcmZsb3dDaGVjay0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBzdGFja092ZXJmbG93Q2hlY2stPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDI7Ci0gICAgICAgIHN0YWNrT3ZlcmZsb3dDaGVjay0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBzdGFja092ZXJmbG93Q2hlY2stPnNldEdlbmVy
YXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIGNvbnN0IENoZWNrZWQ8aW50MzJf
dD4gd2FzbUZyYW1lU2l6ZSA9IHBhcmFtcy5wcm9jKCkuZnJhbWVTaXplKCk7CiAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBtaW5pbXVtUGFyZW50Q2hlY2tTaXplID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgMTAyNCk7CiAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBleHRyYUZyYW1lU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIHN0ZDo6bWF4PHVpbnQzMl90PigKQEAgLTk0OSw3ICs5NDksNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4
cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZQogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2lu
KCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEVxdWFsLCBvcmlnaW4oKSwgcmVzdWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlw
ZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTk2OCw3
ICs5NjgsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KHVuc2lnbmVkIHRhYmxl
SW5kZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZQogICAgICAgICBDaGVja1ZhbHVlKiBj
aGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVj
aywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgc2hvdWxkVGhyb3csIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAg
IGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhj
ZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0K
QEAgLTEwMDEsNyArMTAwMSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVJbml0KHVu
c2lnbmVkIGVsZW1lbnRJbmRleCwgdW5zaWduZWQgdGFibGVJbmRleCwgRXhwCiAgICAgICAgIENo
ZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPiht
X3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCByZXN1bHRWYWx1ZSwgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7
CiAKLSAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICBjaGVjay0+c2V0
R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hl
Y2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RhYmxlQWNjZXNzKTsKICAgICAgICAg
fSk7CiAgICAgfQpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRU
YWJsZUZpbGwodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgb2Zmc2V0LCBFeHAK
ICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHJlc3VsdFZh
bHVlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgMCkpKTsKIAotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAg
IGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRF
eGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVGFibGVBY2Nlc3Mp
OwogICAgICAgICB9KTsKICAgICB9CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZFRhYmxlQ29weSh1bnNpZ25lZCBkc3RUYWJsZUluZGV4LCB1bnNpZ25lZCBzcmNU
YWJsZUluZGV4LAogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4o
KSwgcmVzdWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPiht
X3Byb2MsIG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
dGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNU
YWJsZUFjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTExNDYsNyArMTE0Niw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2Us
IFZhbHVlKiBjYWxsZWVDb2RlLCBjCiAKICAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jl
c3VsdFR5cGUoJnNpZ25hdHVyZSk7CiAgICAgVmFsdWUqIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxs
UGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKLSAg
ICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU+KT4oWz1dIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJv
eDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgeworICAgICAgICBz
Y29wZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4pPihbPSwgdGhpc10gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhhbmRsZSkgLT4gdm9pZCB7CiAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICBw
YXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2Ug
bWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBW
YWx1ZSogY2FsbGVlQ29kZSwgYwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcpKTsKIAogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0
aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRl
KGppdCwgcGFyYW1zLCB0aGlzKTsKICAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFy
YW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5UeXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRh
Zyk7CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE1lbW9yeUZp
bGwoRXhwcmVzc2lvblR5cGUgZHN0QWRkcmVzcywgRXhwcmVzc2lvblR5cGUgdGFyZwogICAgICAg
ICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVzdWx0VmFsdWUsIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAw
KSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2st
PnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlv
bkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAg
ICAgICB9KTsKICAgICB9CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZE1lbW9yeUluaXQodW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCwgRXhwcmVzc2lvblR5cGUg
ZHN0QQogICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmVz
dWx0VmFsdWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCAwKSkpOwogCi0gICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAg
ICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+
ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUYWJsZUFj
Y2Vzcyk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTEyNjgsNyArMTI2OCw3IEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkTWVtb3J5Q29weShFeHByZXNzaW9uVHlwZSBkc3RBZGRyZXNzLCBFeHBy
ZXNzaW9uVHlwZSBzcmNBCiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9y
aWdpbigpLCByZXN1bHRWYWx1ZSwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CiAKLSAgICAgICAgY2hlY2stPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgeworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAg
ICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJv
dW5kc1RhYmxlQWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTczMCw3ICsxNzMwLDcg
QEAgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXRGb3JBdG9taWNP
cHMoRXh0QXRvbWljT3BUeXBlIG9wLCBWYWwKICAgICBpZiAoYWNjZXNzV2lkdGgob3ApICE9IEIz
OjpXaWR0aDgpIHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIG9yaWdp
bigpLCBwb2ludGVyLCBjb25zdGFudChwb2ludGVyVHlwZSgpLCBzaXplT2ZBdG9taWNPcE1lbW9y
eUFjY2VzcyhvcCkgLSAxKSkpOwotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7Cisg
ICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMt
PmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5
QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphdG9taWNXYWl0KEV4dEF0b21pY09wVHlwZSBvcCwgRXhwcmVzc2lvblR5
cGUgcG9pbnRlclZhciwgRXgKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhh
biwgb3JpZ2luKCksIHJlc3VsdFZhbHVlLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsKIAotICAgICAgICBjaGVjay0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAg
ICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91
dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjA3NSw3ICsy
MDc1LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphdG9taWNOb3RpZnkoRXh0QXRvbWljT3BUeXBl
LCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXMKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hl
Y2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBMZXNzVGhhbiwgb3JpZ2luKCksIHJlc3VsdFZhbHVlLCBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgMCkpKTsKIAotICAgICAg
ICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3Io
Wz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4
Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAg
fQpAQCAtMjI4MCwxMiArMjI4MCwxMiBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRFbnRyeVRp
ZXJVcENoZWNrKCkKICAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwogCiAgICAgcGF0Y2gtPmFwcGVuZChjb3VudERvd25Mb2NhdGlvbiwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgdGllclVwID0gaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6UG9zaXRp
dmVPclplcm8sIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFRpZXJVcENvdW50OjpmdW5jdGlv
bkVudHJ5SW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigp
KSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgdGllclVwUmVzdW1lID0gaml0LmxhYmVs
KCk7CiAKLSAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKICAgICAgICAgICAgIHRpZXJVcC5saW5rKCZqaXQpOwogCiAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBleHRyYVBhZGRpbmdCeXRlcyA9IDA7CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCB2
b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2sodWludDMyX3QgbG9vcEluZGV4
LCBjb25zdCBTdGFjayYgZW5jbG9zaQogICAgIFRpZXJVcENvdW50OjpUcmlnZ2VyUmVhc29uKiBm
b3JjZUVudHJ5VHJpZ2dlciA9ICYobV90aWVyVXAtPm9zckVudHJ5VHJpZ2dlcnMoKS5sYXN0KCkp
OwogICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHVpbnQ4X3Q+KFRpZXJVcENvdW50OjpU
cmlnZ2VyUmVhc29uOjpEb250VHJpZ2dlciksICJ0aGUgSklUIGNvZGUgYXNzdW1lcyBub24temVy
byBtZWFucyAnZW50ZXInIik7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVGllclVwQ291bnQ6
OlRyaWdnZXJSZWFzb24pID09IDEsICJicmFuY2hUZXN0OCBhc3N1bWVzIHRoaXMgc2l6ZSIpOwot
ICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaC0+c2V0R2VuZXJhdG9y
KFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGZvcmNlT1NSRW50
cnkgPSBqaXQuYnJhbmNoVGVzdDgoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhmb3JjZUVudHJ5VHJpZ2dlcikpOwogICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgdGllclVwID0gaml0LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6UG9zaXRpdmVP
clplcm8sIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFRpZXJVcENvdW50Ojpsb29wSW5jcmVt
ZW50KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpKSk7CkBAIC0yODc5
LDcgKzI4NzksNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rp
b25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwg
aXNXYXNtQ2FsbCwgRnJlcXVlbnRlZEJsb2NrKGlzV2FzbUJsb2NrKSwgRnJlcXVlbnRlZEJsb2Nr
KGlzRW1iZWRkZXJCbG9jaykpOwogCiAgICAgICAgIFZhbHVlKiB3YXNtQ2FsbFJlc3VsdCA9IGNy
ZWF0ZUNhbGxQYXRjaHBvaW50KGlzV2FzbUJsb2NrLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdz
LAotICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz1dIChQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgewor
ICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdIChQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQg
ewogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlhbCBw
aW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNlLgpA
QCAtMjkwNiw3ICsyOTA2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAgICAgICAgICAg
TG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8
aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9mV2FzbVRvRW1iZWRkZXJTdHViKGZ1bmN0aW9uSW5k
ZXgpKSk7CiAKICAgICAgICAgVmFsdWUqIGVtYmVkZGVyQ2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQ
YXRjaHBvaW50KGlzRW1iZWRkZXJCbG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKLSAg
ICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAg
ICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGp1bXBEZXN0aW5hdGlvbiwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3Rlcik7CkBAIC0yOTM3LDcgKzI5MzcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUsCiAgICAgfSBlbHNlIHsKIAogICAgICAgICBWYWx1ZSogcGF0Y2ggPSBjcmVhdGVDYWxs
UGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKLSAg
ICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAg
ICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAK
QEAgLTI5ODksNyArMjk4OSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0CiAgICAgICAgIENo
ZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPiht
X3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgQWJvdmVFcXVhbCwgb3JpZ2luKCksIGNhbGxlZUluZGV4LCBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKSk7CiAKLSAgICAgICAgY2hlY2stPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAg
ICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc0NhbGxJbmRpcmVjdCk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTMwMTMsNyArMzAx
Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxl
SW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0CiAgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZVNpZ25hdHVyZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlk
SW5kZXgpKSk7CiAKLSAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICB0
aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRy
eSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMzAyNCw3ICszMDI0LDcgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4o
KSwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2ln
bmF0dXJlSW5kZXgpKTsKIAotICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6OkJhZFNpZ25h
dHVyZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMzA2NCw3ICszMDY0LDcgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGUKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNr
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgRXF1YWwsIG9yaWdpbigpLCBjYWxsZWUsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
KSkpOwotICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25D
aGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxSZWZlcmVuY2UpOwogICAgICAgICB9KTsKICAg
ICB9CkBAIC0zMjI3LDcgKzMyMjcsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja3NG
b3JNb2RPckRpdihCMzo6T3Bjb2RlIG9wZXJhdGlvbiwgVmFsdWUqIGxlZnQsIFZhbAogICAgICAg
ICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgcmlnaHQsIGNvbnN0YW50
KHR5cGUsIDApKSk7CiAKLSAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAg
ICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICB0aGlzLT5lbWl0
RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpEaXZpc2lvbkJ5WmVybyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTMyNDAsNyArMzI0MCw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZW1pdENoZWNrc0Zvck1vZE9yRGl2KEIzOjpPcGNvZGUgb3BlcmF0aW9uLCBWYWx1ZSogbGVmdCwg
VmFsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBFcXVhbCwgb3JpZ2luKCksIGxlZnQsIGNvbnN0YW50KHR5cGUsIG1pbikpLAogICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWws
IG9yaWdpbigpLCByaWdodCwgY29uc3RhbnQodHlwZSwgLTEpKSkpOwogCi0gICAgICAgIGNoZWNr
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhp
c10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9u
VHlwZTo6SW50ZWdlck92ZXJmbG93KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzUxNyw3ICsz
NTE3LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4o
RXhwcmVzc2lvblR5cGUgYXJnVmFyLCBFeHByZXNzaW8KICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGFyZywgbWlu
KSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7
CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKLSAgICB0cmFwLT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRo
aXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1
bmMpOwogICAgIH0pOwogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEludDMyLCBvcmlnaW4o
KSk7CkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlw
ZTo6STMyVHJ1bmNTRjMyPihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3NpbwogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJFcXVhbCwg
b3JpZ2luKCksIGFyZywgbWluKSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNv
bnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91dE9mQm91
bmRzKTsKLSAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNldEdlbmVyYXRvcihb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5
cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihtX3By
b2MsIEludDMyLCBvcmlnaW4oKSk7CkBAIC0zNTY2LDcgKzM1NjYsNyBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNVRjY0PihFeHByZXNzaW9uVHlwZSBhcmdWYXIs
IEV4cHJlc3NpbwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgYXJnLCBtaW4pKTsKICAgICBvdXRPZkJvdW5kcyA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigp
LCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDApKTsKICAgICBDaGVja1ZhbHVlKiB0cmFw
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwotICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgdHJh
cC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNr
KGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNUcnVuYyk7CiAgICAgfSk7CiAgICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KG1fcHJvYywgSW50MzIsIG9yaWdpbigpKTsKQEAgLTM1OTAsNyArMzU5MCw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1VGMzI+KEV4cHJl
c3Npb25UeXBlIGFyZ1ZhciwgRXhwcmVzc2lvCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgR3JlYXRlclRoYW4sIG9yaWdpbigpLCBhcmcsIG1pbikpOwog
ICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCBjb25zdGFudChJbnQzMiwgMCkpOwogICAg
IENoZWNrVmFsdWUqIHRyYXAgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7Ci0gICAgdHJhcC0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICB0aGlzLT5l
bWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc1RydW5jKTsK
ICAgICB9KTsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQzMiwgb3JpZ2luKCkpOwpA
QCAtMzYxNCw3ICszNjE0LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2
NFRydW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnVmFyLCBFeHByZXNzaW8KICAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyRXF1YWwsIG9yaWdp
bigpLCBhcmcsIG1pbikpOwogICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCBjb25zdGFu
dChJbnQzMiwgMCkpOwogICAgIENoZWNrVmFsdWUqIHRyYXAgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7
Ci0gICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz0sIHRo
aXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewogICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc1RydW5jKTsKICAgICB9KTsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJ
bnQ2NCwgb3JpZ2luKCkpOwpAQCAtMzYzOCw3ICszNjM4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJnVmFyLCBFeHBy
ZXNzaW8KICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBH
cmVhdGVyVGhhbiwgb3JpZ2luKCksIGFyZywgbWluKSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0
T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2lu
KCksIG91dE9mQm91bmRzKTsKLSAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNl
dEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQs
IEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCkBAIC0zNjgyLDcg
KzM2ODIsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjMy
PihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3NpbwogICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGFyZywg
bWluKSk7CiAgICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAw
KSk7CiAgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKLSAgICB0cmFw
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeworICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPSwgdGhpc10gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAg
IHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRz
VHJ1bmMpOwogICAgIH0pOwogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEludDY0LCBvcmln
aW4oKSk7CkBAIC0zNzA2LDcgKzM3MDYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STY0VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmdWYXIsIEV4cHJlc3NpbwogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJUaGFu
LCBvcmlnaW4oKSwgYXJnLCBtaW4pKTsKICAgICBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywg
Y29uc3RhbnQoSW50MzIsIDApKTsKICAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwgb3V0T2ZC
b3VuZHMpOwotICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgdHJhcC0+c2V0R2VuZXJhdG9y
KFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNUcnVuYyk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAKaW5kZXggYTQ5OGVmNzgwNzMxODI0ZGNmMmVmODc5ODViYjA5YjI5MzIw
Y2VhZS4uYzhlYjcyYzc0ODdkNmVhNGJlZDM5ZjM0YjE0NWYzOGQwMTQ3ZDMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTQyODIsNyArNDI4Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbV90cnlSZWFkVW5pY29kZUNoYXJhY3RlckNh
bGxzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9qaXQuYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBtX2ppdC5hZGRMaW5rVGFzayhbPSwg
dGhpc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbDxOb1B0clRhZz4gdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJFbnRy
eSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gY2FsbCA6IG1fdHJ5UmVhZFVuaWNvZGVD
aGFyYWN0ZXJDYWxscykKQEAgLTQ0MDEsNyArNDQwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghbV90cnlSZWFkVW5pY29kZUNoYXJhY3RlckNhbGxzLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgbV9qaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CisgICAgICAgICAgICBtX2ppdC5hZGRMaW5rVGFzayhbPSwgdGhpc10gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxOb1B0
clRhZz4gdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Y8Tm9QdHJUYWc+KG1fdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJFbnRyeSk7CiAKICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8gY2FsbCA6IG1fdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJDYWxscykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCmluZGV4IGY0ZWE3OGQxM2UxY2RkYjYxOWI4MjI4
NjhkMzNjNzI3YzlmMmY5OGIuLmU5NWQ5OTEyNjNmNmE5ZmQwMzM1NzUyNmYyYTNkNTg2ZTE3OThj
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgQXV0b21hdGljVGhyZWFkOjpzdGFydChjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgCiAg
ICAgVGhyZWFkOjpjcmVhdGUoCiAgICAgICAgIG5hbWUoKSwKLSAgICAgICAgWz1dICgpIHsKKyAg
ICAgICAgWz0sIHRoaXNdICgpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogUnVubmluZyBhdXRvbWF0aWMgdGhy
ZWFkIVxuIik7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmgKaW5kZXggZGM3MTg3M2JmOWE0MGFhN2QyODk3OGJiMTY1Y2FjNGI5OTkwNDdmNC4uM2YwY2Nj
ZjQzNTJhNjJmN2NmZmJmOWNmY2VkMDBiMTZkN2FiNmY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmgKQEAgLTc0LDEzICs3NCwxMSBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHMgewogICAgICAgICBDU1NEZXZpY2VBZGFwdGF0aW9uCiAgICAgfSB0eXBlOwogCi0gICAg
ZW51bSB7Ci0gICAgICAgIFZhbHVlQXV0byA9IC0xLAotICAgICAgICBWYWx1ZURldmljZVdpZHRo
ID0gLTIsCi0gICAgICAgIFZhbHVlRGV2aWNlSGVpZ2h0ID0gLTMsCi0gICAgICAgIFZhbHVlUG9y
dHJhaXQgPSAtNCwKLSAgICAgICAgVmFsdWVMYW5kc2NhcGUgPSAtNQotICAgIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgVmFsdWVBdXRvID0gLTE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgVmFsdWVEZXZpY2VXaWR0aCA9IC0yOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IFZhbHVl
RGV2aWNlSGVpZ2h0ID0gLTM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgVmFsdWVQb3J0cmFp
dCA9IC00OworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IFZhbHVlTGFuZHNjYXBlID0gLTU7CiAK
ICAgICBleHBsaWNpdCBWaWV3cG9ydEFyZ3VtZW50cyhUeXBlIHR5cGUgPSBJbXBsaWNpdCkKICAg
ICAgICAgOiB0eXBlKHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAppbmRleCA0ODdjNzA1OGVi
OTc2MWE0ODJhYmY5ZWIzNTY5NzUzNzhjOTY4NzZjLi5jOTYxMzJmYjM2ZWQ0MDk5YzUwZTAxOWE0
MzhmZDNmYmE5NDMyZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2hlZWxFdmVudCBmaW5hbCA6IHB1YmxpYyBN
b3VzZUV2ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdoZWVsRXZlbnQpOwogcHVi
bGljOgotICAgIGVudW0geyBUaWNrTXVsdGlwbGllciA9IDEyMCB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IFRpY2tNdWx0aXBsaWVyID0gMTIwOwogCiAgICAgZW51bSB7CiAgICAgICAgIERP
TV9ERUxUQV9QSVhFTCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmgKaW5kZXggMmU4YmRlZTdhYWExOWRmODA2Yzc4NTgwNGMwMjA3NGVjYTk5ZTZj
MS4uNTRjMjFhNDEzOTE3ZWE3MWJhODE5NGE5NDYzZDQyNTAyZjY0YWQxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApAQCAtMTI5LDcgKzEyOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0lkZW50aWZpZXIgeyBmYWxzZSB9OwogICAgIH07
CiAKLSAgICBlbnVtIHsgSXRlcmF0aW9uQ291bnRJbmZpbml0ZSA9IC0xIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgSXRlcmF0aW9uQ291bnRJbmZpbml0ZSA9IC0xOwogICAgIGRvdWJs
ZSBpdGVyYXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0aW9uQ291bnQ7IH0KICAg
ICBjb25zdCBOYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgU3R5bGU6
OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVTY29wZU9yZGluYWwoKSBjb25zdCB7IHJldHVybiBtX25h
bWVTdHlsZVNjb3BlT3JkaW5hbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwNTQxNmE1MDAxNWI2ZmMxY2Q1NTAz
MTA5MjEyZDM2NWViZjc5ZGU5Li5mOTA1YzlkYWQyOTU0MGQzZWFmNDJhOTA0OGRkYmMzODE2NjMx
NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtNjM4LDcgKzYzOCw3IEBAIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKiBpbWFnZSkgY29uc3QK
ICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBlbnVtIHsgTWF4RGltZW5zdGlvbkZvckRpcmVjdENvbXBvc2l0aW5n
ID0gMjAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgTWF4RGltZW5zdGlvbkZvckRp
cmVjdENvbXBvc2l0aW5nID0gMjAwMDsKICAgICBpZiAoaW1hZ2UtPndpZHRoKCkgPiBNYXhEaW1l
bnN0aW9uRm9yRGlyZWN0Q29tcG9zaXRpbmcgfHwgaW1hZ2UtPmhlaWdodCgpID4gTWF4RGltZW5z
dGlvbkZvckRpcmVjdENvbXBvc2l0aW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgKaW5kZXggZjU4ZjUyN2NjZDdmNzM1ZmZjYjcwNTM1NGIzYWQ2ZWY1NDU5NmJkNi4uZmRlMjFi
ZmEzYzdkMDI4MjFkOWZjNzAzMTRkN2ZlZWJlZWQwZWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTEwNzMs
MTIgKzEwNzMsOSBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IENvbG9yU2NoZW1lQml0cyA9IDI7CiAj
ZW5kaWYKIAogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlkQXV0b0Zsb3dCaXRzID0gNDsKLWVudW0g
SW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0geworZW51bSBJbnRlcm5hbEdyaWRBdXRvRmxv
dyB7CiAgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9IDEgPDwgMCwKICAgICBJ
bnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UgID0gMSA8PCAxLAotfTsKLQotZW51bSBJbnRl
cm5hbEdyaWRBdXRvRmxvd0RpcmVjdGlvbiB7CiAgICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlv
blJvdyAgICA9IDEgPDwgMiwKICAgICBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uID0g
MSA8PCAzCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3IuY3BwCmluZGV4IDI0NmIyM2FjMjA5MTNmOTk2M2ZiMTI4ZGY3Y2Q1NTZlNTlj
NjQ5N2UuLjYzMGUzZjgzY2E5YjQ0MGMzZmU2OWIwMDRiM2YxZjdkZDUxYTIyODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAK
QEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogCiAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogCi0g
ICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9XSB7CisgICAgd2hlbkZyb250
ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9LCB0aGlzXSB7CiAgICAgICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd0NvbnNvbGUoKSwg
MCk7CiAgICAgfSk7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNo
b3dSZXNvdXJjZXMoKQogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2hvdygpOwogCi0gICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9
XSB7CisgICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9LCB0aGlzXSB7CiAg
ICAgICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6U2hvd1Jlc291cmNlcygpLCAwKTsKICAgICB9KTsKIH0KQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlkZW50aQogCiAgICAgU3RyaW5nIGluc3BlY3RvckZyYW1lSWRlbnRp
ZmllciA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmVuc3VyZVBh
Z2VBZ2VudCgpLmZyYW1lSWQoZnJhbWUtPmNvcmVGcmFtZSgpKTsKIAotICAgIHdoZW5Gcm9udGVu
ZENvbm5lY3Rpb25Fc3RhYmxpc2hlZChbPV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25F
c3RhYmxpc2hlZChbPSwgdGhpc10gewogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShpbnNw
ZWN0b3JGcmFtZUlkZW50aWZpZXIpLCAwKTsKICAgICB9KTsKIH0KQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIAogICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKIAotICAgIHdoZW5Gcm9u
dGVuZENvbm5lY3Rpb25Fc3RhYmxpc2hlZChbPV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rp
b25Fc3RhYmxpc2hlZChbPSwgdGhpc10gewogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCAwKTsK
ICAgICB9KTsKIH0KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBh
Z2VQcm9maWxpbmcoKQogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2hvdygpOwogCi0gICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9
XSB7CisgICAgd2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKFs9LCB0aGlzXSB7CiAg
ICAgICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgMCk7CiAgICAgfSk7CiB9CkBAIC0yMzcsNyArMjM3LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0RWxlbWVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFt
X3BhZ2UtPmNvcmVQYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdoZW5Gcm9udGVuZENv
bm5lY3Rpb25Fc3RhYmxpc2hlZChbPV0geworICAgIHdoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3Rh
Ymxpc2hlZChbPSwgdGhpc10gewogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCAwKTsKICAg
ICB9KTsKIH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEVsZW1l
bnRTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlLT5jb3JlUGFnZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICB3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz1dIHsKKyAgICB3
aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoWz0sIHRoaXNdIHsKICAgICAgICAgbV9m
cm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdG9wRWxl
bWVudFNlbGVjdGlvbigpLCAwKTsKICAgICB9KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>