<?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>217912</bug_id>
          
          <creation_ts>2020-10-19 11:03:25 -0700</creation_ts>
          <short_desc>Replace execStateFrom*() functions with globalObject() overloads</short_desc>
          <delta_ts>2021-02-24 10:59:53 -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>Web Audio</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>222228</dependson>
          <blocked>217724</blocked>
    
    <blocked>217058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699315</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 11:03:25 -0700</bug_when>
    <thetext>Introduce execStateFromWorkerOrWorletGlobalScope() to replace existing execStateFromWorkerGlobalScope() &amp; execStateFromWorkletGlobalScope(). This is a first step to promote code sharing. Ideally, code would not have to differentiate workers from worklets as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699316</commentid>
    <comment_count>1</comment_count>
      <attachid>411765</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 11:05:45 -0700</bug_when>
    <thetext>Created attachment 411765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699319</commentid>
    <comment_count>2</comment_count>
      <attachid>411765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-19 11:10:25 -0700</bug_when>
    <thetext>Comment on attachment 411765
Patch

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

Looks great, r=me assuming all tests pass.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Introduce execStateFromWorkerOrWorletGlobalScope() to replace existing execStateFromWorkerGlobalScope()
&gt; +        and execStateFromWorkletGlobalScope(). This is a first step to promote code sharing. Ideally, code
&gt; +        would not have to differentiate workers from worklets as much as possible.

I don’t think we call this &quot;exec state&quot; any more, we call it &quot;JavaScript global object&quot;. Is there some way to take advantage of that? Maybe all of these functions should get new names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699321</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 11:11:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 411765 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411765&amp;action=review
&gt; 
&gt; Looks great, r=me assuming all tests pass.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Introduce execStateFromWorkerOrWorletGlobalScope() to replace existing execStateFromWorkerGlobalScope()
&gt; &gt; +        and execStateFromWorkletGlobalScope(). This is a first step to promote code sharing. Ideally, code
&gt; &gt; +        would not have to differentiate workers from worklets as much as possible.
&gt; 
&gt; I don’t think we call this &quot;exec state&quot; any more, we call it &quot;JavaScript
&gt; global object&quot;. Is there some way to take advantage of that? Maybe all of
&gt; these functions should get new names.

How about jsGlobalObjectFrom*()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699322</commentid>
    <comment_count>4</comment_count>
      <attachid>411765</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-19 11:12:37 -0700</bug_when>
    <thetext>Comment on attachment 411765
Patch

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

&gt; Source/WebCore/inspector/agents/worker/WorkerAuditAgent.cpp:58
&gt; +    JSC::JSGlobalObject* scriptState = execStateFromWorkerOrWorkletGlobalScope(m_workerGlobalScope);

If you are going to rename this, can you rename it to globalObjectFromWorkerOrWorkletGlobalScope(). We should try to remove the term ExecState from the source over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699324</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 11:13:18 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 411765 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411765&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/agents/worker/WorkerAuditAgent.cpp:58
&gt; &gt; +    JSC::JSGlobalObject* scriptState = execStateFromWorkerOrWorkletGlobalScope(m_workerGlobalScope);
&gt; 
&gt; If you are going to rename this, can you rename it to
&gt; globalObjectFromWorkerOrWorkletGlobalScope(). We should try to remove the
&gt; term ExecState from the source over time.

Ok, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699360</commentid>
    <comment_count>6</comment_count>
      <attachid>411775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 12:15:50 -0700</bug_when>
    <thetext>Created attachment 411775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699367</commentid>
    <comment_count>7</comment_count>
      <attachid>411775</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-19 12:30:32 -0700</bug_when>
    <thetext>Comment on attachment 411775
Patch

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

&gt; Source/WebCore/bindings/js/ScriptState.h:57
&gt; +JSC::JSGlobalObject* globalObjectFromNode(DOMWrapperWorld&amp;, Node*);
&gt; +WEBCORE_EXPORT JSC::JSGlobalObject* globalObjectFromPage(DOMWrapperWorld&amp;, Page*);
&gt; +JSC::JSGlobalObject* globalObjectFromWorkerOrWorkletGlobalScope(WorkerOrWorkletGlobalScope&amp;);

Love this.

I might even suggest going further and go overload-crazy and just name the functions globalObject. After all, the functions get the global object &quot;from&quot; the arguments, and each of them does the right thing given the argument types and is not ambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699371</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 12:32:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 411775 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411775&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptState.h:57
&gt; &gt; +JSC::JSGlobalObject* globalObjectFromNode(DOMWrapperWorld&amp;, Node*);
&gt; &gt; +WEBCORE_EXPORT JSC::JSGlobalObject* globalObjectFromPage(DOMWrapperWorld&amp;, Page*);
&gt; &gt; +JSC::JSGlobalObject* globalObjectFromWorkerOrWorkletGlobalScope(WorkerOrWorkletGlobalScope&amp;);
&gt; 
&gt; Love this.
&gt; 
&gt; I might even suggest going further and go overload-crazy and just name the
&gt; functions globalObject. After all, the functions get the global object
&gt; &quot;from&quot; the arguments, and each of them does the right thing given the
&gt; argument types and is not ambiguous.

Sounds great. Any preference on the name then? I like globalObject() but I think it will conflict with some local variable names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699373</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-19 12:38:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Sounds great. Any preference on the name then? I like globalObject() but I
&gt; think it will conflict with some local variable names.

Well, I usually don’t mind so much if something conflicts with local variable names, but if we want to side-step that it could be one of these:

    scriptGlobalObject
    currentGlobalObject
    owningGlobalObject
    lookUpGlobalObject
    findGlobalObject

I think the question is what we would be likely to say if we were talking about this. Typically when I need a name like this, I start talking to someone who explains what it is, and then I try to pick out words they use in the conversation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699398</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-19 13:11:00 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Darin Adler from comment #7)
&gt; &gt; Comment on attachment 411775 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=411775&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptState.h:57
&gt; &gt; &gt; +JSC::JSGlobalObject* globalObjectFromNode(DOMWrapperWorld&amp;, Node*);
&gt; &gt; &gt; +WEBCORE_EXPORT JSC::JSGlobalObject* globalObjectFromPage(DOMWrapperWorld&amp;, Page*);
&gt; &gt; &gt; +JSC::JSGlobalObject* globalObjectFromWorkerOrWorkletGlobalScope(WorkerOrWorkletGlobalScope&amp;);
&gt; &gt; 
&gt; &gt; Love this.
&gt; &gt; 
&gt; &gt; I might even suggest going further and go overload-crazy and just name the
&gt; &gt; functions globalObject. After all, the functions get the global object
&gt; &gt; &quot;from&quot; the arguments, and each of them does the right thing given the
&gt; &gt; argument types and is not ambiguous.
&gt; 
&gt; Sounds great. Any preference on the name then? I like globalObject() but I
&gt; think it will conflict with some local variable names.

I would try to make it just globalObject(), and change the locals if there is a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699414</commentid>
    <comment_count>11</comment_count>
      <attachid>411791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 13:46:23 -0700</bug_when>
    <thetext>Created attachment 411791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699416</commentid>
    <comment_count>12</comment_count>
      <attachid>411792</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 13:54:49 -0700</bug_when>
    <thetext>Created attachment 411792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699419</commentid>
    <comment_count>13</comment_count>
      <attachid>411793</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 13:58:42 -0700</bug_when>
    <thetext>Created attachment 411793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699423</commentid>
    <comment_count>14</comment_count>
      <attachid>411794</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 14:08:39 -0700</bug_when>
    <thetext>Created attachment 411794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699523</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-19 16:51:03 -0700</bug_when>
    <thetext>Committed r268700: &lt;https://trac.webkit.org/changeset/268700&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411794.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699524</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-19 16:52:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70462305&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411765</attachid>
            <date>2020-10-19 11:05:45 -0700</date>
            <delta_ts>2020-10-19 12:15:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019110544.patch</filename>
            <type>text/plain</type>
            <size>12461</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UyZDFlODEwMzIyZDFl
MWI4NWZiMTZkNWQwZjQ1ZGY4NmI5MjZjMS4uZDg3NTMyOWFiN2E5ODYyNzg1MjY5OWUyN2EwY2Ex
YWJhM2FlZTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGV4ZWNTdGF0
ZUZyb21Xb3JrZXJPcldvcmxldEdsb2JhbFNjb3BlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzkxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBleGVjU3RhdGVGcm9tV29ya2VyT3JX
b3JsZXRHbG9iYWxTY29wZSgpIHRvIHJlcGxhY2UgZXhpc3RpbmcgZXhlY1N0YXRlRnJvbVdvcmtl
ckdsb2JhbFNjb3BlKCkKKyAgICAgICAgYW5kIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2Nv
cGUoKS4gVGhpcyBpcyBhIGZpcnN0IHN0ZXAgdG8gcHJvbW90ZSBjb2RlIHNoYXJpbmcuIElkZWFs
bHksIGNvZGUKKyAgICAgICAgd291bGQgbm90IGhhdmUgdG8gZGlmZmVyZW50aWF0ZSB3b3JrZXJz
IGZyb20gd29ya2xldHMgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxP
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIpOgorICAgICAg
ICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMjAtMTAtMTkgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSByZW1haW5p
bmcgV2ViIEFuaW1hdGlvbnMgcnVudGltZS1lbmFibGVkIGZlYXR1cmVzIHRvIHNldHRpbmdzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5k
ZXggYWUwOTdlZWI4YzAwYTg5ZmI3OTc0ZDIxNjAyYmVkN2FiMmVjZjRlYS4uODY3NGYyZGZiODE2
ZDZlYTRjYjAzNzVmYzZjYjJhNTQ5M2IzZTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjI0LDEwICsyMjQsOCBAQCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChpbmhlcml0czxK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29u
c3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpbmhlcml0czxKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2U+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoaW5oZXJp
dHM8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Pih2bSgpKSkKICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxjb25zdCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QqPih0aGlzKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCmluZGV4IDg1NTBhZDhhNGJkODRiMjY5YjQ2ODQ0OGYxNTkxMzY3YWMyMDA5YTgu
LmY5ZTVlZDhjYjMzNjgyNzE0ZWJkN2Q4NTEyMWI5NGY0OTk2MjI1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNs
dWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgiCkBAIC05OCwxOCArOTgsMTEgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKICAg
ICByZXR1cm4gcGFnZSA/IHBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3
b3JsZCkgOiBudWxscHRyOwogfQogCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9t
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQor
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlcigpOworICAgIGlmIChhdXRvKiBzY3JpcHRDb250cm9sbGVyID0gd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkpCisgICAgICAgIHJldHVybiBzY3JpcHRDb250
cm9sbGVyLT5nbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0
YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9i
YWxTY29wZSkKLXsKLSAgICBpZiAoIXdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQo
KS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwotfQotI2VuZGlmCi0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDA0ZjFiYTRlMzBkZTQxMDAzM2Zl
NzQzNGYxZDg5ODU4ODY3NTIxMWQuLmE1MjgxMTNhMWY3YWVhNmY2YjlkZDM0ZmRiMTY5MDU3NmU4
MDQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNDQs
MTAgKzQ0LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLSNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLWNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKLSNlbmRp
ZgorY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIERPTVdpbmRvdyogZG9tV2lu
ZG93RnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiBGcmFtZSogZnJhbWVGcm9t
RXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTU3LDkgKzU0LDYgQEAgSlNDOjpK
U0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKIFdF
QkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdy
YXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21X
b3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYpOwotI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9i
YWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKLSNlbmRpZgorSlNDOjpKU0dsb2JhbE9iamVj
dCogZXhlY1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NzE2YjFhNjliOGVlYzFkYTY0NzIwMWE0MzI2OTJiMzM4OTdlYjc4ZS4uYjQ2ZDhhN2VkOTFiOWYz
ODY5MzgwYTI3NWMwOTcwNmRhNzM0MjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI3OSw0ICsyNzksOSBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdn
ZXIqIGRlYnVnZ2VyKQogICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbik7
CiB9CiAKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6Omdsb2Jh
bFNjb3BlV3JhcHBlcigpCit7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZTM5MDE4MGY1NzFmOWUx
ZTM1YmM5MjNiMWQ3NzFkNGI5NWNlZGE0NC4uZmI5ZTI3ZDdhYjcwOWQxNTA5NzA0YTBlOTRkOGMy
YWJkODExNGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKICAgICB9CiAKKyAgICBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSBmaW5hbDsKKwogICAgIHZvaWQg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRp
b25NZXNzYWdlID0gbnVsbHB0cik7CiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDUyYzc4ZjYxZjQwZWRl
YzZmNjRmMjgyYWZhN2QxNWRjMjMzZmUwZTcuLjQyMTM4Njc4N2Q4NjMwZjI2NjUyN2Y0ZTdhZTk0
MjBjN2MwMDE2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKQEAgLTQ4MywxMCArNDgzLDggQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gY29tbW9uVk0oKTsKICAgICBpZiAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCiAgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7Ci0j
ZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGNv
bW1vblZNKCk7CkBAIC01MzIsMTIgKzUzMCw4IEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJldHVybiBmcmFtZSA/IGZy
YW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpIDogbnVs
bHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAg
ICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVybiBleGVj
U3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpOwogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0
QWdlbnQuY3BwCmluZGV4IDg5MjQxOTBlZTYyMGYxNTUxNGEyNTBkNzYyZTJiZTRhMTkzMzA2M2Qu
LjhiNGU2OGFiNmRhYzk0NDZjNGYyMmE4Zjc0MjcxZGE1MGVlMWQ3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0
QWdlbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29y
a2VyR2xvYmFsU2NvcGUpOworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0g
ZXhlY1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2Nv
cGUpOwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihzY3JpcHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggN2Fh
NzJiNmE0YzY0Y2E5ZjY3ODE1MGQwNmEzMmQwMjk0YzUwODgyNS4uZmNlODAwYTMwMGJmMmI0OWZk
YmI5YzdjMDM1MDZlMDI1MDA5M2JlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0
U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9t
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZmZmZDNjZWEyMTUzNTlmZTZm
MGVkMWVkZDc3MmQxNmI3MDk1MWRlYi4uY2M1ODM5OTczZDkxNjMwNTljZjVmYjMwODkyMjMxNzMz
MTliYmE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIElu
amVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFBy
b3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAg
ICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgSlNDOjpKU0ds
b2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0
TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCA2ZjliZjgzZTkzMGRkMTY1ZDhhMzMwNDcwNTJhZDU1ZDIyZmFmYTc4Li5kMjMy
MWVjNDI2YWVjNjg4MjM5MDVmNmNkNmFiNzg5MDA2NTkzNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApA
QCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbWVyU2V0
Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2spID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdy
YXBwZXIoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTdk
ZjVlMWYzY2YwNjU3MTRiY2VmNzVlZDg1ZmNhZDUzOGY2ZTgwYS4uYzJjMTU0MWMxNTgwMjNiYjZm
YWE1ZTc1MzIyNmY2MWM3ZWZmOGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjY3LDQgKzI2Nyw5IEBAIGJvb2wg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAog
ICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKK0pTQzo6SlNHbG9iYWxP
YmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIoKQorewor
ICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IDZkNDNjZTVmOWZmZDJhNzBhZjBiZjZlNWFlZTU0Y2Q4ZmFjNzJm
MmUuLmUxMzhjYTYzODY2MWNhOGY0YjMxODIyM2Q3ZGVkOTE3MTFmMDA1MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtNTks
NiArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2Nv
cGVXcmFwcGVyKCkgZmluYWw7CisKICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgIGJv
b2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411775</attachid>
            <date>2020-10-19 12:15:50 -0700</date>
            <delta_ts>2020-10-19 13:46:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019121550.patch</filename>
            <type>text/plain</type>
            <size>15321</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UyZDFlODEwMzIyZDFl
MWI4NWZiMTZkNWQwZjQ1ZGY4NmI5MjZjMS4uZjFmMmE2MmRkMDIzYTM3MGFjMGMzYzk3MjgwNGRm
NjVhMTQxZTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGdsb2JhbE9i
amVjdEZyb21Xb3JrZXJPcldvcmxldEdsb2JhbFNjb3BlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzkxMgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIEludHJvZHVjZSBnbG9iYWxPYmplY3RGcm9tV29ya2Vy
T3JXb3JsZXRHbG9iYWxTY29wZSgpIHRvIHJlcGxhY2UgZXhpc3RpbmcgZXhlY1N0YXRlRnJvbVdv
cmtlckdsb2JhbFNjb3BlKCkKKyAgICAgICAgYW5kIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFs
U2NvcGUoKS4gVGhpcyBpcyBhIGZpcnN0IHN0ZXAgdG8gcHJvbW90ZSBjb2RlIHNoYXJpbmcuIElk
ZWFsbHksIGNvZGUKKyAgICAgICAgd291bGQgbm90IGhhdmUgdG8gZGlmZmVyZW50aWF0ZSB3b3Jr
ZXJzIGZyb20gd29ya2xldHMgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3Bl
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMjAtMTAtMTkg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSByZW1h
aW5pbmcgV2ViIEFuaW1hdGlvbnMgcnVudGltZS1lbmFibGVkIGZlYXR1cmVzIHRvIHNldHRpbmdz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggYWUwOTdlZWI4YzAwYTg5ZmI3OTc0ZDIxNjAyYmVkN2FiMmVjZjRlYS4uODY3NGYyZGZi
ODE2ZDZlYTRjYjAzNzVmYzZjYjJhNTQ5M2IzZTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjI0LDEwICsyMjQsOCBAQCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChpbmhlcml0
czxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8
Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpbmhlcml0czxK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNv
bnN0IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoaW5o
ZXJpdHM8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Pih2bSgpKSkKICAgICAgICAgcmV0
dXJuIGpzQ2FzdDxjb25zdCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QqPih0aGlzKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCmluZGV4IDg1NTBhZDhhNGJkODRiMjY5YjQ2ODQ0OGYxNTkxMzY3YWMyMDA5
YTguLjFkODVlY2M2MTU0MDk1ZjQ2MzE1YmY5MjNhOGZlOWEwYjkxNTEzZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgiCkBAIC04MSw3ICs4MSw3IEBAIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT53aW5k
b3dQcm94eSgpLmpzV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT53aW5kb3co
KTsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgTm9kZSogbm9kZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdEZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCiB7CiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzLDIzICs5MywxNiBAQCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBOb2RlKiBub2RlKQogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KHdvcmxkKTsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdEZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCiB7
CiAgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3Qod29ybGQpIDogbnVsbHB0cjsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRl
RnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29w
ZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZyb21Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gc2Ny
aXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLUpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
bGV0R2xvYmFsU2NvcGUpCi17Ci0gICAgaWYgKCF3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGUu
c2NyaXB0KCktPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKLX0KLSNlbmRpZgotCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCAwNGYxYmE0ZTMwZGU0
MTAwMzNmZTc0MzRmMWQ4OTg1ODg2NzUyMTFkLi45YTMwOWI2OGI4NDU5N2QxMjdhMDk0NWI0NTNm
ZjIxNThhZDRjNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgK
QEAgLTQ0LDEwICs0NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1jbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7
Ci0jZW5kaWYKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBET01XaW5kb3cq
IGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwogRnJhbWUqIGZy
YW1lRnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkBAIC01NSwxMSArNTIsOCBA
QCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNT
dGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KgogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29y
bGRFeGVjU3RhdGUoRnJhbWUqKTsKIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJv
bU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0ds
b2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwot
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtl
ckdsb2JhbFNjb3BlJik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxT
Y29wZSYpOwotI2VuZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQmLCBOb2RlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3RGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7CitK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5N2Vi
NzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1YzA5NzA2ZGE3MzQyMWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNo
RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgZGVidWdnZXItPmRldGFjaCht
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRp
bmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkKK3sKKyAgICByZXR1cm4gd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2IxZDc3MWQ0Yjk1Y2VkYTQ0Li5mYjllMjdkN2Fi
NzA5ZDE1MDk3MDRhMGU5NGQ4YzJhYmQ4MTE0ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgp
OwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigp
IGZpbmFsOworCiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKICAgICB2b2lkIGV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxw
dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNmZTBlNy4uYmE0ZmYyODE5
NDNhNzYwMTI3ODJkNWZlOGVjZjkzYjc4M2RhMWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgzLDEwICs0ODMsOCBAQCBKU0M6OlZN
JiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgp
OwogICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigq
dGhpcykpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlz
KS5zY3JpcHQoKS0+dm0oKTsKLSNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gY29tbW9uVk0oKTsKQEAgLTUzMiwxMiArNTMwLDggQEAgSlNDOjpK
U0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkKICAgICAg
ICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSkgOiBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2Jh
bFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpOwotI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQotICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkK
LSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoZG93bmNhc3Q8
V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpOwotI2VuZGlmCisgICAgaWYgKGlzPFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3RG
cm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KCp0aGlzKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAKaW5kZXggZDdhYmQ1ZGE1ZDFjMzk3MDhlYzQ4YzEwYzlmNmUxMjMxMjc2
MmRmMS4uMGYxZmUxOTRmNWZkNjBlMzA3OTNlMWJiZjFkNDE0NzYyZmY1ZmNjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlzY29ubmVjdENs
aWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9HbG9iYWxPYmpl
Y3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byYgbGV4aWNhbEds
b2JhbE9iamVjdCA9ICpleGVjU3RhdGVGcm9tUGFnZSh3b3JsZCwgbV9mcm9udGVuZFBhZ2UpOwor
ICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0RnJvbVBhZ2Uod29y
bGQsIG1fZnJvbnRlbmRQYWdlKTsKICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQsIFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBBU1NFUlQobV9mcm9u
dGVuZFBhZ2UpOwogCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpleGVjU3RhdGVG
cm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKKyAgICBhdXRvJiBsZXhp
Y2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVjdEZyb21QYWdlKGRlYnVnZ2VyV29ybGQoKSwg
bV9mcm9udGVuZFBhZ2UpOwogICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
OwogICAgIGF1dG8gdmFsdWUgPSBsZXhpY2FsR2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRl
bmRBUEkiKSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYWIwZGQyMWNkOTUw
NDVmZDgxYzkzNmNiNmI5ZWQzNDAyMzg4NDMwMS4uMmEzZDRhYmU3ZGE1YmI2MDBhNWY2NmEwYTZi
Y2RiMTc4MWNkNDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIFJlZjxQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JFdmVudExpc3RlbmVyCiAKICAgICAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgICAgICBo
YW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNGdW5jdGlvbigqZG9jdW1lbnQp
OwotICAgICAgICAgICAgZXhlYyA9IGV4ZWNTdGF0ZUZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLmlz
b2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgZXhlYyA9IGdsb2JhbE9iamVj
dEZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGhhbmRsZXJPYmplY3QgJiYgZXhlYykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRp
dEFnZW50LmNwcAppbmRleCA4OTI0MTkwZWU2MjBmMTU1MTRhMjUwZDc2MmUyYmU0YTE5MzMwNjNk
Li43ZDZlNjMzY2E4YjI5MWU0MGE0NzM5M2E4MDM3ZTliNzFlYWMxYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRp
dEFnZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFn
ZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcgogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dv
cmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9
IGdsb2JhbE9iamVjdEZyb21Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShtX3dvcmtlckdsb2Jh
bFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3Jp
cHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDdhYTcyYjZhNGM2NGNhOWY2NzgxNTBkMDZhMzJkMDI5NGM1MDg4MjUuLjU0NGViZTA1NDcwMTBm
MGFkY2FjODhjOTBlMjc5MDBhMjM3ZTY3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNj
cmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFs
U2NvcGUpOworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZ2xvYmFsT2Jq
ZWN0RnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3Jp
cHRTdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGZmZmQzY2VhMjE1
MzU5ZmU2ZjBlZDFlZGQ3NzJkMTZiNzA5NTFkZWIuLjBiYWY3NWUyYTFiMzhlMDE3YWRmYTlmZDBj
OTUxNzE0ZjdjMmExMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNTgsNyArNTgs
NyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZXhl
Y1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZ2xvYmFsT2JqZWN0RnJvbVdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgKaW5kZXggNmY5YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZh
ZmE3OC4uZDIzMjFlYzQyNmFlYzY4ODIzOTA1ZjZjZDZhYjc4OTAwNjU5Mzc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNh
dGlvbkNhbGxiYWNrKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsU2NvcGVXcmFwcGVyKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDE3ZGY1ZTFmM2NmMDY1NzE0YmNlZjc1ZWQ4NWZjYWQ1MzhmNmU4MGEuLmMyYzE1NDFj
MTU4MDIzYmI2ZmFhNWU3NTMyMjZmNjFjN2VmZjhjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI2Nyw0ICsyNjcs
OSBAQCBib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9u
KCkgY29uc3QKICAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwogfQogCitKU0M6
OkpTR2xvYmFsT2JqZWN0KiBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFw
cGVyKCkKK3sKKyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA2ZDQzY2U1ZjlmZmQyYTcwYWYwYmY2ZTVhZWU1
NGNkOGZhYzcyZjJlLi5lMTM4Y2E2Mzg2NjFjYThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmgKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbFNjb3BlV3JhcHBlcigpIGZpbmFsOworCiAgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24o
KTsKICAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411791</attachid>
            <date>2020-10-19 13:46:23 -0700</date>
            <delta_ts>2020-10-19 14:01:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019134622.patch</filename>
            <type>text/plain</type>
            <size>16551</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiY2FmMTc5NjJkZGEy
MTRkZTNkZWEzMWE3ODYzMDhjMTMzNWQ1My4uMWE0YTQyOGZkODY0YzBlMzE1NmIzZDQyZTcyNGZk
Yjk4MjM4M2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBleGVjU3RhdGVG
cm9tKigpIGZ1bmN0aW9uIHdpdGggZ2xvYmFsT2JqZWN0KCkgb3ZlcmxvYWRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbnRyb2R1Y2UgZ2xvYmFsT2JqZWN0
KCkgb3ZlcmxvYWRzIHRvIHJlcGxhY2UgZXhpc3RpbmcgZXhlY1N0YXRlRnJvbSooKSBmdW5jdGlv
bnMuCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzdGVwIHRvIHByb21vdGUgY29kZSBzaGFyaW5n
LiBJZGVhbGx5LCBjb2RlIHdvdWxkIG5vdCBoYXZlIHRvCisgICAgICAgIGRpZmZlcmVudGlhdGUg
d29ya2VycyBmcm9tIHdvcmtsZXRzIGFzIG11Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVG
cm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxT
Y29wZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDIwLTEw
LTE5ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNjUyMzEpOiBPdmVybGF5OiBub2RlIGluZm8gc29tZXRpbWVz
IGRyYXdzIG9uIG9uZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggYWUwOTdlZWI4YzAwYTg5ZmI3OTc0ZDIxNjAyYmVkN2Fi
MmVjZjRlYS4uODY3NGYyZGZiODE2ZDZlYTRjYjAzNzVmYzZjYjJhNTQ5M2IzZTc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
MjI0LDEwICsyMjQsOCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChpbmhlcml0czxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZT4odm0oKSkpCiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPih0aGlzKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQog
ICAgIGlmIChpbmhlcml0czxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U+KHZtKCkpKQogICAgICAg
ICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZSo+KHRoaXMpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICBpZiAoaW5oZXJpdHM8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Pih2
bSgpKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3QqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IDg1NTBhZDhhNGJkODRiMjY5YjQ2
ODQ0OGYxNTkxMzY3YWMyMDA5YTguLmI4MTMzYmRhN2Y4MzRiYmNhNDA2YjAxZDA0MDBkMzllZjE2
ODY4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29y
a2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCkBAIC04MSw3ICs4MSw3IEBAIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSogZnJhbWUpCiAgICAg
cmV0dXJuIGZyYW1lLT53aW5kb3dQcm94eSgpLmpzV2luZG93UHJveHkobWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpLT53aW5kb3coKTsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRl
RnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgTm9kZSogbm9kZSkKK0pTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2Rl
KQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MywyMyAr
OTMsMTYgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLmds
b2JhbE9iamVjdCh3b3JsZCk7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZy
b21QYWdlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFBhZ2UqIHBhZ2UpCitKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFnZSkK
IHsKICAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9i
amVjdCh3b3JsZCkgOiBudWxscHRyOwogfQogCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3Rh
dGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlKQorSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29y
a2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOworICAg
IGlmIChhdXRvKiBzY3JpcHRDb250cm9sbGVyID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
c2NyaXB0KCkpCisgICAgICAgIHJldHVybiBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxTY29wZVdy
YXBwZXIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxT
Y29wZShXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKLXsKLSAgICBpZiAo
IXdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlcigpOwotfQotI2VuZGlmCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCmluZGV4IDA0ZjFiYTRlMzBkZTQxMDAzM2ZlNzQzNGYxZDg5ODU4ODY3NTIxMWQu
LjA1ZDAzMzE4MDc5NTBlZTMxMDBmZjViMjExODE0MDIwNDE5YzQ0MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNDQsMTAgKzQ0LDcgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKLWNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZTsKLSNlbmRpZgorY2xhc3MgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU7CiAKIERPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiBGcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKQEAgLTU1LDExICs1Miw4IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqCiAK
IEpTQzo6SlNHbG9iYWxPYmplY3QqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSopOwogCi1KU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQmLCBOb2Rl
Kik7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tUGFn
ZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7Ci1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3Rh
dGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3Jr
bGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJik7Ci0jZW5kaWYKK0pTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmLCBOb2RlKik7CitXRUJDT1JF
X0VYUE9SVCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxk
JiwgUGFnZSopOworSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNzE2YjFhNjliOGVlYzFkYTY0NzIwMWE0MzI2OTJiMzM4OTdlYjc4ZS4uYjQ2ZDhhN2VkOTFi
OWYzODY5MzgwYTI3NWMwOTcwNmRhNzM0MjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI3OSw0ICsyNzks
OSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKEpTQzo6RGVi
dWdnZXIqIGRlYnVnZ2VyKQogICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lv
bik7CiB9CiAKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6Omds
b2JhbFNjb3BlV3JhcHBlcigpCit7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlV3JhcHBl
cigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZTM5MDE4MGY1NzFm
OWUxZTM1YmM5MjNiMWQ3NzFkNGI5NWNlZGE0NC4uZmI5ZTI3ZDdhYjcwOWQxNTA5NzA0YTBlOTRk
OGMyYWJkODExNGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKTsKICAgICB9CiAKKyAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSBmaW5hbDsKKwogICAgIHZv
aWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNl
cHRpb25NZXNzYWdlID0gbnVsbHB0cik7CiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbiwg
U3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDUyYzc4ZjYxZjQw
ZWRlYzZmNjRmMjgyYWZhN2QxNWRjMjMzZmUwZTcuLjdhZmQ3OWRkOWFjYmE4NGJlMzc4NDlkYzAy
NGQ3NzQwNDgyZmQzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKQEAgLTQ4MywxMCArNDgzLDggQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gY29tbW9uVk0oKTsKICAgICBpZiAoaXM8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCiAgICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7
Ci0jZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IGNvbW1vblZNKCk7CkBAIC01MjYsMTggKzUyNCwxMSBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiB7Ci0gICAgaWYgKGlzPERvY3Vt
ZW50PigqdGhpcykpIHsKLSAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCp0aGlzKTsKLSAgICAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwot
ICAgICAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKSA6IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChpczxEb2N1bWVu
dD4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KGRvd25jYXN0PERvY3VtZW50
PigqdGhpcykucGFnZSgpKTsKIAotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMp
KQotICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQotICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2xldEdsb2JhbFNj
b3BlPigqdGhpcykpOwotI2VuZGlmCisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPigqdGhpcykpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QoZG93bmNhc3Q8V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggZDdhYmQ1ZGE1ZDFjMzk3MDhlYzQ4YzEw
YzlmNmUxMjMxMjc2MmRmMS4uMThiOTA1M2ExYWUyZTI4NjMyMzQ1ZDI3MjA0NGU5MmU2YzE0ZWQ5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
ZGlzY29ubmVjdENsaWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxm
VG9HbG9iYWxPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0
byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpleGVjU3RhdGVGcm9tUGFnZSh3b3JsZCwgbV9mcm9u
dGVuZFBhZ2UpOworICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0
KHdvcmxkLCBtX2Zyb250ZW5kUGFnZSk7CiAgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50LCBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQVNTRVJUKG1f
ZnJvbnRlbmRQYWdlKTsKIAotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZXhlY1N0
YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBtX2Zyb250ZW5kUGFnZSk7CisgICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3QoZGVidWdnZXJXb3JsZCgpLCBtX2Zy
b250ZW5kUGFnZSk7CiAgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAg
ICAgYXV0byB2YWx1ZSA9IGxleGljYWxHbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVuZEFQ
SSIpKTsKICAgICBBU1NFUlQodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBhYjBkZDIxY2Q5NTA0NWZk
ODFjOTM2Y2I2YjllZDM0MDIzODg0MzAxLi4zM2M1OTQ3ZTc0NGE3MGQwMmI0NmUxNzNjODZhOTNh
NDAzMzIyZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTg0NywyNCArMTg0NywyNCBAQCBSZWY8UHJvdG9j
b2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
RXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAgZG9jdW1lbnQgPSAmZG93bmNhc3Q8Tm9kZT4oZXZl
bnRUYXJnZXQpLmRvY3VtZW50KCk7CiAKICAgICAgICAgSlNDOjpKU09iamVjdCogaGFuZGxlck9i
amVjdCA9IG51bGxwdHI7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMgPSBudWxs
cHRyOworICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRy
OwogCiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0TGlzdGVuZXIuaXNvbGF0
ZWRXb3JsZCgpLnZtKCkpOwogCiAgICAgICAgIGlmIChkb2N1bWVudCkgewogICAgICAgICAgICAg
aGFuZGxlck9iamVjdCA9IHNjcmlwdExpc3RlbmVyLmVuc3VyZUpTRnVuY3Rpb24oKmRvY3VtZW50
KTsKLSAgICAgICAgICAgIGV4ZWMgPSBleGVjU3RhdGVGcm9tTm9kZShzY3JpcHRMaXN0ZW5lci5p
c29sYXRlZFdvcmxkKCksIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IFdl
YkNvcmU6Omdsb2JhbE9iamVjdChzY3JpcHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCksIGRvY3Vt
ZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChoYW5kbGVyT2JqZWN0ICYmIGV4ZWMpIHsK
LSAgICAgICAgICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgaWYgKGhhbmRs
ZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgICAgIEpTQzo6SlNGdW5jdGlvbiogaGFuZGxlckZ1
bmN0aW9uID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KHZtLCBoYW5kbGVy
T2JqZWN0KTsKIAogICAgICAgICAgICAgaWYgKCFoYW5kbGVyRnVuY3Rpb24pIHsKICAgICAgICAg
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgaGFuZGxlciBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2Vl
IGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhh
dC4KLSAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZUV2ZW50VmFsdWUgPSBoYW5kbGVyT2JqZWN0
LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGFuZGxlRXZlbnQi
KSk7CisgICAgICAgICAgICAgICAgYXV0byBoYW5kbGVFdmVudFZhbHVlID0gaGFuZGxlck9iamVj
dC0+Z2V0KGdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGFu
ZGxlRXZlbnQiKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVk
aXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcAppbmRleCA4OTI0MTkwZWU2MjBmMTU1MTRhMjUwZDc2MmUyYmU0YTE5
MzMwNjNkLi5mNjRkNTc1MzBiN2I2MTcwZWFhZGU5MjNlNDA5YjViZGRlYTcyZTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcApAQCAtNTUsOCArNTUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9i
YWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDdhYTcyYjZhNGM2NGNhOWY2NzgxNTBkMDZhMzJkMDI5NGM1MDg4MjUu
LjNhZTM1YzY3YTMwMzQxZDdlZTEyZjZjYzU2ODhkZTFlYzc4YzYzZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRl
YnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcm
CiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNH
bG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlckdsb2Jh
bFNjb3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCmluZGV4IGZmZmQzY2VhMjE1MzU5ZmU2ZjBlZDFlZGQ3NzJkMTZiNzA5NTFkZWIuLmFh
NThhMWYwZDdhODFiMDA2ODFmNjY4YTlmYzRhNzI1ODZiMTNkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGlt
ZUFnZW50LmNwcApAQCAtNTgsOCArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29y
a2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlckdsb2JhbFNjb3Bl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmY5
YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZhZmE3OC4uZDIzMjFlYzQyNmFlYzY4ODIz
OTA1ZjZjZDZhYjc4OTAwNjU5Mzc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihK
U0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE3ZGY1ZTFmM2NmMDY1NzE0
YmNlZjc1ZWQ4NWZjYWQ1MzhmNmU4MGEuLmMyYzE1NDFjMTU4MDIzYmI2ZmFhNWU3NTMyMjZmNjFj
N2VmZjhjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTI2Nyw0ICsyNjcsOSBAQCBib29sIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwogfQogCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkKK3sKKyAgICByZXR1cm4gd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCA2ZDQzY2U1ZjlmZmQyYTcwYWYwYmY2ZTVhZWU1NGNkOGZhYzcyZjJlLi5lMTM4Y2E2Mzg2
NjFjYThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU5LDYgKzU5LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwog
ICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZp
bmFsOworCiAgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKICAgICBib29sIGlzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3Q7CiAK
</data>
<flag name="commit-queue"
          id="428103"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411792</attachid>
            <date>2020-10-19 13:54:49 -0700</date>
            <delta_ts>2020-10-19 14:10:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019135448.patch</filename>
            <type>text/plain</type>
            <size>42866</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiY2FmMTc5NjJkZGEy
MTRkZTNkZWEzMWE3ODYzMDhjMTMzNWQ1My4uMWE0YTQyOGZkODY0YzBlMzE1NmIzZDQyZTcyNGZk
Yjk4MjM4M2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBleGVjU3RhdGVG
cm9tKigpIGZ1bmN0aW9uIHdpdGggZ2xvYmFsT2JqZWN0KCkgb3ZlcmxvYWRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbnRyb2R1Y2UgZ2xvYmFsT2JqZWN0
KCkgb3ZlcmxvYWRzIHRvIHJlcGxhY2UgZXhpc3RpbmcgZXhlY1N0YXRlRnJvbSooKSBmdW5jdGlv
bnMuCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzdGVwIHRvIHByb21vdGUgY29kZSBzaGFyaW5n
LiBJZGVhbGx5LCBjb2RlIHdvdWxkIG5vdCBoYXZlIHRvCisgICAgICAgIGRpZmZlcmVudGlhdGUg
d29ya2VycyBmcm9tIHdvcmtsZXRzIGFzIG11Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVG
cm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxT
Y29wZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDIwLTEw
LTE5ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNjUyMzEpOiBPdmVybGF5OiBub2RlIGluZm8gc29tZXRpbWVz
IGRyYXdzIG9uIG9uZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCA1MGJiYzc4YjcwMzFmMjdiY2YzMjJjMjU0NWY5MGUwNTc0YjZmNmQ5
Li5lNzU1Yjg4ZmViNDc5MGMyYzYxMzg2OTU2Y2JmNzg1YjAyYTkyZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5UmVxdWVzdD4gY29udmVydEFuZFZhbGlkYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIk1pc3NpbmcgcGF5bWVudCBtZXRob2QgZGF0YS4iIH07CiAKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGNvbnRleHQudm0oKSk7Ci0gICAgYXV0byBhcHBs
ZVBheVJlcXVlc3QgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheVJlcXVlc3Q+KCpjb250ZXh0
LmV4ZWNTdGF0ZSgpLCBkYXRhKTsKKyAgICBhdXRvIGFwcGxlUGF5UmVxdWVzdCA9IGNvbnZlcnRE
aWN0aW9uYXJ5PEFwcGxlUGF5UmVxdWVzdD4oKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGRhdGEp
OwogICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwogCkBAIC0zMDUsNyArMzA1LDcgQEAgRXhj
ZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiBBcHBsZVBheVBheW1lbnRIYW4KICAgICAgICAgaWYgKHNlcmlhbGl6ZWRNb2RpZmllckRhdGFb
aV0uaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmV4ZWNTdGF0ZSgpOworICAgICAgICBhdXRv
JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRvY3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICB7CkBAIC00MDMsNyAr
NDAzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0
ZVBheW1lbnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamUKIAogICAgIGF1dG8mIGNvbnRleHQgPSAq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoY29udGV4dC52bSgpKTsKLSAgICBhdXRvIGFwcGxlUGF5RXJyb3JzID0gY29u
dmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8QXBwbGVQYXlFcnJvcj4+PigqY29udGV4dC5l
eGVjU3RhdGUoKSwgcGF5bWVudE1ldGhvZEVycm9ycyk7CisgICAgYXV0byBhcHBsZVBheUVycm9y
cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNv
bnRleHQuZ2xvYmFsT2JqZWN0KCksIHBheW1lbnRNZXRob2RFcnJvcnMpOwogICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9OwogCkBAIC00NDIsNyArNDQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6bWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6
SlNWYWwKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCiAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZTsKLSAgICBhdXRvIG1lcmNoYW50U2Vzc2lvbiA9IFBheW1lbnRNZXJj
aGFudFNlc3Npb246OmZyb21KUygqZG9jdW1lbnQoKS5leGVjU3RhdGUoKSwgYXNPYmplY3QobWVy
Y2hhbnRTZXNzaW9uVmFsdWUpLCBlcnJvck1lc3NhZ2UpOworICAgIGF1dG8gbWVyY2hhbnRTZXNz
aW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKCpkb2N1bWVudCgpLmdsb2JhbE9i
amVjdCgpLCBhc09iamVjdChtZXJjaGFudFNlc3Npb25WYWx1ZSksIGVycm9yTWVzc2FnZSk7CiAg
ICAgaWYgKCFtZXJjaGFudFNlc3Npb24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGM2NDA3MGFkMzBkZTBkY2JhZGY0NTk5ODFhNjExZGIx
MzE1NTA0NjEuLjZmYTQwMzAxNmEwZTI5NzMzNTE0Y2IxZjU5N2E2MWJlYzdjYzhjOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zNjYsNyArMzY2LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIC8vIEZJWE1FOiBmb3IgZWZmaWNpZW5j
eSwgd2Ugc2hvdWxkIGxvYWQgYmxvYnMgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdo
IHRoZSByZWFkYWJsZVN0cmVhbSBwYXRoLgogICAgIGlmIChyZXNwb25zZS0+aXNCbG9iQm9keSgp
KSB7Ci0gICAgICAgIGF1dG8gc3RyZWFtT3JFeGNlcHRpb24gPSByZXNwb25zZS0+cmVhZGFibGVT
dHJlYW0oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXhlY1N0YXRlKCkpOworICAgICAgICBh
dXRvIHN0cmVhbU9yRXhjZXB0aW9uID0gcmVzcG9uc2UtPnJlYWRhYmxlU3RyZWFtKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KHN0cmVhbU9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3Qoc3RyZWFtT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCmluZGV4IGVjMGYwNTNjNTcxYzNjMGY1Y2QyNWEyM2Q4NTU3NDM2ODQzNmNiZWEuLmI4
NGJjYTcyNWU4NDZkZmVhZTAzOTMwOThlYTJlMzc2YTE0MDBmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29uCiAKICAgICAvLyBJZiBsb2FkaW5nLCBsZXQncyBjcmVh
dGUgYSBzdHJlYW0gc28gdGhhdCBkYXRhIGlzIHRlZWQgb24gYm90aCBjbG9uZXMuCiAgICAgaWYg
KGlzTG9hZGluZygpICYmICFtX3JlYWRhYmxlU3RyZWFtU291cmNlKSB7Ci0gICAgICAgIGF1dG8g
dm9pZE9yRXhjZXB0aW9uID0gY3JlYXRlUmVhZGFibGVTdHJlYW0oKmNvbnRleHQuZXhlY1N0YXRl
KCkpOworICAgICAgICBhdXRvIHZvaWRPckV4Y2VwdGlvbiA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFt
KCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHZvaWRPckV4
Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gdm9pZE9yRXhjZXB0
aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcAppbmRleCA2N2NhOTk0ZjcwZTY3ODU5OWNmMjZlYzA4ZWJkZDQzYWIzNjM3ZmQ1
Li45YWM4OGViZmQ3Nzc4YmQ3ZDFkMzEyZmM3NjA4ZjFlYzlhYTExZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSlNDOjpWTSYgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQ6OnZtKCkKICAgICByZXR1cm4gKm1fdm07CiB9CiAKLUpTQzo6
SlNHbG9iYWxPYmplY3QmIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQorSlND
OjpKU0dsb2JhbE9iamVjdCYgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6Omdsb2JhbE9iamVjdCgp
CiB7CiAgICAgaW5pdGlhbGl6ZVZNKCk7CiAgICAgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKaW5kZXggOGQ1OTIwZTQ5NmY4N2Mw
MThhNDA0ZTY3NDE4YzE1ZDFmYjJhMmYyNC4uNWVjYWMxOGJjMDI5ZjI3ZDY0YmM0YTFiMzNkMTZl
ODFkNTUwYmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIH5JREJTZXJpYWxpemF0aW9uQ29udGV4dCgpOwogCiAgICAg
SlNDOjpWTSYgdm0oKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUoKTsKKyAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKTsKIAogcHJpdmF0ZToKICAgICBJ
REJTZXJpYWxpemF0aW9uQ29udGV4dChQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAppbmRleCBjMDNhMjNlMjg0ZDRkNTZkZjkyM2RkOTUzNjEwZDlmOGY5YzRjMzcxLi5h
MDU3MmRiMTAyZDg3OTBiYWVkMTJmMzIxZWY0YWFiYTI4OTgzN2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpk
ZWxldGVSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmIGlucHV0UmFuZ2UpCiAKIElEQkVycm9y
IE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9y
VmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIG1faW5mbywga2V5RGF0
YSwgdmFsdWUpOworICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBtX2luZm8sIGtleURh
dGEsIHZhbHVlKTsKICAgICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBp
bmRleEtleXMsIHZhbHVlKTsKIH0KIApAQCAtMzQyLDEyICszNDIsMTIgQEAgSURCRXJyb3IgTWVt
b3J5T2JqZWN0U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUlu
ZGV4JiBpbmRleCkKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXphdGlvbkNvbnRl
eHQtPnZtKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6ICptX2tleVZhbHVl
U3RvcmUpIHsKLSAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNW
YWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgaXRlcmF0b3IudmFsdWUp
OworICAgICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1f
c2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpdGVyYXRvci52YWx1ZSk7CiAg
ICAgICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyB9OwogCiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgICAgICBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRl
KCksIGluZGV4LmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGl0
ZXJhdG9yLmtleSk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6
YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRl
eEtleSwgbV9pbmZvLmtleVBhdGgoKSwgaXRlcmF0b3Iua2V5KTsKIAogICAgICAgICBpZiAoaW5k
ZXhLZXkuaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggMzk5NjgyNWY1ZjVmZjdlMzZjNTAyNjU2MDc4ZTkzMzgyMzVh
ZTdiMC4uNThjYWQwNTg1ZDIxZDlmNzdkNzhhMmM4YWE2NmZiNzYyODczZjdiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTIwODYsMTIgKzIwODYsMTIgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChJREJP
YmplY3RTdG9yZUluZm8mIG8KIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXph
dGlvbkNvbnRleHQtPnZtKCkpOwogCi0gICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgdmFsdWUp
OworICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJp
YWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIHZhbHVlKTsKICAgICBpZiAoanNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogCiAg
ICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBpbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwg
b2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKyAgICBnZW5lcmF0ZUluZGV4S2V5Rm9y
VmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIGluZm8sIGpzVmFs
dWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8ua2V5UGF0aCgpLCBrZXkpOwogCiAgICAgaWYg
KGluZGV4S2V5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNzc3YzY3NjM5MjFhM2FiYWUwZTE1OTc2ZDUxZDEyZjU5
ZTY4NDM0OS4uM2M4YWZiZTBmYTA5OGNiMjA0NmYwZjllZjVkYWZlY2JkMmQxYmQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXkKICAgICAgICAgdXNlZEtleSA9IGtleURhdGE7CiAKICAgICAvLyBHZW5lcmF0ZSBp
bmRleCBrZXlzIHVwIGZyb250IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgotICAgIGF1
dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3Jl
LT5zZXJpYWxpemF0aW9uQ29udGV4dCgpLmV4ZWNTdGF0ZSgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1
c2VkS2V5LCB2YWx1ZSk7CisgICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFw
Rm9yVmFsdWUobV9iYWNraW5nU3RvcmUtPnNlcmlhbGl6YXRpb25Db250ZXh0KCkuZ2xvYmFsT2Jq
ZWN0KCksICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKIAogICAgIGlmIChvdmVy
d3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3
cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggZTcx
MzViZWM2MDNmOWI1M2E5ZDIyYTQ0M2FmMzU4MjBmMWNhY2I5OS4uZmQzNmE5MmY0YzBkNTNjODFi
MzRlMzhmMzRlMzZlNzdkYTI2YjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTMwOCw3ICszMDgs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaQogc3RhdGljIEV4Y2VwdGlvbk9yPEpTQzo6SlNW
YWx1ZT4gcGFyc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoY29udGV4
dC52bSgpKTsKLSAgICBKU0M6OkpTVmFsdWUgZGF0YSA9IEpTT05QYXJzZShjb250ZXh0LmV4ZWNT
dGF0ZSgpLCBzdHJpbmcpOworICAgIEpTQzo6SlNWYWx1ZSBkYXRhID0gSlNPTlBhcnNlKGNvbnRl
eHQuZ2xvYmFsT2JqZWN0KCksIHN0cmluZyk7CiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwogICAg
IHJldHVybiBkYXRhOwpAQCAtMzM3LDggKzMzNyw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50
UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0
CiAKICAgICAgICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogICAgICAgICBpZiAocGF5bWVudE1l
dGhvZC5kYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShkb2N1bWVudC5leGVjU3RhdGUoKS0+dm0oKSk7Ci0gICAgICAgICAgICBzZXJpYWxpemVkRGF0
YSA9IEpTT05TdHJpbmdpZnkoZG9jdW1lbnQuZXhlY1N0YXRlKCksIHBheW1lbnRNZXRob2QuZGF0
YS5nZXQoKSwgMCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShkb2N1bWVudC5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisgICAgICAgICAgICBzZXJpYWxpemVk
RGF0YSA9IEpTT05TdHJpbmdpZnkoZG9jdW1lbnQuZ2xvYmFsT2JqZWN0KCksIHBheW1lbnRNZXRo
b2QuZGF0YS5nZXQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fTsKICAgICAgICAgICAgIApAQCAtMzU3LDcgKzM1Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXlt
ZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBW
ZWN0CiAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
dG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgYXV0byBkZXRhaWxzUmVzdWx0
ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaWxzKCpkb2N1bWVudC5leGVjU3RhdGUoKSwgZGV0
YWlscywgb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhv
ZElkZW50aWZpZXI6Ok5vKTsKKyAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBjaGVja0FuZENhbm9u
aWNhbGl6ZURldGFpbHMoKmRvY3VtZW50Lmdsb2JhbE9iamVjdCgpLCBkZXRhaWxzLCBvcHRpb25z
LnJlcXVlc3RTaGlwcGluZywgU2hvdWxkVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcjo6
Tm8pOwogICAgIGlmIChkZXRhaWxzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gZGV0YWlsc1Jlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKQEAgLTY0Nyw3ICs2NDcsNyBA
QCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24g
cmVhc29uKQogCiAgICAgYXV0byYgY29udGV4dCA9ICptX2RldGFpbHNQcm9taXNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShjb250ZXh0LnZtKCkpOwotICAgIGF1dG8gZGV0YWlsc1VwZGF0ZSA9IGNvbnZlcnREaWN0
aW9uYXJ5PFBheW1lbnREZXRhaWxzVXBkYXRlPigqY29udGV4dC5leGVjU3RhdGUoKSwgbV9kZXRh
aWxzUHJvbWlzZS0+cmVzdWx0KCkpOworICAgIGF1dG8gZGV0YWlsc1VwZGF0ZSA9IGNvbnZlcnRE
aWN0aW9uYXJ5PFBheW1lbnREZXRhaWxzVXBkYXRlPigqY29udGV4dC5nbG9iYWxPYmplY3QoKSwg
bV9kZXRhaWxzUHJvbWlzZS0+cmVzdWx0KCkpOwogICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogICAgICAgICByZXR1cm47CkBAIC02NTksNyArNjU5LDcgQEAgdm9p
ZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRlUmVhc29uIHJlYXNv
bikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGV0YWlsc1Jlc3VsdCA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplRGV0YWlscygqY29udGV4dC5leGVjU3RhdGUoKSwgZGV0YWlsc1Vw
ZGF0ZSwgbV9vcHRpb25zLnJlcXVlc3RTaGlwcGluZywgU2hvdWxkVmFsaWRhdGVQYXltZW50TWV0
aG9kSWRlbnRpZmllcjo6WWVzKTsKKyAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBjaGVja0FuZENh
bm9uaWNhbGl6ZURldGFpbHMoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGRldGFpbHNVcGRhdGUs
IG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhvZElk
ZW50aWZpZXI6Olllcyk7CiAgICAgaWYgKGRldGFpbHNSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgYWJvcnRXaXRoRXhjZXB0aW9uKGRldGFpbHNSZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcAppbmRleCBiNDdhNDU3YzU0NDZkMjIzNTJhYjBjMTBlNjZmMjdkZDFhN2Qz
MmIzLi41YmE0N2UyZDlhMDY1NWVhZGE0MzU1ZDgwN2FhMjUyNWU2ZGI2MzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwg
WFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYCiAgICAgICAgIGlmICghZGV2aWNlIHx8ICFkZXZp
Y2UtPnN1cHBvcnRzKG1vZGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IHByb3RlY3RlZERvY3VtZW50LT5leGVjU3RhdGUoKTsKKyAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gcHJvdGVjdGVkRG9jdW1lbnQtPmdsb2JhbE9iamVjdCgpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKaW5kZXggNjc5MTdmOTU1ODE0MGMxMzg3YjkzZDNkZjMwMTEyYzA2YzMwYzZiMS4uMzJk
ODhiMTg2YWVmOTQ1ZmVjZmFkYjc4M2M5YjU2ZDM0NzlkMzVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OnRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChEb2N1bWVudCYKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBBU1NFUlQoJmRvY3VtZW50ID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudC5leGVjU3RhdGUo
KTsKKyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRvY3VtZW50Lmdsb2JhbE9iamVj
dCgpOwogICAgIGF1dG8gZWxlbWVudCA9IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91
c2x5KGRvY3VtZW50LCB2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9jb25zdHJ1Y3Rvci5nZXQo
KSwgbG9jYWxOYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIWVsZW1lbnQpOwogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGFlMDk3ZWViOGMwMGE4OWZi
Nzk3NGQyMTYwMmJlZDdhYjJlY2Y0ZWEuLjg2NzRmMmRmYjgxNmQ2ZWE0Y2IwMzc1ZmM2Y2IyYTU0
OTNiM2U3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTIyNCwxMCArMjI0LDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoaW5oZXJpdHM8SlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKICAgICBpZiAoaW5oZXJpdHM8SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
Pih2bSgpKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotI2VuZGlmCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGluaGVyaXRzPEpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdD4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Kj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCA4NTUw
YWQ4YTRiZDg0YjI2OWI0Njg0NDhmMTU5MTM2N2FjMjAwOWE4Li5iODEzM2JkYTdmODM0YmJjYTQw
NmIwMWQwNDAwZDM5ZWYxNjg2OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgpAQCAt
ODEsNyArODEsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJh
bWUqIGZyYW1lKQogICAgIHJldHVybiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7CiB9CiAKLUpTQzo6SlNHbG9iYWxP
YmplY3QqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5v
ZGUpCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTMsMjMgKzkzLDE2IEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZy
b21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGZy
YW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpOwogfQogCi1KU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdl
KQorSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKIH0KIAotSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7
Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIoKTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxl
ci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZy
b21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2Nv
cGUpCi17Ci0gICAgaWYgKCF3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCktPndv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKLX0KLSNlbmRpZgotCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCAwNGYxYmE0ZTMwZGU0MTAwMzNmZTc0MzRm
MWQ4OTg1ODg2NzUyMTFkLi4wNWQwMzMxODA3OTUwZWUzMTAwZmY1YjIxMTgxNDAyMDQxOWM0NDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDEwICs0
NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0jaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi1jbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7Ci0jZW5kaWYKK2Ns
YXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zy
b21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwogRnJhbWUqIGZyYW1lRnJvbUV4ZWNT
dGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkBAIC01NSwxMSArNTIsOCBAQCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KgogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUo
RnJhbWUqKTsKIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3Jh
cHBlcldvcmxkJiwgTm9kZSopOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwotSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
Jik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOwotI2Vu
ZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiwg
Tm9kZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3ZWI3
OGUuLmI0NmQ4YTdlZDkxYjlmMzg2OTM4MGEyNzVjMDk3MDZkYTczNDIxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0yNzksNCArMjc5LDkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hE
ZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKICAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBKU0M6OkRlYnVnZ2VyOjpUZXJtaW5hdGlu
Z0RlYnVnZ2luZ1Nlc3Npb24pOwogfQogCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIoKQoreworICAgIHJldHVybiB3b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IGUzOTAxODBmNTcxZjllMWUzNWJjOTIzYjFkNzcxZDRiOTVjZWRhNDQuLmZiOWUyN2Q3YWI3
MDlkMTUwOTcwNGEwZTk0ZDhjMmFiZDgxMTRmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU3LDYgKzU3LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7
CiAgICAgfQogCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkg
ZmluYWw7CisKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJp
bmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogICAgIHZvaWQgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCA1MmM3OGY2MWY0MGVkZWM2ZjY0ZjI4MmFmYTdkMTVkYzIzM2ZlMGU3Li41MjRkMGQyZDQx
YmVhMDA4NzE3YzAxMjZlZDlkZDhlMDA2NTc2MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODMsMTAgKzQ4Myw4IEBAIEpTQzo6Vk0m
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKICAgICAgICAgcmV0dXJuIGNvbW1vblZNKCk7
CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpCiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwotI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0
aGlzKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMp
LnNjcmlwdCgpLT52bSgpOwotI2VuZGlmCiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBjb21tb25WTSgpOwpAQCAtNTI0LDIwICs1MjIsMTMgQEAgYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZXhlY1N0YXRlKCkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6Omdsb2JhbE9iamVjdCgpCiB7Ci0gICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykpIHsK
LSAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKTsK
LSAgICAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAgICAgICByZXR1cm4g
ZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKSA6IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQorICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBkb3duY2Fz
dDxEb2N1bWVudD4oKnRoaXMpLnBhZ2UoKSk7CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAg
ICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KGRvd25j
YXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1ZTkwZjQxYjJmZGJmOWZlZTdmYjQwMzRiZmQw
YzExODBiZWJmOGYwLi43NjdkNDVlOTFiNzRmMWIzYzZkYmZmZDNhOTgzNjY4MzdlMjcxYWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTI0Miw3
ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBlbnN1cmVSZWplY3RlZFByb21pc2VU
cmFja2VyU2xvdygpOwogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGV4ZWNTdGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREb21haW5Gb3JDYWNoZVBhcnRp
dGlvbihTdHJpbmcmJiBkb21haW4pIHsgbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbiA9IFdURk1v
dmUoZG9tYWluKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggODFiZDY4YTUzYzQ2OWY0
NGRhYzNjYTlmZWM2MTMzZTA5ZmFiZWQ4ZS4uN2U2YTE0MjY5ZTViNzcyNmE4ODJhODkxOWQxZGI0
NjE5NjI5M2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gQmxvYjo6c3RyZWFtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWMKICAgICAgICAgVW5pcXVlUmVmPEZpbGVSZWFkZXJMb2Fk
ZXI+IG1fbG9hZGVyOwogICAgIH07CiAKLSAgICByZXR1cm4gUmVhZGFibGVTdHJlYW06OmNyZWF0
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5leGVjU3RhdGUoKSwgYWRvcHRSZWYoKm5ldyBCbG9i
U3RyZWFtU291cmNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICp0aGlzKSkpOworICAgIHJldHVy
biBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdsb2JhbE9i
amVjdCgpLCBhZG9wdFJlZigqbmV3IEJsb2JTdHJlYW1Tb3VyY2Uoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgKnRoaXMpKSk7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZjRkYTM4ODYz
YTkzZWIzNmRhNzY1MDJiZjUzYjEyYjg0ODEyNTI3Yi4uYTllYmY3YWQyZDhlMmJhN2I3OTRjMjM4
OGVmNDMzOTk4NDdkZjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpCiAKICAgICAgICAgICAg
IGRvY3VtZW50KCktPmV2ZW50TG9vcCgpLnBlcmZvcm1NaWNyb3Rhc2tDaGVja3BvaW50KCk7CiAK
LSAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIHJlYWN0aW9uU3RhY2soZG9j
dW1lbnQoKS0+ZXhlY1N0YXRlKCkpOworICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgcmVhY3Rpb25TdGFjayhkb2N1bWVudCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgICAg
ICAgICBhdXRvJiBlbGVtZW50SW50ZXJmYWNlID0gY29uc3RydWN0aW9uRGF0YS0+ZWxlbWVudElu
dGVyZmFjZS5nZXQoKTsKICAgICAgICAgICAgIGF1dG8gbmV3RWxlbWVudCA9IGVsZW1lbnRJbnRl
cmZhY2UuY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjaygqZG9jdW1lbnQoKSwgY29uc3RydWN0
aW9uRGF0YS0+bmFtZSk7CiAgICAgICAgICAgICBtX3RyZWVCdWlsZGVyLT5kaWRDcmVhdGVDdXN0
b21PckZhbGxiYWNrRWxlbWVudChXVEZNb3ZlKG5ld0VsZW1lbnQpLCAqY29uc3RydWN0aW9uRGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwCmluZGV4IGQ3YWJkNWRhNWQxYzM5NzA4ZWM0OGMxMGM5ZjZlMTIzMTI3NjJkZjEuLjE4
YjkwNTNhMWFlMmUyODYzMjM0NWQyNzIwNDRlOTJlNmMxNGVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0xNTYsNyAr
MTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmRpc2Nvbm5lY3RDbGllbnQoKQog
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRkU2VsZlRvR2xvYmFsT2JqZWN0SW5Xb3Js
ZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSAqZXhlY1N0YXRlRnJvbVBhZ2Uod29ybGQsIG1fZnJvbnRlbmRQYWdlKTsKKyAgICBhdXRv
JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVjdCh3b3JsZCwgbV9mcm9udGVuZFBh
Z2UpOwogICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVudCwgVmVjdG9yPENvbnRleHRNZW51SXRlbQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEFTU0VSVChtX2Zyb250ZW5kUGFnZSk7CiAKLSAg
ICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmV4ZWNTdGF0ZUZyb21QYWdlKGRlYnVnZ2Vy
V29ybGQoKSwgbV9mcm9udGVuZFBhZ2UpOworICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3Qg
PSAqZ2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9udGVuZFBhZ2UpOwogICAgIGF1
dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gdmFsdWUgPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiKSk7CiAgICAgQVNTRVJUKHZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggMWQ2NWE0NTI3NTlmZDAyNTMyMjMyZmZmYmZiNzAzNzZmMGFm
ZWY5MC4uMDJhYmUxNjY0MTQyZGJlYTlhYmZmYzAwZWMzNzUzYmQxNGUzNjIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEZldGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQQogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwg
Ym9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAg
IGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
V2ViRGVidWdnZXJBZ2VudCgpKQotICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWRTY2hlZHVs
ZUFzeW5jQ2FsbChjb250ZXh0LmV4ZWNTdGF0ZSgpLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpB
c3luY0NhbGxUeXBlOjpET01UaW1lciwgdGltZXJJZCwgc2luZ2xlU2hvdCk7CisgICAgICAgIHdl
YkRlYnVnZ2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKGNvbnRleHQuZ2xvYmFsT2JqZWN0
KCksIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1l
cklkLCBzaW5nbGVTaG90KTsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QsIGZyYW1l
Rm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CmluZGV4IGRmM2VmNWU1YWFiYTdiM2QzZDJjZDhhYTJiMzNiYzY5NTQwNjJiZDEuLmU3Nzc0YWNj
ODRhN2YzMTlkMjBmMTdkZmZlMTEwNGNkZTlhODA4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CkBAIC0zMTMsNyArMzEzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JBbmltYXRpb24KICAgICBpZiAoIWFu
aW1hdGlvbikKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKIAot
ICAgIGF1dG8qIHN0YXRlID0gYW5pbWF0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4
ZWNTdGF0ZSgpOworICAgIGF1dG8qIHN0YXRlID0gYW5pbWF0aW9uLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgQVNTRVJU
KCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDcz
ZGVkMmQzYjUzZGNiN2NkMTljNGM1NjQzMjNkOTY4N2U5OGYwNzguLjVlNTY1YjNkNjE3MzdjZGEx
YWEwZWNmNjFhNmI3MDk1ZmQxYTBlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0yNDgsNyArMjQ4
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+PiBJbnNwZWN0b3JDYW52YXNBZ2UKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKIAotICAgIGF1dG8q
IHN0YXRlID0gaW5zcGVjdG9yQ2FudmFzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNT
dGF0ZSgpOworICAgIGF1dG8qIHN0YXRlID0gaW5zcGVjdG9yQ2FudmFzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgQVNT
RVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGFiMGRk
MjFjZDk1MDQ1ZmQ4MWM5MzZjYjZiOWVkMzQwMjM4ODQzMDEuLjMzYzU5NDdlNzQ0YTcwZDAyYjQ2
ZTE3M2M4NmE5M2E0MDMzMjJmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xODQ3LDI0ICsxODQ3LDI0IEBA
IFJlZjxQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JFdmVudExpc3RlbmVyCiAgICAgICAgICAgICBkb2N1bWVudCA9ICZkb3duY2Fz
dDxOb2RlPihldmVudFRhcmdldCkuZG9jdW1lbnQoKTsKIAogICAgICAgICBKU0M6OkpTT2JqZWN0
KiBoYW5kbGVyT2JqZWN0ID0gbnVsbHB0cjsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYyA9IG51bGxwdHI7CisgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG51bGxwdHI7CiAKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRMaXN0
ZW5lci5pc29sYXRlZFdvcmxkKCkudm0oKSk7CiAKICAgICAgICAgaWYgKGRvY3VtZW50KSB7CiAg
ICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNGdW5jdGlv
bigqZG9jdW1lbnQpOwotICAgICAgICAgICAgZXhlYyA9IGV4ZWNTdGF0ZUZyb21Ob2RlKHNjcmlw
dExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0ID0gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29y
bGQoKSwgZG9jdW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGhhbmRsZXJPYmplY3Qg
JiYgZXhlYykgewotICAgICAgICAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAg
ICBpZiAoaGFuZGxlck9iamVjdCAmJiBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIEpTQzo6
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICAgICAgSlNDOjpKU0Z1bmN0aW9u
KiBoYW5kbGVyRnVuY3Rpb24gPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4o
dm0sIGhhbmRsZXJPYmplY3QpOwogCiAgICAgICAgICAgICBpZiAoIWhhbmRsZXJGdW5jdGlvbikg
ewogICAgICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
IAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIGlzIG5vdCBhY3R1YWxseSBhIGZ1
bmN0aW9uLCBzZWUgaWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2Ug
YW5kIHVzZSB0aGF0LgotICAgICAgICAgICAgICAgIGF1dG8gaGFuZGxlRXZlbnRWYWx1ZSA9IGhh
bmRsZXJPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJo
YW5kbGVFdmVudCIpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZUV2ZW50VmFsdWUgPSBo
YW5kbGVyT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJoYW5kbGVFdmVudCIpKTsKIAogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjMzJlNWEzOTE0ZTc5ZjMwYmMx
NGU2OGRkNmNmYmQzMWIwMDU0OWRkLi4yNTY2ODE1YzNhZjBiYjFiNWQzNzI3ZGJjNDY4ZjMwZTNl
NjQ4MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpy
ZW1vdmVFdmVudEJyZWFrcG9pbnQoUAogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxIYW5kbGVFdmVudChFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcikKIHsKLSAgICBhdXRvIHN0YXRlID0gZXZlbnQu
dGFyZ2V0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CisgICAgYXV0
byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2Jh
bE9iamVjdCgpOwogICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29u
c3QgUmVnaXN0ZXJlZEV2CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFu
ZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0gICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOworICAgIGF1dG8gc3RhdGUg
PSBldmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3Qo
KTsKICAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5q
ZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYTE0NWUwNGVi
MjE4ZGU4YTQyZmY4OTgyOThiOGJlYTY4MmM0ZWRlMS4uNTVlNzI0YWI4M2RkZTYyNWE2NThiOGU2
NTFmNDA4NDY5YmE0YzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTM4OCw3ICszODgs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gY29udGV4dC5leGVjU3RhdGUoKTsKKyAgICAgICAg
YXV0byogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CiAKICAg
ICAgICAgYXV0byBrZXkgPSBtX2luamVjdGVkU2NyaXB0LndyYXBPYmplY3QodG9KUygqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmxleGljYWxHbG9iYWxPYmplY3QsIGN1cnNvci0+a2V5KCkpLCBTdHJp
bmcoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICgha2V5KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBUcmFuc2FjdGlvbkFjdGl2YXRvciBhY3RpdmF0b3IoaWRiVHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdDsKLSAgICAg
ICAgYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+ZXhlY1N0YXRlKCkgOiBudWxs
cHRyOworICAgICAgICBhdXRvKiBleGVjID0gY29udGV4dCgpID8gY29udGV4dCgpLT5nbG9iYWxP
YmplY3QoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkg
ewpAQCAtNzA1LDcgKzcwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBUcmFuc2FjdGlvbkFjdGl2
YXRvciBhY3RpdmF0b3IoaWRiVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gaWRiUmVxdWVzdDsKLSAgICAgICAgaWYgKGF1dG8qIGV4ZWMgPSBjb250ZXh0KCkg
PyBjb250ZXh0KCktPmV4ZWNTdGF0ZSgpIDogbnVsbHB0cikgeworICAgICAgICBpZiAoYXV0byog
ZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkgOiBudWxscHRyKSB7
CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9iamVjdFN0b3JlLT5jbGVhcigqZXhlYyk7
CiAgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAxYzYxMzU3YWZkY2Uz
NTBhZTIzYWJjMjA3ZjIyNzA0Yzk0ZWJmNGYzLi5iNDFiMWFiMmMzYjJmZTg3MWQ1YmQ4YjQ0OTEz
MjJmYjJlY2ExN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvV2ViRGVidWdnZXJBZ2VudC5jcHAKQEAgLTc5LDE0ICs3OSwxNCBAQCB2b2lkIFdlYkRlYnVn
Z2VyQWdlbnQ6OmRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3Qg
QXRvbVN0cmluZwogICAgIGlmIChtX3JlZ2lzdGVyZWRFdmVudExpc3RlbmVycy5jb250YWlucyhy
ZWdpc3RlcmVkTGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IHRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmV4ZWNTdGF0ZSgpOwotICAgIGlmICghc2NyaXB0U3RhdGUpCisgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gdGFyZ2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBpZGVu
dGlmaWVyID0gbV9uZXh0RXZlbnRMaXN0ZW5lcklkZW50aWZpZXIrKzsKICAgICBtX3JlZ2lzdGVy
ZWRFdmVudExpc3RlbmVycy5zZXQocmVnaXN0ZXJlZExpc3RlbmVyLmdldCgpLCBpZGVudGlmaWVy
KTsKIAotICAgIGRpZFNjaGVkdWxlQXN5bmNDYWxsKHNjcmlwdFN0YXRlLCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpFdmVudExpc3RlbmVyLCBpZGVudGlmaWVyLCByZWdp
c3RlcmVkTGlzdGVuZXItPmlzT25jZSgpKTsKKyAgICBkaWRTY2hlZHVsZUFzeW5jQ2FsbChnbG9i
YWxPYmplY3QsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkV2ZW50TGlz
dGVuZXIsIGlkZW50aWZpZXIsIHJlZ2lzdGVyZWRMaXN0ZW5lci0+aXNPbmNlKCkpOwogfQogCiB2
b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0
JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIsIGJvb2wgY2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDYxODcyNjhiZDI3
NTE4MWU5OGY0NWVlMGZhN2UxNmE3NTA5YmMxNjAuLjY5Zjk3ZmIyYjlhOTU5ZjFhZTRhOWFlNTk5
MjhiODM1MGRmM2Y4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTcxLDExICsxNzEsMTEg
QEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGludCBj
YWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW0KICAgICBpZiAoIWJyZWFrcG9pbnRzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRl
ID0gZG9jdW1lbnQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFzY3JpcHRTdGF0ZSkKKyAgICBhdXRv
KiBnbG9iYWxPYmplY3QgPSBkb2N1bWVudC5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIWdsb2Jh
bE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlkU2NoZWR1bGVBc3luY0NhbGwoc2Ny
aXB0U3RhdGUsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OlJlcXVlc3RB
bmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCwgdHJ1ZSk7CisgICAgZGlkU2NoZWR1bGVBc3luY0Nh
bGwoZ2xvYmFsT2JqZWN0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQsIHRydWUpOwogfQogCiB2b2lkIFBhZ2VE
ZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVk
aXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcAppbmRleCA4OTI0MTkwZWU2MjBmMTU1MTRhMjUwZDc2MmUyYmU0YTE5
MzMwNjNkLi5mNjRkNTc1MzBiN2I2MTcwZWFhZGU5MjNlNDA5YjViZGRlYTcyZTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcApAQCAtNTUsOCArNTUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9i
YWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDdhYTcyYjZhNGM2NGNhOWY2NzgxNTBkMDZhMzJkMDI5NGM1MDg4MjUu
LjNhZTM1YzY3YTMwMzQxZDdlZTEyZjZjYzU2ODhkZTFlYzc4YzYzZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRl
YnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcm
CiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNH
bG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlckdsb2Jh
bFNjb3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCmluZGV4IGZmZmQzY2VhMjE1MzU5ZmU2ZjBlZDFlZGQ3NzJkMTZiNzA5NTFkZWIuLmFh
NThhMWYwZDdhODFiMDA2ODFmNjY4YTlmYzRhNzI1ODZiMTNkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGlt
ZUFnZW50LmNwcApAQCAtNTgsOCArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKG1fd29y
a2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlckdsb2JhbFNjb3Bl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJU
ZXN0LmNwcAppbmRleCBhMjA3OTE4YWZmYjU5YmJiOGVjZGU5NDFhOWQ5NmRiNDhhOWFhM2VjLi5m
MjkyZDBmNWE2NzIwODJmNjY5NjE3MmM1MDI2ZGIzOTlhMDdkNzgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJYUlRlc3QuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV2ViWFJUZXN0OjpzaW11
bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QKIAogICAgICAgICBWZWN0b3I8WFJSZWZlcmVuY2VTcGFjZVR5cGU+IGZlYXR1cmVzOwogICAg
ICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRGZWF0dXJlcykgewotICAgICAgICAgICAgaWYgKGF1dG8q
IGdsb2JhbE9iamVjdCA9IGNvbnRleHQuZXhlY1N0YXRlKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9iamVjdCgpKSB7CiAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBwb3J0ZWRGZWF0dXJlcy52YWx1ZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHJlZmVyZW5jZVNwYWNlVHlwZSA9IHBh
cnNlRW51bWVyYXRpb248WFJSZWZlcmVuY2VTcGFjZVR5cGU+KCpnbG9iYWxPYmplY3QsIGZlYXR1
cmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKHJlZmVyZW5jZVNw
YWNlVHlwZS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29y
ZVRlc3RTdXBwb3J0LmNwcAppbmRleCBiZjQ5NDNkNzZkNTQ2Mzk0ZmZiNWJkMmE1MzE0NTYzZDVh
ZDA0MjQwLi43ODBjNWExMjU2MjcwNzRmMjE3NDY1OGRhZmEzZTBlNWU2Y2U0MjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC0y
MjIsMTEgKzIyMiwxMSBAQCB2b2lkIHNldHVwTmV3bHlDcmVhdGVkU2VydmljZVdvcmtlcih1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgaWYgKCFzY3JpcHQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgc3RhdGUgPSAqZ2xvYmFsU2NvcGUuZXhl
Y1N0YXRlKCk7Ci0gICAgICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKmdsb2JhbFNjb3BlLmdsb2JhbE9iamVjdCgpOworICAgICAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKICAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQtPndvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcigpOwotICAgICAgICBjb250ZXh0V3JhcHBlci0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBJbnRlcm5hbHM6OmludGVybmFsc0lkKSwgdG9KUygmc3Rh
dGUsIGNvbnRleHRXcmFwcGVyLCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGUoaWRlbnRp
ZmllcikpKTsKKyAgICAgICAgY29udGV4dFdyYXBwZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgSW50ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvSlMoJmdsb2JhbE9i
amVjdCwgY29udGV4dFdyYXBwZXIsIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZShpZGVu
dGlmaWVyKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA2ZjliZjgzZTkzMGRkMTY1ZDhhMzMw
NDcwNTJhZDU1ZDIyZmFmYTc4Li5kMjMyMWVjNDI2YWVjNjg4MjM5MDVmNmNkNmFiNzg5MDA2NTkz
NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6
OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
cm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggMTdkZjVlMWYzY2YwNjU3MTRiY2VmNzVlZDg1ZmNhZDUzOGY2
ZTgwYS4uYzJjMTU0MWMxNTgwMjNiYjZmYWE1ZTc1MzIyNmY2MWM3ZWZmOGM0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtMjY3LDQgKzI2Nyw5IEBAIGJvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWlu
YXRpbmdFeGVjdXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRp
b247CiB9CiAKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpn
bG9iYWxTY29wZVdyYXBwZXIoKQoreworICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDZkNDNjZTVmOWZmZDJh
NzBhZjBiZjZlNWFlZTU0Y2Q4ZmFjNzJmMmUuLmUxMzhjYTYzODY2MWNhOGY0YjMxODIyM2Q3ZGVk
OTE3MTFmMDA1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7CisKICAgICB2b2lkIGZv
cmJpZEV4ZWN1dGlvbigpOwogICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsK
IAo=
</data>
<flag name="commit-queue"
          id="428106"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411793</attachid>
            <date>2020-10-19 13:58:42 -0700</date>
            <delta_ts>2020-10-19 14:08:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019135841.patch</filename>
            <type>text/plain</type>
            <size>42884</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiY2FmMTc5NjJkZGEy
MTRkZTNkZWEzMWE3ODYzMDhjMTMzNWQ1My4uMWE0YTQyOGZkODY0YzBlMzE1NmIzZDQyZTcyNGZk
Yjk4MjM4M2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBleGVjU3RhdGVG
cm9tKigpIGZ1bmN0aW9uIHdpdGggZ2xvYmFsT2JqZWN0KCkgb3ZlcmxvYWRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbnRyb2R1Y2UgZ2xvYmFsT2JqZWN0
KCkgb3ZlcmxvYWRzIHRvIHJlcGxhY2UgZXhpc3RpbmcgZXhlY1N0YXRlRnJvbSooKSBmdW5jdGlv
bnMuCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzdGVwIHRvIHByb21vdGUgY29kZSBzaGFyaW5n
LiBJZGVhbGx5LCBjb2RlIHdvdWxkIG5vdCBoYXZlIHRvCisgICAgICAgIGRpZmZlcmVudGlhdGUg
d29ya2VycyBmcm9tIHdvcmtsZXRzIGFzIG11Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3RhdGVG
cm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxT
Y29wZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDIwLTEw
LTE5ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNjUyMzEpOiBPdmVybGF5OiBub2RlIGluZm8gc29tZXRpbWVz
IGRyYXdzIG9uIG9uZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCA1MGJiYzc4YjcwMzFmMjdiY2YzMjJjMjU0NWY5MGUwNTc0YjZmNmQ5
Li5lNzU1Yjg4ZmViNDc5MGMyYzYxMzg2OTU2Y2JmNzg1YjAyYTkyZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5UmVxdWVzdD4gY29udmVydEFuZFZhbGlkYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIk1pc3NpbmcgcGF5bWVudCBtZXRob2QgZGF0YS4iIH07CiAKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGNvbnRleHQudm0oKSk7Ci0gICAgYXV0byBhcHBs
ZVBheVJlcXVlc3QgPSBjb252ZXJ0RGljdGlvbmFyeTxBcHBsZVBheVJlcXVlc3Q+KCpjb250ZXh0
LmV4ZWNTdGF0ZSgpLCBkYXRhKTsKKyAgICBhdXRvIGFwcGxlUGF5UmVxdWVzdCA9IGNvbnZlcnRE
aWN0aW9uYXJ5PEFwcGxlUGF5UmVxdWVzdD4oKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGRhdGEp
OwogICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwogCkBAIC0zMDUsNyArMzA1LDcgQEAgRXhj
ZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiBBcHBsZVBheVBheW1lbnRIYW4KICAgICAgICAgaWYgKHNlcmlhbGl6ZWRNb2RpZmllckRhdGFb
aV0uaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmV4ZWNTdGF0ZSgpOworICAgICAgICBhdXRv
JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRvY3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSk7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICB7CkBAIC00MDMsNyAr
NDAzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0
ZVBheW1lbnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamUKIAogICAgIGF1dG8mIGNvbnRleHQgPSAq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoY29udGV4dC52bSgpKTsKLSAgICBhdXRvIGFwcGxlUGF5RXJyb3JzID0gY29u
dmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8QXBwbGVQYXlFcnJvcj4+PigqY29udGV4dC5l
eGVjU3RhdGUoKSwgcGF5bWVudE1ldGhvZEVycm9ycyk7CisgICAgYXV0byBhcHBsZVBheUVycm9y
cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNv
bnRleHQuZ2xvYmFsT2JqZWN0KCksIHBheW1lbnRNZXRob2RFcnJvcnMpOwogICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9OwogCkBAIC00NDIsNyArNDQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6bWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6
SlNWYWwKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCiAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZTsKLSAgICBhdXRvIG1lcmNoYW50U2Vzc2lvbiA9IFBheW1lbnRNZXJj
aGFudFNlc3Npb246OmZyb21KUygqZG9jdW1lbnQoKS5leGVjU3RhdGUoKSwgYXNPYmplY3QobWVy
Y2hhbnRTZXNzaW9uVmFsdWUpLCBlcnJvck1lc3NhZ2UpOworICAgIGF1dG8gbWVyY2hhbnRTZXNz
aW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKCpkb2N1bWVudCgpLmdsb2JhbE9i
amVjdCgpLCBhc09iamVjdChtZXJjaGFudFNlc3Npb25WYWx1ZSksIGVycm9yTWVzc2FnZSk7CiAg
ICAgaWYgKCFtZXJjaGFudFNlc3Npb24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGM2NDA3MGFkMzBkZTBkY2JhZGY0NTk5ODFhNjExZGIx
MzE1NTA0NjEuLjZmYTQwMzAxNmEwZTI5NzMzNTE0Y2IxZjU5N2E2MWJlYzdjYzhjOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zNjYsNyArMzY2LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIC8vIEZJWE1FOiBmb3IgZWZmaWNpZW5j
eSwgd2Ugc2hvdWxkIGxvYWQgYmxvYnMgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdo
IHRoZSByZWFkYWJsZVN0cmVhbSBwYXRoLgogICAgIGlmIChyZXNwb25zZS0+aXNCbG9iQm9keSgp
KSB7Ci0gICAgICAgIGF1dG8gc3RyZWFtT3JFeGNlcHRpb24gPSByZXNwb25zZS0+cmVhZGFibGVT
dHJlYW0oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXhlY1N0YXRlKCkpOworICAgICAgICBh
dXRvIHN0cmVhbU9yRXhjZXB0aW9uID0gcmVzcG9uc2UtPnJlYWRhYmxlU3RyZWFtKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KHN0cmVhbU9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSkgewogICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3Qoc3RyZWFtT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCmluZGV4IGVjMGYwNTNjNTcxYzNjMGY1Y2QyNWEyM2Q4NTU3NDM2ODQzNmNiZWEuLmI4
NGJjYTcyNWU4NDZkZmVhZTAzOTMwOThlYTJlMzc2YTE0MDBmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29uCiAKICAgICAvLyBJZiBsb2FkaW5nLCBsZXQncyBjcmVh
dGUgYSBzdHJlYW0gc28gdGhhdCBkYXRhIGlzIHRlZWQgb24gYm90aCBjbG9uZXMuCiAgICAgaWYg
KGlzTG9hZGluZygpICYmICFtX3JlYWRhYmxlU3RyZWFtU291cmNlKSB7Ci0gICAgICAgIGF1dG8g
dm9pZE9yRXhjZXB0aW9uID0gY3JlYXRlUmVhZGFibGVTdHJlYW0oKmNvbnRleHQuZXhlY1N0YXRl
KCkpOworICAgICAgICBhdXRvIHZvaWRPckV4Y2VwdGlvbiA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFt
KCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHZvaWRPckV4
Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gdm9pZE9yRXhjZXB0
aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcAppbmRleCA2N2NhOTk0ZjcwZTY3ODU5OWNmMjZlYzA4ZWJkZDQzYWIzNjM3ZmQ1
Li45YWM4OGViZmQ3Nzc4YmQ3ZDFkMzEyZmM3NjA4ZjFlYzlhYTExZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSlNDOjpWTSYgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQ6OnZtKCkKICAgICByZXR1cm4gKm1fdm07CiB9CiAKLUpTQzo6
SlNHbG9iYWxPYmplY3QmIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQorSlND
OjpKU0dsb2JhbE9iamVjdCYgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6Omdsb2JhbE9iamVjdCgp
CiB7CiAgICAgaW5pdGlhbGl6ZVZNKCk7CiAgICAgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKaW5kZXggOGQ1OTIwZTQ5NmY4N2Mw
MThhNDA0ZTY3NDE4YzE1ZDFmYjJhMmYyNC4uNWVjYWMxOGJjMDI5ZjI3ZDY0YmM0YTFiMzNkMTZl
ODFkNTUwYmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIH5JREJTZXJpYWxpemF0aW9uQ29udGV4dCgpOwogCiAgICAg
SlNDOjpWTSYgdm0oKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUoKTsKKyAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKTsKIAogcHJpdmF0ZToKICAgICBJ
REJTZXJpYWxpemF0aW9uQ29udGV4dChQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAppbmRleCBjMDNhMjNlMjg0ZDRkNTZkZjkyM2RkOTUzNjEwZDlmOGY5YzRjMzcxLi5h
MDU3MmRiMTAyZDg3OTBiYWVkMTJmMzIxZWY0YWFiYTI4OTgzN2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpk
ZWxldGVSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmIGlucHV0UmFuZ2UpCiAKIElEQkVycm9y
IE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9y
VmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIG1faW5mbywga2V5RGF0
YSwgdmFsdWUpOworICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBtX2luZm8sIGtleURh
dGEsIHZhbHVlKTsKICAgICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBp
bmRleEtleXMsIHZhbHVlKTsKIH0KIApAQCAtMzQyLDEyICszNDIsMTIgQEAgSURCRXJyb3IgTWVt
b3J5T2JqZWN0U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUlu
ZGV4JiBpbmRleCkKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXphdGlvbkNvbnRl
eHQtPnZtKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6ICptX2tleVZhbHVl
U3RvcmUpIHsKLSAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNW
YWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgaXRlcmF0b3IudmFsdWUp
OworICAgICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1f
c2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpdGVyYXRvci52YWx1ZSk7CiAg
ICAgICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyB9OwogCiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgICAgICBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRl
KCksIGluZGV4LmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGl0
ZXJhdG9yLmtleSk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6
YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaW5kZXguaW5mbygpLCBqc1ZhbHVlLCBpbmRl
eEtleSwgbV9pbmZvLmtleVBhdGgoKSwgaXRlcmF0b3Iua2V5KTsKIAogICAgICAgICBpZiAoaW5k
ZXhLZXkuaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggMzk5NjgyNWY1ZjVmZjdlMzZjNTAyNjU2MDc4ZTkzMzgyMzVh
ZTdiMC4uNThjYWQwNTg1ZDIxZDlmNzdkNzhhMmM4YWE2NmZiNzYyODczZjdiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTIwODYsMTIgKzIwODYsMTIgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVPbmVJbmRleEZvckFkZFJlY29yZChJREJP
YmplY3RTdG9yZUluZm8mIG8KIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXph
dGlvbkNvbnRleHQtPnZtKCkpOwogCi0gICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgdmFsdWUp
OworICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJp
YWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIHZhbHVlKTsKICAgICBpZiAoanNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogCiAg
ICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBpbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwg
b2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKyAgICBnZW5lcmF0ZUluZGV4S2V5Rm9y
VmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIGluZm8sIGpzVmFs
dWUsIGluZGV4S2V5LCBvYmplY3RTdG9yZUluZm8ua2V5UGF0aCgpLCBrZXkpOwogCiAgICAgaWYg
KGluZGV4S2V5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNzc3YzY3NjM5MjFhM2FiYWUwZTE1OTc2ZDUxZDEyZjU5
ZTY4NDM0OS4uM2M4YWZiZTBmYTA5OGNiMjA0NmYwZjllZjVkYWZlY2JkMmQxYmQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXkKICAgICAgICAgdXNlZEtleSA9IGtleURhdGE7CiAKICAgICAvLyBHZW5lcmF0ZSBp
bmRleCBrZXlzIHVwIGZyb250IGZvciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgotICAgIGF1
dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3Jl
LT5zZXJpYWxpemF0aW9uQ29udGV4dCgpLmV4ZWNTdGF0ZSgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1
c2VkS2V5LCB2YWx1ZSk7CisgICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFw
Rm9yVmFsdWUobV9iYWNraW5nU3RvcmUtPnNlcmlhbGl6YXRpb25Db250ZXh0KCkuZ2xvYmFsT2Jq
ZWN0KCksICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKIAogICAgIGlmIChvdmVy
d3JpdGVNb2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3
cml0ZSkgewogICAgICAgICBib29sIGtleUV4aXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggZTcx
MzViZWM2MDNmOWI1M2E5ZDIyYTQ0M2FmMzU4MjBmMWNhY2I5OS4uZmQzNmE5MmY0YzBkNTNjODFi
MzRlMzhmMzRlMzZlNzdkYTI2YjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTMwOCw3ICszMDgs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaQogc3RhdGljIEV4Y2VwdGlvbk9yPEpTQzo6SlNW
YWx1ZT4gcGFyc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoY29udGV4
dC52bSgpKTsKLSAgICBKU0M6OkpTVmFsdWUgZGF0YSA9IEpTT05QYXJzZShjb250ZXh0LmV4ZWNT
dGF0ZSgpLCBzdHJpbmcpOworICAgIEpTQzo6SlNWYWx1ZSBkYXRhID0gSlNPTlBhcnNlKGNvbnRl
eHQuZ2xvYmFsT2JqZWN0KCksIHN0cmluZyk7CiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwogICAg
IHJldHVybiBkYXRhOwpAQCAtMzM3LDggKzMzNyw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50
UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0
CiAKICAgICAgICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwogICAgICAgICBpZiAocGF5bWVudE1l
dGhvZC5kYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShkb2N1bWVudC5leGVjU3RhdGUoKS0+dm0oKSk7Ci0gICAgICAgICAgICBzZXJpYWxpemVkRGF0
YSA9IEpTT05TdHJpbmdpZnkoZG9jdW1lbnQuZXhlY1N0YXRlKCksIHBheW1lbnRNZXRob2QuZGF0
YS5nZXQoKSwgMCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShkb2N1bWVudC5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisgICAgICAgICAgICBzZXJpYWxpemVk
RGF0YSA9IEpTT05TdHJpbmdpZnkoZG9jdW1lbnQuZ2xvYmFsT2JqZWN0KCksIHBheW1lbnRNZXRo
b2QuZGF0YS5nZXQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fTsKICAgICAgICAgICAgIApAQCAtMzU3LDcgKzM1Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXlt
ZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBW
ZWN0CiAgICAgaWYgKHRvdGFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
dG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgYXV0byBkZXRhaWxzUmVzdWx0
ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaWxzKCpkb2N1bWVudC5leGVjU3RhdGUoKSwgZGV0
YWlscywgb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhv
ZElkZW50aWZpZXI6Ok5vKTsKKyAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBjaGVja0FuZENhbm9u
aWNhbGl6ZURldGFpbHMoKmRvY3VtZW50Lmdsb2JhbE9iamVjdCgpLCBkZXRhaWxzLCBvcHRpb25z
LnJlcXVlc3RTaGlwcGluZywgU2hvdWxkVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcjo6
Tm8pOwogICAgIGlmIChkZXRhaWxzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gZGV0YWlsc1Jlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKQEAgLTY0Nyw3ICs2NDcsNyBA
QCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24g
cmVhc29uKQogCiAgICAgYXV0byYgY29udGV4dCA9ICptX2RldGFpbHNQcm9taXNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShjb250ZXh0LnZtKCkpOwotICAgIGF1dG8gZGV0YWlsc1VwZGF0ZSA9IGNvbnZlcnREaWN0
aW9uYXJ5PFBheW1lbnREZXRhaWxzVXBkYXRlPigqY29udGV4dC5leGVjU3RhdGUoKSwgbV9kZXRh
aWxzUHJvbWlzZS0+cmVzdWx0KCkpOworICAgIGF1dG8gZGV0YWlsc1VwZGF0ZSA9IGNvbnZlcnRE
aWN0aW9uYXJ5PFBheW1lbnREZXRhaWxzVXBkYXRlPigqY29udGV4dC5nbG9iYWxPYmplY3QoKSwg
bV9kZXRhaWxzUHJvbWlzZS0+cmVzdWx0KCkpOwogICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogICAgICAgICByZXR1cm47CkBAIC02NTksNyArNjU5LDcgQEAgdm9p
ZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRlUmVhc29uIHJlYXNv
bikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGV0YWlsc1Jlc3VsdCA9IGNo
ZWNrQW5kQ2Fub25pY2FsaXplRGV0YWlscygqY29udGV4dC5leGVjU3RhdGUoKSwgZGV0YWlsc1Vw
ZGF0ZSwgbV9vcHRpb25zLnJlcXVlc3RTaGlwcGluZywgU2hvdWxkVmFsaWRhdGVQYXltZW50TWV0
aG9kSWRlbnRpZmllcjo6WWVzKTsKKyAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBjaGVja0FuZENh
bm9uaWNhbGl6ZURldGFpbHMoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGRldGFpbHNVcGRhdGUs
IG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhvZElk
ZW50aWZpZXI6Olllcyk7CiAgICAgaWYgKGRldGFpbHNSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgYWJvcnRXaXRoRXhjZXB0aW9uKGRldGFpbHNSZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcAppbmRleCBiNDdhNDU3YzU0NDZkMjIzNTJhYjBjMTBlNjZmMjdkZDFhN2Qz
MmIzLi41YmE0N2UyZDlhMDY1NWVhZGE0MzU1ZDgwN2FhMjUyNWU2ZGI2MzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwg
WFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYCiAgICAgICAgIGlmICghZGV2aWNlIHx8ICFkZXZp
Y2UtPnN1cHBvcnRzKG1vZGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IHByb3RlY3RlZERvY3VtZW50LT5leGVjU3RhdGUoKTsKKyAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gcHJvdGVjdGVkRG9jdW1lbnQtPmdsb2JhbE9iamVjdCgpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKaW5kZXggNjc5MTdmOTU1ODE0MGMxMzg3YjkzZDNkZjMwMTEyYzA2YzMwYzZiMS4uMzJk
ODhiMTg2YWVmOTQ1ZmVjZmFkYjc4M2M5YjU2ZDM0NzlkMzVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OnRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChEb2N1bWVudCYKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBBU1NFUlQoJmRvY3VtZW50ID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudC5leGVjU3RhdGUo
KTsKKyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRvY3VtZW50Lmdsb2JhbE9iamVj
dCgpOwogICAgIGF1dG8gZWxlbWVudCA9IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91
c2x5KGRvY3VtZW50LCB2bSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9jb25zdHJ1Y3Rvci5nZXQo
KSwgbG9jYWxOYW1lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIWVsZW1lbnQpOwogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGFlMDk3ZWViOGMwMGE4OWZi
Nzk3NGQyMTYwMmJlZDdhYjJlY2Y0ZWEuLjg2NzRmMmRmYjgxNmQ2ZWE0Y2IwMzc1ZmM2Y2IyYTU0
OTNiM2U3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTIyNCwxMCArMjI0LDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SlNET01HbG9iYWxPYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoaW5oZXJpdHM8SlNXb3JrZXJHbG9iYWxTY29wZUJh
c2U+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKICAgICBpZiAoaW5oZXJpdHM8SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
Pih2bSgpKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UqPih0aGlzKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotI2VuZGlmCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGluaGVyaXRzPEpTSURCU2VyaWFsaXphdGlv
bkdsb2JhbE9iamVjdD4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNJREJT
ZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0Kj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCA4NTUw
YWQ4YTRiZDg0YjI2OWI0Njg0NDhmMTU5MTM2N2FjMjAwOWE4Li5iODEzM2JkYTdmODM0YmJjYTQw
NmIwMWQwNDAwZDM5ZWYxNjg2OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgpAQCAt
ODEsNyArODEsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJh
bWUqIGZyYW1lKQogICAgIHJldHVybiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7CiB9CiAKLUpTQzo6SlNHbG9iYWxP
YmplY3QqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5v
ZGUpCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTMsMjMgKzkzLDE2IEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZy
b21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGZy
YW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpOwogfQogCi1KU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdl
KQorSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKIH0KIAotSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7
Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIoKTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxl
ci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZy
b21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2Nv
cGUpCi17Ci0gICAgaWYgKCF3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCktPndv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKLX0KLSNlbmRpZgotCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCAwNGYxYmE0ZTMwZGU0MTAwMzNmZTc0MzRm
MWQ4OTg1ODg2NzUyMTFkLi4wNWQwMzMxODA3OTUwZWUzMTAwZmY1YjIxMTgxNDAyMDQxOWM0NDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTQ0LDEwICs0
NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0jaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi1jbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7Ci0jZW5kaWYKK2Ns
YXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBET01XaW5kb3cqIGRvbVdpbmRvd0Zy
b21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwogRnJhbWUqIGZyYW1lRnJvbUV4ZWNT
dGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkBAIC01NSwxMSArNTIsOCBAQCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KgogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUo
RnJhbWUqKTsKIAotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3Jh
cHBlcldvcmxkJiwgTm9kZSopOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwotSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
Jik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYpOwotI2Vu
ZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiwg
Tm9kZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3ZWI3
OGUuLmI0NmQ4YTdlZDkxYjlmMzg2OTM4MGEyNzVjMDk3MDZkYTczNDIxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0yNzksNCArMjc5LDkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hE
ZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKICAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpLCBKU0M6OkRlYnVnZ2VyOjpUZXJtaW5hdGlu
Z0RlYnVnZ2luZ1Nlc3Npb24pOwogfQogCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIoKQoreworICAgIHJldHVybiB3b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IGUzOTAxODBmNTcxZjllMWUzNWJjOTIzYjFkNzcxZDRiOTVjZWRhNDQuLmZiOWUyN2Q3YWI3
MDlkMTUwOTcwNGEwZTk0ZDhjMmFiZDgxMTRmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU3LDYgKzU3LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7
CiAgICAgfQogCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkg
ZmluYWw7CisKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJp
bmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogICAgIHZvaWQgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCA1MmM3OGY2MWY0MGVkZWM2ZjY0ZjI4MmFmYTdkMTVkYzIzM2ZlMGU3Li5mNzY5OWQ1NTNj
NzgwYmEwYmYzMjcxNzdkMjQzNWFiZDdjYzljOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODMsMTAgKzQ4Myw4IEBAIEpTQzo6Vk0m
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKICAgICAgICAgcmV0dXJuIGNvbW1vblZNKCk7
CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykpCiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwotI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0
aGlzKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMp
LnNjcmlwdCgpLT52bSgpOwotI2VuZGlmCiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBjb21tb25WTSgpOwpAQCAtNTI0LDIwICs1MjIsMTMgQEAgYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotSlNDOjpKU0dsb2JhbE9iamVjdCogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZXhlY1N0YXRlKCkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6Omdsb2JhbE9iamVjdCgpCiB7Ci0gICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykpIHsK
LSAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKTsK
LSAgICAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAgICAgICByZXR1cm4g
ZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKSA6IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLnBhZ2UoKSk7CiAKLSAgICBpZiAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJH
bG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykpCi0gICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25j
YXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Z2xvYmFsT2JqZWN0KGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykp
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1ZTkwZjQxYjJm
ZGJmOWZlZTdmYjQwMzRiZmQwYzExODBiZWJmOGYwLi43NjdkNDVlOTFiNzRmMWIzYzZkYmZmZDNh
OTgzNjY4MzdlMjcxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBlbnN1
cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdygpOwogICAgIH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
b21haW5Gb3JDYWNoZVBhcnRpdGlvbihTdHJpbmcmJiBkb21haW4pIHsgbV9kb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbiA9IFdURk1vdmUoZG9tYWluKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5k
ZXggODFiZDY4YTUzYzQ2OWY0NGRhYzNjYTlmZWM2MTMzZTA5ZmFiZWQ4ZS4uN2U2YTE0MjY5ZTVi
NzcyNmE4ODJhODkxOWQxZGI0NjE5NjI5M2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBA
IC0yNzcsNyArMjc3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gQmxvYjo6
c3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWMKICAgICAgICAgVW5pcXVl
UmVmPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwogICAgIH07CiAKLSAgICByZXR1cm4gUmVh
ZGFibGVTdHJlYW06OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5leGVjU3RhdGUoKSwg
YWRvcHRSZWYoKm5ldyBCbG9iU3RyZWFtU291cmNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICp0
aGlzKSkpOworICAgIHJldHVybiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0Lmdsb2JhbE9iamVjdCgpLCBhZG9wdFJlZigqbmV3IEJsb2JTdHJlYW1Tb3VyY2Uo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKnRoaXMpKSk7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggZjRkYTM4ODYzYTkzZWIzNmRhNzY1MDJiZjUzYjEyYjg0ODEyNTI3Yi4uYTllYmY3
YWQyZDhlMmJhN2I3OTRjMjM4OGVmNDMzOTk4NDdkZjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yMjgsNyArMjI4LDcg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRl
cigpCiAKICAgICAgICAgICAgIGRvY3VtZW50KCktPmV2ZW50TG9vcCgpLnBlcmZvcm1NaWNyb3Rh
c2tDaGVja3BvaW50KCk7CiAKLSAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IHJlYWN0aW9uU3RhY2soZG9jdW1lbnQoKS0+ZXhlY1N0YXRlKCkpOworICAgICAgICAgICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgcmVhY3Rpb25TdGFjayhkb2N1bWVudCgpLT5nbG9iYWxP
YmplY3QoKSk7CiAgICAgICAgICAgICBhdXRvJiBlbGVtZW50SW50ZXJmYWNlID0gY29uc3RydWN0
aW9uRGF0YS0+ZWxlbWVudEludGVyZmFjZS5nZXQoKTsKICAgICAgICAgICAgIGF1dG8gbmV3RWxl
bWVudCA9IGVsZW1lbnRJbnRlcmZhY2UuY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjaygqZG9j
dW1lbnQoKSwgY29uc3RydWN0aW9uRGF0YS0+bmFtZSk7CiAgICAgICAgICAgICBtX3RyZWVCdWls
ZGVyLT5kaWRDcmVhdGVDdXN0b21PckZhbGxiYWNrRWxlbWVudChXVEZNb3ZlKG5ld0VsZW1lbnQp
LCAqY29uc3RydWN0aW9uRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGQ3YWJkNWRhNWQxYzM5NzA4ZWM0OGMxMGM5
ZjZlMTIzMTI3NjJkZjEuLjE4YjkwNTNhMWFlMmUyODYzMjM0NWQyNzIwNDRlOTJlNmMxNGVkOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmRp
c2Nvbm5lY3RDbGllbnQoKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRkU2VsZlRv
R2xvYmFsT2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGF1dG8m
IGxleGljYWxHbG9iYWxPYmplY3QgPSAqZXhlY1N0YXRlRnJvbVBhZ2Uod29ybGQsIG1fZnJvbnRl
bmRQYWdlKTsKKyAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVjdCh3
b3JsZCwgbV9mcm9udGVuZFBhZ2UpOwogICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVudCwgVmVjdG9yPENv
bnRleHRNZW51SXRlbQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIEFTU0VSVChtX2Zy
b250ZW5kUGFnZSk7CiAKLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmV4ZWNTdGF0
ZUZyb21QYWdlKGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9udGVuZFBhZ2UpOworICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9u
dGVuZFBhZ2UpOwogICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAg
IGF1dG8gdmFsdWUgPSBsZXhpY2FsR2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEki
KSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMWQ2NWE0NTI3NTlmZDAyNTMy
MjMyZmZmYmZiNzAzNzZmMGFmZWY5MC4uMDJhYmUxNjY0MTQyZGJlYTlhYmZmYzAwZWMzNzUzYmQx
NGUzNjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEZldGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQQogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQs
IFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewogICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKQotICAgICAgICB3ZWJEZWJ1Z2dl
ckFnZW50LT5kaWRTY2hlZHVsZUFzeW5jQ2FsbChjb250ZXh0LmV4ZWNTdGF0ZSgpLCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpET01UaW1lciwgdGltZXJJZCwgc2luZ2xl
U2hvdCk7CisgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCksIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5
cGU6OkRPTVRpbWVyLCB0aW1lcklkLCBzaW5nbGVTaG90KTsKIAogICAgIGlmIChhdXRvKiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkK
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQs
IHNpbmdsZVNob3QsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1h
dGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IGRmM2VmNWU1YWFiYTdiM2QzZDJjZDhhYTJiMzNiYzY5
NTQwNjJiZDEuLmU3Nzc0YWNjODRhN2YzMTlkMjBmMTdkZmZlMTEwNGNkZTlhODA4MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0zMTMsNyArMzEzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JBbmlt
YXRpb24KICAgICBpZiAoIWFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGVycm9yU3RyaW5nKTsKIAotICAgIGF1dG8qIHN0YXRlID0gYW5pbWF0aW9uLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOworICAgIGF1dG8qIHN0YXRlID0gYW5pbWF0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8gaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihz
dGF0ZSk7CiAgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IDczZGVkMmQzYjUzZGNiN2NkMTljNGM1NjQzMjNkOTY4N2U5OGYwNzgu
LjVlNTY1YjNkNjE3MzdjZGExYWEwZWNmNjFhNmI3MDk1ZmQxYTBlZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JDYW52YXNBZ2UKICAgICBpZiAo
IWluc3BlY3RvckNhbnZhcykKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3Ry
aW5nKTsKIAotICAgIGF1dG8qIHN0YXRlID0gaW5zcGVjdG9yQ2FudmFzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOworICAgIGF1dG8qIHN0YXRlID0gaW5zcGVjdG9yQ2Fu
dmFzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8g
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZv
cihzdGF0ZSk7CiAgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IGFiMGRkMjFjZDk1MDQ1ZmQ4MWM5MzZjYjZiOWVkMzQwMjM4ODQzMDEuLjMz
YzU5NDdlNzQ0YTcwZDAyYjQ2ZTE3M2M4NmE5M2E0MDMzMjJmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0x
ODQ3LDI0ICsxODQ3LDI0IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyCiAgICAgICAgICAgICBk
b2N1bWVudCA9ICZkb3duY2FzdDxOb2RlPihldmVudFRhcmdldCkuZG9jdW1lbnQoKTsKIAogICAg
ICAgICBKU0M6OkpTT2JqZWN0KiBoYW5kbGVyT2JqZWN0ID0gbnVsbHB0cjsKLSAgICAgICAgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlYyA9IG51bGxwdHI7CisgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CiAKICAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCkudm0oKSk7CiAKICAgICAgICAg
aWYgKGRvY3VtZW50KSB7CiAgICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVu
ZXIuZW5zdXJlSlNGdW5jdGlvbigqZG9jdW1lbnQpOwotICAgICAgICAgICAgZXhlYyA9IGV4ZWNT
dGF0ZUZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwor
ICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KHNjcmlwdExp
c3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGhhbmRsZXJPYmplY3QgJiYgZXhlYykgewotICAgICAgICAgICAgSlNDOjpWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgICAgICBpZiAoaGFuZGxlck9iamVjdCAmJiBnbG9iYWxPYmplY3QpIHsK
KyAgICAgICAgICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICAg
ICAgSlNDOjpKU0Z1bmN0aW9uKiBoYW5kbGVyRnVuY3Rpb24gPSBKU0M6OmpzRHluYW1pY0Nhc3Q8
SlNDOjpKU0Z1bmN0aW9uKj4odm0sIGhhbmRsZXJPYmplY3QpOwogCiAgICAgICAgICAgICBpZiAo
IWhhbmRsZXJGdW5jdGlvbikgewogICAgICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIGlz
IG5vdCBhY3R1YWxseSBhIGZ1bmN0aW9uLCBzZWUgaWYgaXQgaW1wbGVtZW50cyB0aGUgRXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2UgYW5kIHVzZSB0aGF0LgotICAgICAgICAgICAgICAgIGF1dG8gaGFu
ZGxlRXZlbnRWYWx1ZSA9IGhhbmRsZXJPYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGhh
bmRsZUV2ZW50VmFsdWUgPSBoYW5kbGVyT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJoYW5kbGVFdmVudCIpKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBj
MzJlNWEzOTE0ZTc5ZjMwYmMxNGU2OGRkNmNmYmQzMWIwMDU0OWRkLi4yNTY2ODE1YzNhZjBiYjFi
NWQzNzI3ZGJjNDY4ZjMwZTNlNjQ4MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQoUAogCiB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudChFdmVudCYgZXZlbnQsIGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcikKIHsKLSAgICBh
dXRvIHN0YXRlID0gZXZlbnQudGFyZ2V0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXhl
Y1N0YXRlKCk7CisgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDcg
KzI2MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50
KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0gICAgYXV0byBzdGF0
ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgp
OworICAgIGF1dG8gc3RhdGUgPSBldmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKaW5kZXggYTE0NWUwNGViMjE4ZGU4YTQyZmY4OTgyOThiOGJlYTY4MmM0ZWRlMS4uNTVlNzI0
YWI4M2RkZTYyNWE2NThiOGU2NTFmNDA4NDY5YmE0YzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gY29udGV4dC5leGVj
U3RhdGUoKTsKKyAgICAgICAgYXV0byogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGNvbnRleHQuZ2xv
YmFsT2JqZWN0KCk7CiAKICAgICAgICAgYXV0byBrZXkgPSBtX2luamVjdGVkU2NyaXB0LndyYXBP
YmplY3QodG9KUygqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmxleGljYWxHbG9iYWxPYmplY3QsIGN1
cnNvci0+a2V5KCkpLCBTdHJpbmcoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICgha2V5KQpAQCAtNDYy
LDcgKzQ2Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBUcmFuc2FjdGlvbkFjdGl2YXRvciBhY3Rp
dmF0b3IoaWRiVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
aWRiUmVxdWVzdDsKLSAgICAgICAgYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+
ZXhlY1N0YXRlKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiBleGVjID0gY29udGV4dCgpID8g
Y29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pbmRl
eE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JP
YmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAg
ICAgaWYgKCFpZGJJbmRleCkgewpAQCAtNzA1LDcgKzcwNSw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBUcmFuc2FjdGlvbkFjdGl2YXRvciBhY3RpdmF0b3IoaWRiVHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdDsKLSAgICAgICAgaWYgKGF1dG8q
IGV4ZWMgPSBjb250ZXh0KCkgPyBjb250ZXh0KCktPmV4ZWNTdGF0ZSgpIDogbnVsbHB0cikgewor
ICAgICAgICBpZiAoYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+Z2xvYmFsT2Jq
ZWN0KCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9iamVjdFN0
b3JlLT5jbGVhcigqZXhlYyk7CiAgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRp
b24oKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCAxYzYxMzU3YWZkY2UzNTBhZTIzYWJjMjA3ZjIyNzA0Yzk0ZWJmNGYzLi5iNDFiMWFiMmMz
YjJmZTg3MWQ1YmQ4YjQ0OTEzMjJmYjJlY2ExN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViRGVidWdnZXJBZ2VudC5jcHAKQEAgLTc5LDE0ICs3OSwx
NCBAQCB2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZwogICAgIGlmIChtX3JlZ2lzdGVyZWRFdmVudExp
c3RlbmVycy5jb250YWlucyhyZWdpc3RlcmVkTGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IHRhcmdldC5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOwotICAgIGlmICghc2NyaXB0U3RhdGUp
CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGFyZ2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGludCBpZGVudGlmaWVyID0gbV9uZXh0RXZlbnRMaXN0ZW5lcklkZW50aWZpZXIr
KzsKICAgICBtX3JlZ2lzdGVyZWRFdmVudExpc3RlbmVycy5zZXQocmVnaXN0ZXJlZExpc3RlbmVy
LmdldCgpLCBpZGVudGlmaWVyKTsKIAotICAgIGRpZFNjaGVkdWxlQXN5bmNDYWxsKHNjcmlwdFN0
YXRlLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpFdmVudExpc3RlbmVy
LCBpZGVudGlmaWVyLCByZWdpc3RlcmVkTGlzdGVuZXItPmlzT25jZSgpKTsKKyAgICBkaWRTY2hl
ZHVsZUFzeW5jQ2FsbChnbG9iYWxPYmplY3QsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5j
Q2FsbFR5cGU6OkV2ZW50TGlzdGVuZXIsIGlkZW50aWZpZXIsIHJlZ2lzdGVyZWRMaXN0ZW5lci0+
aXNPbmNlKCkpOwogfQogCiB2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVFdmVudExp
c3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDYxODcyNjhiZDI3NTE4MWU5OGY0NWVlMGZhN2UxNmE3NTA5YmMxNjAuLjY5Zjk3ZmIy
YjlhOTU5ZjFhZTRhOWFlNTk5MjhiODM1MGRmM2Y4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApA
QCAtMTcxLDExICsxNzEsMTEgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkUmVxdWVzdEFu
aW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW0KICAgICBpZiAoIWJy
ZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHNjcmlwdFN0YXRlID0gZG9jdW1lbnQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFzY3Jp
cHRTdGF0ZSkKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBkb2N1bWVudC5nbG9iYWxPYmplY3Qo
KTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlkU2No
ZWR1bGVBc3luY0NhbGwoc2NyaXB0U3RhdGUsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5j
Q2FsbFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCwgdHJ1ZSk7CisgICAg
ZGlkU2NoZWR1bGVBc3luY0NhbGwoZ2xvYmFsT2JqZWN0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpBc3luY0NhbGxUeXBlOjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQsIHRydWUp
OwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGlu
dCBjYWxsYmFja0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcAppbmRleCA4OTI0MTkwZWU2MjBmMTU1
MTRhMjUwZDc2MmUyYmU0YTE5MzMwNjNkLi5mNjRkNTc1MzBiN2I2MTcwZWFhZGU5MjNlNDA5YjVi
ZGRlYTcyZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcApAQCAtNTUsOCArNTUsNyBAQCBJbmpl
Y3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDdhYTcyYjZhNGM2NGNhOWY2NzgxNTBk
MDZhMzJkMDI5NGM1MDg4MjUuLjNhZTM1YzY3YTMwMzQxZDdlZTEyZjZjYzU2ODhkZTFlYzc4YzYz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02MCw4ICs2MCw3IEBAIEluamVj
dGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90
b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAg
IH0KIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJv
bVdvcmtlckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAg
cmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9i
amVjdChtX3dvcmtlckdsb2JhbFNjb3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGZmZmQzY2VhMjE1MzU5ZmU2ZjBlZDFlZGQ3
NzJkMTZiNzA5NTFkZWIuLmFhNThhMWYwZDdhODFiMDA2ODFmNjY4YTlmYzRhNzI1ODZiMTNkY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNTgsOCArNTgsNyBAQCBJbmplY3RlZFNj
cmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6
RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAot
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gZXhlY1N0YXRlRnJvbVdvcmtl
ckdsb2JhbFNjb3BlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJu
IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCht
X3dvcmtlckdsb2JhbFNjb3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcAppbmRleCBhMjA3OTE4YWZmYjU5YmJiOGVjZGU5NDFh
OWQ5NmRiNDhhOWFhM2VjLi5mMjkyZDBmNWE2NzIwODJmNjY5NjE3MmM1MDI2ZGIzOTlhMDdkNzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZv
aWQgV2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QKIAogICAgICAgICBWZWN0b3I8WFJSZWZlcmVuY2VTcGFjZVR5
cGU+IGZlYXR1cmVzOwogICAgICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRGZWF0dXJlcykgewotICAg
ICAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQuZXhlY1N0YXRlKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9iamVj
dCgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBwb3J0
ZWRGZWF0dXJlcy52YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHJlZmVy
ZW5jZVNwYWNlVHlwZSA9IHBhcnNlRW51bWVyYXRpb248WFJSZWZlcmVuY2VTcGFjZVR5cGU+KCpn
bG9iYWxPYmplY3QsIGZlYXR1cmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMu
YXBwZW5kKHJlZmVyZW5jZVNwYWNlVHlwZS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCBiZjQ5NDNkNzZkNTQ2Mzk0
ZmZiNWJkMmE1MzE0NTYzZDVhZDA0MjQwLi43ODBjNWExMjU2MjcwNzRmMjE3NDY1OGRhZmEzZTBl
NWU2Y2U0MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVU
ZXN0U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwCkBAIC0yMjIsMTEgKzIyMiwxMSBAQCB2b2lkIHNldHVwTmV3bHlDcmVhdGVk
U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAg
aWYgKCFzY3JpcHQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgc3RhdGUg
PSAqZ2xvYmFsU2NvcGUuZXhlY1N0YXRlKCk7Ci0gICAgICAgIGF1dG8mIHZtID0gc3RhdGUudm0o
KTsKKyAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmdsb2JhbFNjb3BlLmdsb2JhbE9iamVj
dCgpOworICAgICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICAgICAgYXV0byogY29udGV4dFdyYXBwZXIgPSBzY3Jp
cHQtPndvcmtlckdsb2JhbFNjb3BlV3JhcHBlcigpOwotICAgICAgICBjb250ZXh0V3JhcHBlci0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBJbnRlcm5hbHM6OmludGVy
bmFsc0lkKSwgdG9KUygmc3RhdGUsIGNvbnRleHRXcmFwcGVyLCBTZXJ2aWNlV29ya2VySW50ZXJu
YWxzOjpjcmVhdGUoaWRlbnRpZmllcikpKTsKKyAgICAgICAgY29udGV4dFdyYXBwZXItPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSW50ZXJuYWxzOjppbnRlcm5hbHNJ
ZCksIHRvSlMoJmdsb2JhbE9iamVjdCwgY29udGV4dFdyYXBwZXIsIFNlcnZpY2VXb3JrZXJJbnRl
cm5hbHM6OmNyZWF0ZShpZGVudGlmaWVyKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA2Zjli
ZjgzZTkzMGRkMTY1ZDhhMzMwNDcwNTJhZDU1ZDIyZmFmYTc4Li5kMjMyMWVjNDI2YWVjNjg4MjM5
MDVmNmNkNmFiNzg5MDA2NTkzNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpT
Qzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxTY29wZVdyYXBwZXIoKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTdkZjVlMWYzY2YwNjU3MTRi
Y2VmNzVlZDg1ZmNhZDUzOGY2ZTgwYS4uYzJjMTU0MWMxNTgwMjNiYjZmYWE1ZTc1MzIyNmY2MWM3
ZWZmOGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtMjY3LDQgKzI2Nyw5IEBAIGJvb2wgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2lz
VGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKK0pTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIoKQoreworICAgIHJldHVybiB3b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDZkNDNjZTVmOWZmZDJhNzBhZjBiZjZlNWFlZTU0Y2Q4ZmFjNzJmMmUuLmUxMzhjYTYzODY2
MWNhOGY0YjMxODIyM2Q3ZGVkOTE3MTFmMDA1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtNTksNiArNTksOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAg
ICAgfQogCisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmlu
YWw7CisKICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgIGJvb2wgaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411794</attachid>
            <date>2020-10-19 14:08:39 -0700</date>
            <delta_ts>2020-10-19 16:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217912-20201019140838.patch</filename>
            <type>text/plain</type>
            <size>42885</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiY2FmMTc5NjJkZGEy
MTRkZTNkZWEzMWE3ODYzMDhjMTMzNWQ1My4uMmNhZmQxMjM2ZjE5MzVlNzE5MjZlZDUzNDJiMWE5
N2MxNTFmY2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBleGVjU3RhdGVG
cm9tKigpIGZ1bmN0aW9ucyB3aXRoIGdsb2JhbE9iamVjdCgpIG92ZXJsb2FkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTEyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW50cm9kdWNlIGdsb2JhbE9iamVj
dCgpIG92ZXJsb2FkcyB0byByZXBsYWNlIGV4aXN0aW5nIGV4ZWNTdGF0ZUZyb20qKCkgZnVuY3Rp
b25zLgorICAgICAgICBUaGlzIGlzIGEgZmlyc3Qgc3RlcCB0byBwcm9tb3RlIGNvZGUgc2hhcmlu
Zy4gSWRlYWxseSwgY29kZSB3b3VsZCBub3QgaGF2ZSB0bworICAgICAgICBkaWZmZXJlbnRpYXRl
IHdvcmtlcnMgZnJvbSB3b3JrbGV0cyBhcyBtdWNoIGFzIHBvc3NpYmxlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRl
RnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFs
U2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZh
bCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3JhcHBlcik6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAyMC0x
MC0xOSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogUkVHUkVTU0lPTihyMjY1MjMxKTogT3ZlcmxheTogbm9kZSBpbmZvIHNvbWV0aW1l
cyBkcmF3cyBvbiBvbmUgbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50
SGFuZGxlci5jcHAKaW5kZXggNTBiYmM3OGI3MDMxZjI3YmNmMzIyYzI1NDVmOTBlMDU3NGI2ZjZk
OS4uZTc1NWI4OGZlYjQ3OTBjMmM2MTM4Njk1NmNiZjc4NWIwMmE5MmVhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVJlcXVlc3Q+IGNvbnZlcnRBbmRWYWxpZGF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJNaXNzaW5nIHBheW1lbnQgbWV0aG9kIGRhdGEuIiB9OwogCiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShjb250ZXh0LnZtKCkpOwotICAgIGF1dG8gYXBw
bGVQYXlSZXF1ZXN0ID0gY29udmVydERpY3Rpb25hcnk8QXBwbGVQYXlSZXF1ZXN0PigqY29udGV4
dC5leGVjU3RhdGUoKSwgZGF0YSk7CisgICAgYXV0byBhcHBsZVBheVJlcXVlc3QgPSBjb252ZXJ0
RGljdGlvbmFyeTxBcHBsZVBheVJlcXVlc3Q+KCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpLCBkYXRh
KTsKICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKIApAQCAtMzA1LDcgKzMwNSw3IEBAIEV4
Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4gQXBwbGVQYXlQYXltZW50SGFuCiAgICAgICAgIGlmIChzZXJpYWxpemVkTW9kaWZpZXJEYXRh
W2ldLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5leGVjU3RhdGUoKTsKKyAgICAgICAgYXV0
byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmdsb2JhbE9iamVjdCgpOwogICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCkpOwogICAgICAgICBKU0M6OkpTVmFsdWUgZGF0YTsKICAgICAgICAgewpAQCAtNDAzLDcg
KzQwMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVQYXltZW50TWV0aG9kRXJyb3JzKEpTQzo6SlNPYmplCiAKICAgICBhdXRvJiBjb250ZXh0ID0g
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGNvbnRleHQudm0oKSk7Ci0gICAgYXV0byBhcHBsZVBheUVycm9ycyA9IGNv
bnZlcnQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNvbnRleHQu
ZXhlY1N0YXRlKCksIHBheW1lbnRNZXRob2RFcnJvcnMpOworICAgIGF1dG8gYXBwbGVQYXlFcnJv
cnMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxBcHBsZVBheUVycm9yPj4+KCpj
b250ZXh0Lmdsb2JhbE9iamVjdCgpLCBwYXltZW50TWV0aG9kRXJyb3JzKTsKICAgICBpZiAodGhy
b3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfTsKIApAQCAtNDQyLDcgKzQ0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6Om1lcmNoYW50VmFsaWRhdGlvbkNvbXBsZXRlZChKU0M6
OkpTVmFsCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAogICAgIFN0
cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYXV0byBtZXJjaGFudFNlc3Npb24gPSBQYXltZW50TWVy
Y2hhbnRTZXNzaW9uOjpmcm9tSlMoKmRvY3VtZW50KCkuZXhlY1N0YXRlKCksIGFzT2JqZWN0KG1l
cmNoYW50U2Vzc2lvblZhbHVlKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBhdXRvIG1lcmNoYW50U2Vz
c2lvbiA9IFBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUygqZG9jdW1lbnQoKS5nbG9iYWxP
YmplY3QoKSwgYXNPYmplY3QobWVyY2hhbnRTZXNzaW9uVmFsdWUpLCBlcnJvck1lc3NhZ2UpOwog
ICAgIGlmICghbWVyY2hhbnRTZXNzaW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBjNjQwNzBhZDMwZGUwZGNiYWRmNDU5OTgxYTYxMWRi
MTMxNTUwNDYxLi42ZmE0MDMwMTZhMGUyOTczMzUxNGNiMWY1OTdhNjFiZWM3Y2M4YzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzY2LDcgKzM2Niw3
IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICAvLyBGSVhNRTogZm9yIGVmZmljaWVu
Y3ksIHdlIHNob3VsZCBsb2FkIGJsb2JzIGRpcmVjdGx5IGluc3RlYWQgb2YgZ29pbmcgdGhyb3Vn
aCB0aGUgcmVhZGFibGVTdHJlYW0gcGF0aC4KICAgICBpZiAocmVzcG9uc2UtPmlzQmxvYkJvZHko
KSkgewotICAgICAgICBhdXRvIHN0cmVhbU9yRXhjZXB0aW9uID0gcmVzcG9uc2UtPnJlYWRhYmxl
U3RyZWFtKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpKTsKKyAgICAgICAg
YXV0byBzdHJlYW1PckV4Y2VwdGlvbiA9IHJlc3BvbnNlLT5yZWFkYWJsZVN0cmVhbSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGlmIChVTkxJS0VM
WShzdHJlYW1PckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KHN0cmVhbU9yRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCBlYzBmMDUzYzU3MWMzYzBmNWNkMjVhMjNkODU1NzQzNjg0MzZjYmVhLi5i
ODRiY2E3MjVlODQ2ZGZlYWUwMzkzMDk4ZWEyZTM3NmExNDAwZjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBA
QCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNsb25lKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbgogCiAgICAgLy8gSWYgbG9hZGluZywgbGV0J3MgY3Jl
YXRlIGEgc3RyZWFtIHNvIHRoYXQgZGF0YSBpcyB0ZWVkIG9uIGJvdGggY2xvbmVzLgogICAgIGlm
IChpc0xvYWRpbmcoKSAmJiAhbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewotICAgICAgICBhdXRv
IHZvaWRPckV4Y2VwdGlvbiA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFtKCpjb250ZXh0LmV4ZWNTdGF0
ZSgpKTsKKyAgICAgICAgYXV0byB2b2lkT3JFeGNlcHRpb24gPSBjcmVhdGVSZWFkYWJsZVN0cmVh
bSgqY29udGV4dC5nbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSh2b2lkT3JF
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIHZvaWRPckV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
Q29udGV4dC5jcHAKaW5kZXggNjdjYTk5NGY3MGU2Nzg1OTljZjI2ZWMwOGViZGQ0M2FiMzYzN2Zk
NS4uOWFjODhlYmZkNzc3OGJkN2QxZDMxMmZjNzYwOGYxZWM5YWExMWQzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIEpTQzo6Vk0mIElE
QlNlcmlhbGl6YXRpb25Db250ZXh0Ojp2bSgpCiAgICAgcmV0dXJuICptX3ZtOwogfQogCi1KU0M6
OkpTR2xvYmFsT2JqZWN0JiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkKK0pT
Qzo6SlNHbG9iYWxPYmplY3QmIElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3Qo
KQogewogICAgIGluaXRpYWxpemVWTSgpOwogICAgIHJldHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCmluZGV4IDhkNTkyMGU0OTZmODdj
MDE4YTQwNGU2NzQxOGMxNWQxZmIyYTJmMjQuLjVlY2FjMThiYzAyOWYyN2Q2NGJjNGExYjMzZDE2
ZTgxZDU1MGJjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5oCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKTsKIAogICAg
IEpTQzo6Vk0mIHZtKCk7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlKCk7Cisg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCk7CiAKIHByaXZhdGU6CiAgICAg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQoUEFMOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKaW5kZXggYzAzYTIzZTI4NGQ0ZDU2ZGY5MjNkZDk1MzYxMGQ5ZjhmOWM0YzM3MS4u
YTA1NzJkYjEwMmQ4NzkwYmFlZDEyZjMyMWVmNGFhYmEyODk4MzdjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6
ZGVsZXRlUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogCiBJREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFs
dWUmIHZhbHVlKQogewotICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZv
clZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBtX2luZm8sIGtleURh
dGEsIHZhbHVlKTsKKyAgICBhdXRvIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JW
YWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgbV9pbmZvLCBrZXlE
YXRhLCB2YWx1ZSk7CiAgICAgcmV0dXJuIGFkZFJlY29yZCh0cmFuc2FjdGlvbiwga2V5RGF0YSwg
aW5kZXhLZXlzLCB2YWx1ZSk7CiB9CiAKQEAgLTM0MiwxMiArMzQyLDEyIEBAIElEQkVycm9yIE1l
bW9yeU9iamVjdFN0b3JlOjpwb3B1bGF0ZUluZGV4V2l0aEV4aXN0aW5nUmVjb3JkcyhNZW1vcnlJ
bmRleCYgaW5kZXgpCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250
ZXh0LT52bSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgaXRlcmF0b3IgOiAqbV9rZXlWYWx1
ZVN0b3JlKSB7Ci0gICAgICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pT
VmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIGl0ZXJhdG9yLnZhbHVl
KTsKKyAgICAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZSht
X3NlcmlhbGl6YXRpb25Db250ZXh0LT5nbG9iYWxPYmplY3QoKSwgaXRlcmF0b3IudmFsdWUpOwog
ICAgICAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgfTsKIAogICAgICAgICBJbmRleEtleSBpbmRleEtleTsKLSAgICAgICAg
Z2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0
ZSgpLCBpbmRleC5pbmZvKCksIGpzVmFsdWUsIGluZGV4S2V5LCBtX2luZm8ua2V5UGF0aCgpLCBp
dGVyYXRvci5rZXkpOworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobV9zZXJpYWxp
emF0aW9uQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIGluZGV4LmluZm8oKSwganNWYWx1ZSwgaW5k
ZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGl0ZXJhdG9yLmtleSk7CiAKICAgICAgICAgaWYgKGlu
ZGV4S2V5LmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDM5OTY4MjVmNWY1ZmY3ZTM2YzUwMjY1NjA3OGU5MzM4MjM1
YWU3YjAuLjU4Y2FkMDU4NWQyMWQ5Zjc3ZDc4YTJjOGFhNjZmYjc2Mjg3M2Y3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMDg2LDEyICsyMDg2LDEyIEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhGb3JBZGRSZWNvcmQoSURC
T2JqZWN0U3RvcmVJbmZvJiBvCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6
YXRpb25Db250ZXh0LT52bSgpKTsKIAotICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWVUb0pTVmFsdWUobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIHZhbHVl
KTsKKyAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCB2YWx1ZSk7CiAgICAgaWYgKGpzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIAog
ICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3Nl
cmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgaW5mbywganNWYWx1ZSwgaW5kZXhLZXks
IG9iamVjdFN0b3JlSW5mby5rZXlQYXRoKCksIGtleSk7CisgICAgZ2VuZXJhdGVJbmRleEtleUZv
clZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBpbmZvLCBqc1Zh
bHVlLCBpbmRleEtleSwgb2JqZWN0U3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKIAogICAgIGlm
IChpbmRleEtleS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDc3N2M2NzYzOTIxYTNhYmFlMGUxNTk3NmQ1MWQxMmY1
OWU2ODQzNDkuLjNjOGFmYmUwZmEwOThjYjIwNDZmMGY5ZWY1ZGFmZWNiZDJkMWJkMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNzU4LDcgKzc1OCw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5CiAgICAgICAgIHVzZWRLZXkgPSBrZXlEYXRhOwogCiAgICAgLy8gR2VuZXJhdGUg
aW5kZXgga2V5cyB1cCBmcm9udCBmb3IgbW9yZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KLSAgICBh
dXRvIGluZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX2JhY2tpbmdTdG9y
ZS0+c2VyaWFsaXphdGlvbkNvbnRleHQoKS5leGVjU3RhdGUoKSwgKm9iamVjdFN0b3JlSW5mbywg
dXNlZEtleSwgdmFsdWUpOworICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1h
cEZvclZhbHVlKG1fYmFja2luZ1N0b3JlLT5zZXJpYWxpemF0aW9uQ29udGV4dCgpLmdsb2JhbE9i
amVjdCgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCB2YWx1ZSk7CiAKICAgICBpZiAob3Zl
cndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6Tm9PdmVy
d3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGU3
MTM1YmVjNjAzZjliNTNhOWQyMmE0NDNhZjM1ODIwZjFjYWNiOTkuLmZkMzZhOTJmNGMwZDUzYzgx
YjM0ZTM4ZjM0ZTM2ZTc3ZGEyNmI4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0zMDgsNyArMzA4
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8U3RyaW5nLCBWZWN0b3I8U3RyaW5n
Pj4+IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWkKIHN0YXRpYyBFeGNlcHRpb25PcjxKU0M6OkpT
VmFsdWU+IHBhcnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGNvbnRl
eHQudm0oKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGRhdGEgPSBKU09OUGFyc2UoY29udGV4dC5leGVj
U3RhdGUoKSwgc3RyaW5nKTsKKyAgICBKU0M6OkpTVmFsdWUgZGF0YSA9IEpTT05QYXJzZShjb250
ZXh0Lmdsb2JhbE9iamVjdCgpLCBzdHJpbmcpOwogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKICAg
ICByZXR1cm4gZGF0YTsKQEAgLTMzNyw4ICszMzcsOCBAQCBFeGNlcHRpb25PcjxSZWY8UGF5bWVu
dFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVmVj
dAogCiAgICAgICAgIFN0cmluZyBzZXJpYWxpemVkRGF0YTsKICAgICAgICAgaWYgKHBheW1lbnRN
ZXRob2QuZGF0YSkgewotICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZG9jdW1lbnQuZXhlY1N0YXRlKCktPnZtKCkpOwotICAgICAgICAgICAgc2VyaWFsaXplZERh
dGEgPSBKU09OU3RyaW5naWZ5KGRvY3VtZW50LmV4ZWNTdGF0ZSgpLCBwYXltZW50TWV0aG9kLmRh
dGEuZ2V0KCksIDApOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZG9jdW1lbnQuZ2xvYmFsT2JqZWN0KCktPnZtKCkpOworICAgICAgICAgICAgc2VyaWFsaXpl
ZERhdGEgPSBKU09OU3RyaW5naWZ5KGRvY3VtZW50Lmdsb2JhbE9iamVjdCgpLCBwYXltZW50TWV0
aG9kLmRhdGEuZ2V0KCksIDApOwogICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH07CiAgICAgICAgICAgICAKQEAgLTM1Nyw3ICszNTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8UGF5
bWVudFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
VmVjdAogICAgIGlmICh0b3RhbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IHRvdGFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gZGV0YWlsc1Jlc3Vs
dCA9IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWlscygqZG9jdW1lbnQuZXhlY1N0YXRlKCksIGRl
dGFpbHMsIG9wdGlvbnMucmVxdWVzdFNoaXBwaW5nLCBTaG91bGRWYWxpZGF0ZVBheW1lbnRNZXRo
b2RJZGVudGlmaWVyOjpObyk7CisgICAgYXV0byBkZXRhaWxzUmVzdWx0ID0gY2hlY2tBbmRDYW5v
bmljYWxpemVEZXRhaWxzKCpkb2N1bWVudC5nbG9iYWxPYmplY3QoKSwgZGV0YWlscywgb3B0aW9u
cy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXI6
Ok5vKTsKICAgICBpZiAoZGV0YWlsc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGRldGFpbHNSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC02NDcsNyArNjQ3LDcg
QEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRlUmVhc29u
IHJlYXNvbikKIAogICAgIGF1dG8mIGNvbnRleHQgPSAqbV9kZXRhaWxzUHJvbWlzZS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoY29udGV4dC52bSgpKTsKLSAgICBhdXRvIGRldGFpbHNVcGRhdGUgPSBjb252ZXJ0RGlj
dGlvbmFyeTxQYXltZW50RGV0YWlsc1VwZGF0ZT4oKmNvbnRleHQuZXhlY1N0YXRlKCksIG1fZGV0
YWlsc1Byb21pc2UtPnJlc3VsdCgpKTsKKyAgICBhdXRvIGRldGFpbHNVcGRhdGUgPSBjb252ZXJ0
RGljdGlvbmFyeTxQYXltZW50RGV0YWlsc1VwZGF0ZT4oKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCks
IG1fZGV0YWlsc1Byb21pc2UtPnJlc3VsdCgpKTsKICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRp
b24oKSkgewogICAgICAgICBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHZv
aWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKFVwZGF0ZVJlYXNvbiByZWFz
b24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBj
aGVja0FuZENhbm9uaWNhbGl6ZURldGFpbHMoKmNvbnRleHQuZXhlY1N0YXRlKCksIGRldGFpbHNV
cGRhdGUsIG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1l
dGhvZElkZW50aWZpZXI6Olllcyk7CisgICAgYXV0byBkZXRhaWxzUmVzdWx0ID0gY2hlY2tBbmRD
YW5vbmljYWxpemVEZXRhaWxzKCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpLCBkZXRhaWxzVXBkYXRl
LCBtX29wdGlvbnMucmVxdWVzdFNoaXBwaW5nLCBTaG91bGRWYWxpZGF0ZVBheW1lbnRNZXRob2RJ
ZGVudGlmaWVyOjpZZXMpOwogICAgIGlmIChkZXRhaWxzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgIGFib3J0V2l0aEV4Y2VwdGlvbihkZXRhaWxzUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKaW5kZXggYjQ3YTQ1N2M1NDQ2ZDIyMzUyYWIwYzEwZTY2ZjI3ZGQxYTdk
MzJiMy4uNWJhNDdlMmQ5YTA2NTVlYWRhNDM1NWQ4MDdhYTI1MjVlNmRiNjM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIFdlYlhSU3lzdGVtOjpyZXF1ZXN0U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgWAogICAgICAgICBpZiAoIWRldmljZSB8fCAhZGV2
aWNlLT5zdXBwb3J0cyhtb2RlKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
KiBnbG9iYWxPYmplY3QgPSBwcm90ZWN0ZWREb2N1bWVudC0+ZXhlY1N0YXRlKCk7CisgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHByb3RlY3RlZERvY3VtZW50LT5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwCmluZGV4IDY3OTE3Zjk1NTgxNDBjMTM4N2I5M2QzZGYzMDExMmMwNmMzMGM2YjEuLjMy
ZDg4YjE4NmFlZjk0NWZlY2ZhZGI3ODNjOWI1NmQzNDc5ZDM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApA
QCAtOTksNyArOTksNyBAQCBSZWZQdHI8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
Ojp0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9jdW1lbnQmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgQVNTRVJUKCZkb2N1bWVudCA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQuZXhlY1N0YXRl
KCk7CisgICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudC5nbG9iYWxPYmpl
Y3QoKTsKICAgICBhdXRvIGVsZW1lbnQgPSBjb25zdHJ1Y3RDdXN0b21FbGVtZW50U3luY2hyb25v
dXNseShkb2N1bWVudCwgdm0sIGxleGljYWxHbG9iYWxPYmplY3QsIG1fY29uc3RydWN0b3IuZ2V0
KCksIGxvY2FsTmFtZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFlbGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhZTA5N2VlYjhjMDBhODlm
Yjc5NzRkMjE2MDJiZWQ3YWIyZWNmNGVhLi44Njc0ZjJkZmI4MTZkNmVhNGNiMDM3NWZjNmNiMmE1
NDkzYjNlNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCkBAIC0yMjQsMTAgKzIyNCw4IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IEpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlPih2bSgpKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZSo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0jaWYgRU5BQkxFKENT
U19QQUlOVElOR19BUEkpCiAgICAgaWYgKGluaGVyaXRzPEpTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZT4odm0oKSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlKj4odGhpcyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSNlbmRpZgogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChpbmhlcml0czxKU0lEQlNlcmlhbGl6YXRp
b25HbG9iYWxPYmplY3Q+KHZtKCkpKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTSURC
U2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCo+KHRoaXMpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggODU1
MGFkOGE0YmQ4NGIyNjliNDY4NDQ4ZjE1OTEzNjdhYzIwMDlhOC4uYjgxMzNiZGE3ZjgzNGJiY2E0
MDZiMDFkMDQwMGQzOWVmMTY4NjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKQEAg
LTgxLDcgKzgxLDcgQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0YXRlKEZy
YW1lKiBmcmFtZSkKICAgICByZXR1cm4gZnJhbWUtPndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94
eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygpOwogfQogCi1KU0M6OkpTR2xvYmFs
T2JqZWN0KiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBOb2RlKiBu
b2RlKQorSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTkzLDIzICs5MywxNiBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVG
cm9tTm9kZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQogICAgIHJldHVybiBm
cmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKIH0KIAotSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUGFnZSogcGFn
ZSkKK0pTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBQYWdlKiBwYWdlKQogewogICAgIHJldHVybiBwYWdlID8gcGFnZS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51bGxwdHI7CiB9CiAKLUpTQzo6SlNHbG9i
YWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQog
ewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyKCk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xs
ZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVG
cm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNj
b3BlKQotewotICAgIGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci19Ci0jZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggMDRmMWJhNGUzMGRlNDEwMDMzZmU3NDM0
ZjFkODk4NTg4Njc1MjExZC4uMDVkMDMzMTgwNzk1MGVlMzEwMGZmNWIyMTE4MTQwMjA0MTljNDQw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCwxMCAr
NDQsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotI2VuZGlmCitj
bGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogRE9NV2luZG93KiBkb21XaW5kb3dG
cm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVj
U3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwpAQCAtNTUsMTEgKzUyLDggQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpK
U0dsb2JhbE9iamVjdCoKIAogSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0YXRl
KEZyYW1lKik7CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdy
YXBwZXJXb3JsZCYsIE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKLUpTQzo6SlNHbG9i
YWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29w
ZSYpOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmKTsKLSNl
bmRpZgorSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYs
IE5vZGUqKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dChET01XcmFwcGVyV29ybGQmLCBQYWdlKik7CitKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5N2Vi
NzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1YzA5NzA2ZGE3MzQyMWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNo
RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAgICAgZGVidWdnZXItPmRldGFjaCht
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRp
bmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkKK3sKKyAgICByZXR1cm4gd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2IxZDc3MWQ0Yjk1Y2VkYTQ0Li5mYjllMjdkN2Fi
NzA5ZDE1MDk3MDRhMGU5NGQ4YzJhYmQ4MTE0ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgp
OwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigp
IGZpbmFsOworCiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3Ry
aW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKICAgICB2b2lkIGV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxw
dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNmZTBlNy4uZjc2OTlkNTUz
Yzc4MGJhMGJmMzI3MTc3ZDI0MzVhYmQ3Y2M5YzhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgzLDEwICs0ODMsOCBAQCBKU0M6OlZN
JiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgp
OwogICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigq
dGhpcykpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlz
KS5zY3JpcHQoKS0+dm0oKTsKLSNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gY29tbW9uVk0oKTsKQEAgLTUyNCwyMCArNTIyLDEzIEBAIGJvb2wg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmV4ZWNTdGF0ZSgpCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKSB7
Ci0gICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqdGhpcyk7
Ci0gICAgICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKLSAgICAgICAgcmV0dXJu
IGZyYW1lID8gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSkgOiBudWxscHRyOwotICAgIH0KKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5wYWdlKCkpOwogCi0gICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSk7Ci0jaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRo
aXMpKQotICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShkb3du
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSk7Ci0jZW5kaWYKKyAgICBpZiAoaXM8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
Omdsb2JhbE9iamVjdChkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMp
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggNWU5MGY0MWIy
ZmRiZjlmZWU3ZmI0MDM0YmZkMGMxMTgwYmViZjhmMC4uNzY3ZDQ1ZTkxYjc0ZjFiM2M2ZGJmZmQz
YTk4MzY2ODM3ZTI3MWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCkBAIC0yNDIsNyArMjQyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZW5z
dXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3coKTsKICAgICB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0
RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oU3RyaW5nJiYgZG9tYWluKSB7IG1fZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24gPSBXVEZNb3ZlKGRvbWFpbik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmlu
ZGV4IDgxYmQ2OGE1M2M0NjlmNDRkYWMzY2E5ZmVjNjEzM2UwOWZhYmVkOGUuLjdlNmExNDI2OWU1
Yjc3MjZhODgyYTg5MTlkMWRiNDYxOTYyOTNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApA
QCAtMjc3LDcgKzI3Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSZWFkYWJsZVN0cmVhbT4+IEJsb2I6
OnN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjCiAgICAgICAgIFVuaXF1
ZVJlZjxGaWxlUmVhZGVyTG9hZGVyPiBtX2xvYWRlcjsKICAgICB9OwogCi0gICAgcmV0dXJuIFJl
YWRhYmxlU3RyZWFtOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZXhlY1N0YXRlKCks
IGFkb3B0UmVmKCpuZXcgQmxvYlN0cmVhbVNvdXJjZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAq
dGhpcykpKTsKKyAgICByZXR1cm4gUmVhZGFibGVTdHJlYW06OmNyZWF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5nbG9iYWxPYmplY3QoKSwgYWRvcHRSZWYoKm5ldyBCbG9iU3RyZWFtU291cmNl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICp0aGlzKSkpOwogfQogCiAjaWYgQVNTRVJUX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IGY0ZGEzODg2M2E5M2ViMzZkYTc2NTAyYmY1M2IxMmI4NDgxMjUyN2IuLmE5ZWJm
N2FkMmQ4ZTJiYTdiNzk0YzIzODhlZjQzMzk5ODQ3ZGY2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxk
ZXIoKQogCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5ldmVudExvb3AoKS5wZXJmb3JtTWljcm90
YXNrQ2hlY2twb2ludCgpOwogCi0gICAgICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayByZWFjdGlvblN0YWNrKGRvY3VtZW50KCktPmV4ZWNTdGF0ZSgpKTsKKyAgICAgICAgICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIHJlYWN0aW9uU3RhY2soZG9jdW1lbnQoKS0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgICAgICAgICAgYXV0byYgZWxlbWVudEludGVyZmFjZSA9IGNvbnN0cnVj
dGlvbkRhdGEtPmVsZW1lbnRJbnRlcmZhY2UuZ2V0KCk7CiAgICAgICAgICAgICBhdXRvIG5ld0Vs
ZW1lbnQgPSBlbGVtZW50SW50ZXJmYWNlLmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soKmRv
Y3VtZW50KCksIGNvbnN0cnVjdGlvbkRhdGEtPm5hbWUpOwogICAgICAgICAgICAgbV90cmVlQnVp
bGRlci0+ZGlkQ3JlYXRlQ3VzdG9tT3JGYWxsYmFja0VsZW1lbnQoV1RGTW92ZShuZXdFbGVtZW50
KSwgKmNvbnN0cnVjdGlvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBkN2FiZDVkYTVkMWMzOTcwOGVjNDhjMTBj
OWY2ZTEyMzEyNzYyZGYxLi4xOGI5MDUzYTFhZTJlMjg2MzIzNDVkMjcyMDQ0ZTkyZTZjMTRlZDli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpk
aXNjb25uZWN0Q2xpZW50KCkKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmFkZFNlbGZU
b0dsb2JhbE9iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRv
JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmV4ZWNTdGF0ZUZyb21QYWdlKHdvcmxkLCBtX2Zyb250
ZW5kUGFnZSk7CisgICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3Qo
d29ybGQsIG1fZnJvbnRlbmRQYWdlKTsKICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQsIFZlY3RvcjxD
b250ZXh0TWVudUl0ZW0KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBBU1NFUlQobV9m
cm9udGVuZFBhZ2UpOwogCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpleGVjU3Rh
dGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKKyAgICBhdXRvJiBs
ZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVjdChkZWJ1Z2dlcldvcmxkKCksIG1fZnJv
bnRlbmRQYWdlKTsKICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAg
ICBhdXRvIHZhbHVlID0gbGV4aWNhbEdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJ
IikpOwogICAgIEFTU0VSVCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDFkNjVhNDUyNzU5ZmQwMjUz
MjIzMmZmZmJmYjcwMzc2ZjBhZmVmOTAuLjAyYWJlMTY2NDE0MmRiZWE5YWJmZmMwMGVjMzc1M2Jk
MTRlMzYyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGZXRjaEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0EKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklk
LCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgd2ViRGVidWdn
ZXJBZ2VudC0+ZGlkU2NoZWR1bGVBc3luY0NhbGwoY29udGV4dC5leGVjU3RhdGUoKSwgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6RE9NVGltZXIsIHRpbWVySWQsIHNpbmds
ZVNob3QpOworICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWRTY2hlZHVsZUFzeW5jQ2FsbChj
b250ZXh0Lmdsb2JhbE9iamVjdCgpLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxU
eXBlOjpET01UaW1lciwgdGltZXJJZCwgc2luZ2xlU2hvdCk7CiAKICAgICBpZiAoYXV0byogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkp
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEluc3RhbGxUaW1lcih0aW1lcklkLCB0aW1lb3V0
LCBzaW5nbGVTaG90LCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmlt
YXRpb25BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFuaW1hdGlvbkFnZW50LmNwcAppbmRleCBkZjNlZjVlNWFhYmE3YjNkM2QyY2Q4YWEyYjMzYmM2
OTU0MDYyYmQxLi5lNzc3NGFjYzg0YTdmMzE5ZDIwZjE3ZGZmZTExMDRjZGU5YTgwODFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlv
bkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFuaW1hdGlvbkFnZW50LmNwcApAQCAtMzEzLDcgKzMxMyw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yQW5p
bWF0aW9uCiAgICAgaWYgKCFhbmltYXRpb24pCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChlcnJvclN0cmluZyk7CiAKLSAgICBhdXRvKiBzdGF0ZSA9IGFuaW1hdGlvbi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAgICBhdXRvKiBzdGF0ZSA9IGFuaW1hdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvIGlu
amVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Io
c3RhdGUpOwogICAgIEFTU0VSVCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcAppbmRleCA3M2RlZDJkM2I1M2RjYjdjZDE5YzRjNTY0MzIzZDk2ODdlOThmMDc4
Li41ZTU2NWIzZDYxNzM3Y2RhMWFhMGVjZjYxYTZiNzA5NWZkMWEwZWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yQ2FudmFzQWdlCiAgICAgaWYg
KCFpbnNwZWN0b3JDYW52YXMpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0
cmluZyk7CiAKLSAgICBhdXRvKiBzdGF0ZSA9IGluc3BlY3RvckNhbnZhcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAgICBhdXRvKiBzdGF0ZSA9IGluc3BlY3RvckNh
bnZhcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRv
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3Ioc3RhdGUpOwogICAgIEFTU0VSVCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCBhYjBkZDIxY2Q5NTA0NWZkODFjOTM2Y2I2YjllZDM0MDIzODg0MzAxLi4z
M2M1OTQ3ZTc0NGE3MGQwMmI0NmUxNzNjODZhOTNhNDAzMzIyZjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MTg0NywyNCArMTg0NywyNCBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAg
ZG9jdW1lbnQgPSAmZG93bmNhc3Q8Tm9kZT4oZXZlbnRUYXJnZXQpLmRvY3VtZW50KCk7CiAKICAg
ICAgICAgSlNDOjpKU09iamVjdCogaGFuZGxlck9iamVjdCA9IG51bGxwdHI7Ci0gICAgICAgIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMgPSBudWxscHRyOworICAgICAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRyOwogCiAgICAgICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2soc2NyaXB0TGlzdGVuZXIuaXNvbGF0ZWRXb3JsZCgpLnZtKCkpOwogCiAgICAgICAg
IGlmIChkb2N1bWVudCkgewogICAgICAgICAgICAgaGFuZGxlck9iamVjdCA9IHNjcmlwdExpc3Rl
bmVyLmVuc3VyZUpTRnVuY3Rpb24oKmRvY3VtZW50KTsKLSAgICAgICAgICAgIGV4ZWMgPSBleGVj
U3RhdGVGcm9tTm9kZShzY3JpcHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCksIGRvY3VtZW50KTsK
KyAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IFdlYkNvcmU6Omdsb2JhbE9iamVjdChzY3JpcHRM
aXN0ZW5lci5pc29sYXRlZFdvcmxkKCksIGRvY3VtZW50KTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChoYW5kbGVyT2JqZWN0ICYmIGV4ZWMpIHsKLSAgICAgICAgICAgIEpTQzo6Vk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICAgICAgaWYgKGhhbmRsZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0KSB7
CisgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAg
ICAgIEpTQzo6SlNGdW5jdGlvbiogaGFuZGxlckZ1bmN0aW9uID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTQzo6SlNGdW5jdGlvbio+KHZtLCBoYW5kbGVyT2JqZWN0KTsKIAogICAgICAgICAgICAgaWYg
KCFoYW5kbGVyRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaGFuZGxlciBp
cyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50
TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2UgdGhhdC4KLSAgICAgICAgICAgICAgICBhdXRvIGhh
bmRsZUV2ZW50VmFsdWUgPSBoYW5kbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgICAgICAgICAgICAgYXV0byBo
YW5kbGVFdmVudFZhbHVlID0gaGFuZGxlck9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaGFuZGxlRXZlbnQiKSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
YzMyZTVhMzkxNGU3OWYzMGJjMTRlNjhkZDZjZmJkMzFiMDA1NDlkZC4uMjU2NjgxNWMzYWYwYmIx
YjVkMzcyN2RiYzQ2OGYzMGUzZTY0ODIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0yMjAsNyArMjIwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KFAKIAogdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0gICAg
YXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4
ZWNTdGF0ZSgpOworICAgIGF1dG8gc3RhdGUgPSBldmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MSw3
ICsyNjEsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVu
dChFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdgogCiB2b2lkIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKQogewotICAgIGF1dG8gc3Rh
dGUgPSBldmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUo
KTsKKyAgICBhdXRvIHN0YXRlID0gZXZlbnQudGFyZ2V0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IGExNDVlMDRlYjIxOGRlOGE0MmZmODk4Mjk4YjhiZWE2ODJjNGVkZTEuLjU1ZTcy
NGFiODNkZGU2MjVhNjU4YjhlNjUxZjQwODQ2OWJhNGMzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGNvbnRleHQuZXhl
Y1N0YXRlKCk7CisgICAgICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmplY3QgPSBjb250ZXh0Lmds
b2JhbE9iamVjdCgpOwogCiAgICAgICAgIGF1dG8ga2V5ID0gbV9pbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KHRvSlMoKmxleGljYWxHbG9iYWxPYmplY3QsICpsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
dXJzb3ItPmtleSgpKSwgU3RyaW5nKCksIHRydWUpOwogICAgICAgICBpZiAoIWtleSkKQEAgLTQ2
Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgVHJhbnNhY3Rpb25BY3RpdmF0b3IgYWN0
aXZhdG9yKGlkYlRyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IGlkYlJlcXVlc3Q7Ci0gICAgICAgIGF1dG8qIGV4ZWMgPSBjb250ZXh0KCkgPyBjb250ZXh0KCkt
PmV4ZWNTdGF0ZSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byogZXhlYyA9IGNvbnRleHQoKSA/
IGNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkgOiBudWxscHRyOwogICAgICAgICBpZiAoIW1faW5k
ZXhOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byBpZGJJbmRleCA9IGluZGV4Rm9y
T2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUuZ2V0KCksIG1faW5kZXhOYW1lKTsKICAgICAgICAg
ICAgIGlmICghaWRiSW5kZXgpIHsKQEAgLTcwNSw3ICs3MDUsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgVHJhbnNhY3Rpb25BY3RpdmF0b3IgYWN0aXZhdG9yKGlkYlRyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGlkYlJlcXVlc3Q7Ci0gICAgICAgIGlmIChhdXRv
KiBleGVjID0gY29udGV4dCgpID8gY29udGV4dCgpLT5leGVjU3RhdGUoKSA6IG51bGxwdHIpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGV4ZWMgPSBjb250ZXh0KCkgPyBjb250ZXh0KCktPmdsb2JhbE9i
amVjdCgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpZGJPYmplY3RT
dG9yZS0+Y2xlYXIoKmV4ZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggMWM2MTM1N2FmZGNlMzUwYWUyM2FiYzIwN2YyMjcwNGM5NGViZjRmMy4uYjQxYjFhYjJj
M2IyZmU4NzFkNWJkOGI0NDkxMzIyZmIyZWNhMTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9XZWJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03OSwxNCArNzks
MTQgQEAgdm9pZCBXZWJEZWJ1Z2dlckFnZW50OjpkaWRBZGRFdmVudExpc3RlbmVyKEV2ZW50VGFy
Z2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcKICAgICBpZiAobV9yZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lcnMuY29udGFpbnMocmVnaXN0ZXJlZExpc3RlbmVyLmdldCgpKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSB0YXJnZXQuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKLSAgICBpZiAoIXNjcmlwdFN0YXRl
KQorICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1
cm47CiAKICAgICBpbnQgaWRlbnRpZmllciA9IG1fbmV4dEV2ZW50TGlzdGVuZXJJZGVudGlmaWVy
Kys7CiAgICAgbV9yZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcnMuc2V0KHJlZ2lzdGVyZWRMaXN0ZW5l
ci5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBkaWRTY2hlZHVsZUFzeW5jQ2FsbChzY3JpcHRT
dGF0ZSwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6RXZlbnRMaXN0ZW5l
ciwgaWRlbnRpZmllciwgcmVnaXN0ZXJlZExpc3RlbmVyLT5pc09uY2UoKSk7CisgICAgZGlkU2No
ZWR1bGVBc3luY0NhbGwoZ2xvYmFsT2JqZWN0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3lu
Y0NhbGxUeXBlOjpFdmVudExpc3RlbmVyLCBpZGVudGlmaWVyLCByZWdpc3RlcmVkTGlzdGVuZXIt
PmlzT25jZSgpKTsKIH0KIAogdm9pZCBXZWJEZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRXZlbnRM
aXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCA2MTg3MjY4YmQyNzUxODFlOThmNDVlZTBmYTdlMTZhNzUwOWJjMTYwLi42OWY5N2Zi
MmI5YTk1OWYxYWU0YTlhZTU5OTI4YjgzNTBkZjNmODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTE3MSwxMSArMTcxLDExIEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpZFJlcXVlc3RB
bmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRvY3VtCiAgICAgaWYgKCFi
cmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGRvY3VtZW50LmV4ZWNTdGF0ZSgpOwotICAgIGlmICghc2Ny
aXB0U3RhdGUpCisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZG9jdW1lbnQuZ2xvYmFsT2JqZWN0
KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpZFNj
aGVkdWxlQXN5bmNDYWxsKHNjcmlwdFN0YXRlLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3lu
Y0NhbGxUeXBlOjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQsIHRydWUpOworICAg
IGRpZFNjaGVkdWxlQXN5bmNDYWxsKGdsb2JhbE9iamVjdCwgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6QXN5bmNDYWxsVHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBjYWxsYmFja0lkLCB0cnVl
KTsKIH0KIAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVBbmltYXRpb25GcmFtZShp
bnQgY2FsbGJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKaW5kZXggODkyNDE5MGVlNjIwZjE1
NTE0YTI1MGQ3NjJlMmJlNGExOTMzMDYzZC4uZjY0ZDU3NTMwYjdiNjE3MGVhYWRlOTIzZTQwOWI1
YmRkZWE3MmU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKQEAgLTU1LDggKzU1LDcgQEAgSW5q
ZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXIKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAg
ICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgcmV0dXJuIGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFs
T2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3YWE3MmI2YTRjNjRjYTlmNjc4MTUw
ZDA2YTMyZDAyOTRjNTA4ODI1Li4zYWUzNWM2N2EzMDM0MWQ3ZWUxMmY2Y2M1Njg4ZGUxZWM3OGM2
M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjAsOCArNjAsNyBAQCBJbmpl
Y3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBmZmZkM2NlYTIxNTM1OWZlNmYwZWQxZWRk
NzcyZDE2YjcwOTUxZGViLi5hYTU4YTFmMGQ3YTgxYjAwNjgxZjY2OGE5ZmM0YTcyNTg2YjEzZGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU4LDggKzU4LDcgQEAgSW5qZWN0ZWRT
Y3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAK
LSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3Jr
ZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3Qo
bV93b3JrZXJHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKaW5kZXggYTIwNzkxOGFmZmI1OWJiYjhlY2RlOTQx
YTlkOTZkYjQ4YTlhYTNlYy4uZjI5MmQwZjVhNjcyMDgyZjY2OTYxNzJjNTAyNmRiMzk5YTA3ZDc4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2
b2lkIFdlYlhSVGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAgICAgVmVjdG9yPFhSUmVmZXJlbmNlU3BhY2VU
eXBlPiBmZWF0dXJlczsKICAgICAgICAgaWYgKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0LmV4ZWNTdGF0ZSgpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gY29udGV4dC5nbG9iYWxPYmpl
Y3QoKSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGluaXQuc3VwcG9y
dGVkRmVhdHVyZXMudmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byByZWZl
cmVuY2VTcGFjZVR5cGUgPSBwYXJzZUVudW1lcmF0aW9uPFhSUmVmZXJlbmNlU3BhY2VUeXBlPigq
Z2xvYmFsT2JqZWN0LCBmZWF0dXJlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVz
LmFwcGVuZChyZWZlcmVuY2VTcGFjZVR5cGUudmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggYmY0OTQzZDc2ZDU0NjM5
NGZmYjViZDJhNTMxNDU2M2Q1YWQwNDI0MC4uNzgwYzVhMTI1NjI3MDc0ZjIxNzQ2NThkYWZhM2Uw
ZTVlNmNlNDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcApAQCAtMjIyLDExICsyMjIsMTEgQEAgdm9pZCBzZXR1cE5ld2x5Q3JlYXRl
ZFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgICAg
IGlmICghc2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8mIHN0YXRl
ID0gKmdsb2JhbFNjb3BlLmV4ZWNTdGF0ZSgpOwotICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpnbG9iYWxTY29wZS5nbG9iYWxPYmpl
Y3QoKTsKKyAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKICAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2Ny
aXB0LT53b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIoKTsKLSAgICAgICAgY29udGV4dFdyYXBwZXIt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSW50ZXJuYWxzOjppbnRl
cm5hbHNJZCksIHRvSlMoJnN0YXRlLCBjb250ZXh0V3JhcHBlciwgU2VydmljZVdvcmtlckludGVy
bmFsczo6Y3JlYXRlKGlkZW50aWZpZXIpKSk7CisgICAgICAgIGNvbnRleHRXcmFwcGVyLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEludGVybmFsczo6aW50ZXJuYWxz
SWQpLCB0b0pTKCZnbG9iYWxPYmplY3QsIGNvbnRleHRXcmFwcGVyLCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzOjpjcmVhdGUoaWRlbnRpZmllcikpKTsKICAgICB9KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmY5
YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZhZmE3OC4uZDIzMjFlYzQyNmFlYzY4ODIz
OTA1ZjZjZDZhYjc4OTAwNjU5Mzc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihK
U0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE3ZGY1ZTFmM2NmMDY1NzE0
YmNlZjc1ZWQ4NWZjYWQ1MzhmNmU4MGEuLmMyYzE1NDFjMTU4MDIzYmI2ZmFhNWU3NTMyMjZmNjFj
N2VmZjhjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTI2Nyw0ICsyNjcsOSBAQCBib29sIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjppc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uOwogfQogCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkKK3sKKyAgICByZXR1cm4gd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCA2ZDQzY2U1ZjlmZmQyYTcwYWYwYmY2ZTVhZWU1NGNkOGZhYzcyZjJlLi5lMTM4Y2E2Mzg2
NjFjYThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU5LDYgKzU5LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwog
ICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZp
bmFsOworCiAgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKICAgICBib29sIGlzRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>