<?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>194373</bug_id>
          
          <creation_ts>2019-02-06 20:17:40 -0800</creation_ts>
          <short_desc>[iOS] [WK2] Modernize autocorrection context code</short_desc>
          <delta_ts>2019-02-08 22:44:07 -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>HTML Editing</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>
          
          <blocked>194397</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1503604</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-06 20:17:40 -0800</bug_when>
    <thetext>- Use Delayed instead of LegacySync.
- Package all the autocorrection context info into a single struct, and encode/decode the struct over IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503606</commentid>
    <comment_count>1</comment_count>
      <attachid>361373</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-06 20:29:02 -0800</bug_when>
    <thetext>Created attachment 361373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503608</commentid>
    <comment_count>2</comment_count>
      <attachid>361374</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-06 20:39:53 -0800</bug_when>
    <thetext>Created attachment 361374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503721</commentid>
    <comment_count>3</comment_count>
      <attachid>361393</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-07 07:52:20 -0800</bug_when>
    <thetext>Created attachment 361393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503761</commentid>
    <comment_count>4</comment_count>
      <attachid>361405</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-07 09:28:07 -0800</bug_when>
    <thetext>Created attachment 361405
Actually fix non-iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503870</commentid>
    <comment_count>5</comment_count>
      <attachid>361405</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-07 12:17:16 -0800</bug_when>
    <thetext>Comment on attachment 361405
Actually fix non-iOS builds

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

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:581
&gt; +WebAutocorrectionContext WebPageProxy::getAutocorrectionContext()

Why &quot;get&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503883</commentid>
    <comment_count>6</comment_count>
      <attachid>361405</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-07 13:02:53 -0800</bug_when>
    <thetext>Comment on attachment 361405
Actually fix non-iOS builds

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

&gt;&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:581
&gt;&gt; +WebAutocorrectionContext WebPageProxy::getAutocorrectionContext()
&gt; 
&gt; Why &quot;get&quot;?

Only because it was already &quot;get&quot; before! (not a good reason :P)

I&apos;ll rename it to autocorrectionContextSync().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503913</commentid>
    <comment_count>7</comment_count>
      <attachid>361439</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-07 13:40:51 -0800</bug_when>
    <thetext>Created attachment 361439
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503962</commentid>
    <comment_count>8</comment_count>
      <attachid>361439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 14:57:04 -0800</bug_when>
    <thetext>Comment on attachment 361439
Patch for EWS

Clearing flags on attachment: 361439

Committed r241146: &lt;https://trac.webkit.org/changeset/241146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504482</commentid>
    <comment_count>9</comment_count>
      <attachid>361439</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-08 20:17:06 -0800</bug_when>
    <thetext>Comment on attachment 361439
Patch for EWS

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3398
&gt; +    if (!completionHandler)
&gt; +        return;

Why?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504483</commentid>
    <comment_count>10</comment_count>
      <attachid>361439</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-08 20:19:40 -0800</bug_when>
    <thetext>Comment on attachment 361439
Patch for EWS

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

&gt; Source/WebKit/Shared/ios/WebAutocorrectionContext.h:85
&gt; +    return {{ WTFMove(*contextBefore), WTFMove(*markedText), WTFMove(*selectedText), WTFMove(*contextAfter), WTFMove(*location), WTFMove(*length) }};

I really do not like this style....were just playing games. Just decode into the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504484</commentid>
    <comment_count>11</comment_count>
      <attachid>361439</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-08 20:21:01 -0800</bug_when>
    <thetext>Comment on attachment 361439
Patch for EWS

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

&gt;&gt; Source/WebKit/Shared/ios/WebAutocorrectionContext.h:85
&gt;&gt; +    return {{ WTFMove(*contextBefore), WTFMove(*markedText), WTFMove(*selectedText), WTFMove(*contextAfter), WTFMove(*location), WTFMove(*length) }};
&gt; 
&gt; I really do not like this style....were just playing games. Just decode into the struct.

#WTFMoveEverything &lt;- why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504491</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-08 20:33:41 -0800</bug_when>
    <thetext>Into radar because it trampled over my work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504492</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-08 20:34:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47938348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504523</commentid>
    <comment_count>14</comment_count>
      <attachid>361439</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-08 22:44:07 -0800</bug_when>
    <thetext>Comment on attachment 361439
Patch for EWS

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3398
&gt;&gt; +        return;
&gt; 
&gt; Why?!

This seems to me to be illogical. Like hell freezes over logical. See bug 194397, comment 8 for more details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361373</attachid>
            <date>2019-02-06 20:29:02 -0800</date>
            <delta_ts>2019-02-06 20:39:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194373-20190206202901.patch</filename>
            <type>text/plain</type>
            <size>25790</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFkMmJjYjAxOTUxZWJhNDFi
YjgxY2JjYjBkZmQ0MDQ2MGYxNzAwYWUuLjU5ZDRjYmI0ZTgzMjQwYTg1ZTEwYTdhYzMwYWY0YmVm
ZjFjNzRhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTktMDItMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gTW9k
ZXJuaXplIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQ6OmRlY29kZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0IHN0cnVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgaW5kaXZpZHVhbCBwaWVjZXMgb2Yg
YXV0b2NvcnJlY3Rpb24gY29udGV4dC4KKyAgICAgICAgQ2hhbmdlIHRvIHVzZSB0aGlzIGluc3Rl
YWQgb2YgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHdoZW4gcHJvcGFnYXRpbmcgYXV0b2NvcnJl
Y3Rpb24gY29udGV4dCBpbmZvcm1hdGlvbiBvdmVyCisgICAgICAgIElQQy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9u
Q29udGV4dENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpn
ZXRBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgVXNlIERlbGF5ZWQgaW5zdGVhZCBvZiBMZWdhY3lTeW5jLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjphdXRvY29ycmVjdGlvbkNvbnRleHQpOgorCisgICAgICAgIFJlbmFtZWQgZnJvbSBjb21wdXRl
QXV0b2NvcnJlY3Rpb25Db250ZXh0LiBUaGlzIGlzIG5vdyBhIHByaXZhdGUgbWV0aG9kIG9uIFdl
YlBhZ2UgdGhhdCB1c2VzIHRoZSBmb2N1c2VkIG9yIG1haW4KKyAgICAgICAgZnJhbWUgdG8gY29t
cHV0ZSBhbmQgcmV0dXJuIGEgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0Ojpjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250ZXh0KTogRGVsZXRlZC4KKwogMjAxOS0wMi0w
NiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxv
dyBwYWdlcyB0byB0cmlnZ2VyIHByb2dyYW1tYXRpYyBwYXN0ZSBmcm9tIHNjcmlwdCBvbiBpT1MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZGIzM2UzYWZhNTFjMzMwOGJlMTI1Nzk5N2VhMmNlMGRlZDFmODZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IHsKKyAg
ICBTdHJpbmcgY29udGV4dEJlZm9yZTsKKyAgICBTdHJpbmcgbWFya2VkVGV4dDsKKyAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0OworICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CisgICAgdWludDY0X3Qg
bG9jYXRpb24geyAwIH07CisgICAgdWludDY0X3QgbGVuZ3RoIHsgMCB9OworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxp
bmUgdm9pZCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgY29udGV4dEJlZm9yZSA8PCBtYXJrZWRUZXh0IDw8
IHNlbGVjdGVkVGV4dCA8PCBjb250ZXh0QWZ0ZXIgPDwgbG9jYXRpb24gPDwgbGVuZ3RoOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0PiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGV4dEJlZm9yZTsKKyAgICBkZWNvZGVy
ID4+IGNvbnRleHRCZWZvcmU7CisgICAgaWYgKCFjb250ZXh0QmVmb3JlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBtYXJrZWRUZXh0OworICAg
IGRlY29kZXIgPj4gbWFya2VkVGV4dDsKKyAgICBpZiAoIW1hcmtlZFRleHQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNlbGVjdGVkVGV4dDsK
KyAgICBkZWNvZGVyID4+IHNlbGVjdGVkVGV4dDsKKyAgICBpZiAoIXNlbGVjdGVkVGV4dCkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGV4
dEFmdGVyOworICAgIGRlY29kZXIgPj4gY29udGV4dEFmdGVyOworICAgIGlmICghY29udGV4dEFm
dGVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGxvY2F0aW9uOworICAgIGRlY29kZXIgPj4gbG9jYXRpb247CisgICAgaWYgKCFsb2NhdGlv
bikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFsZW5ndGgpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqY29udGV4
dEJlZm9yZSksIFdURk1vdmUoKm1hcmtlZFRleHQpLCBXVEZNb3ZlKCpzZWxlY3RlZFRleHQpLCBX
VEZNb3ZlKCpjb250ZXh0QWZ0ZXIpLCBXVEZNb3ZlKCpsb2NhdGlvbiksIFdURk1vdmUoKmxlbmd0
aCkgfX07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oCmluZGV4IGZjYTE4M2NkY2MwZTI5MDg5
ODFlNzA3Mzg0N2ZhZjllZTFhMWRlOGYuLmM5YmE0MmZkMWQ5NGFmNzYyMWQ0ODE3MjNlNjY3ZjFi
ODA1ZDAxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9Db3JyZWN0
aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlv
bkNhbGxiYWNrLmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgIkFQSUVycm9yLmgiCiAj
aW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4m
LCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90PiBBdXRvY29ycmVjdGlvbkRhdGFDYWxs
YmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdD4gQXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmPiBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFj
azsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI1ZmU5
MjdiYjY4M2U1YjA2MjBkNzg3MzY1ZjkxYTkwOTQ1NjgzNDIuLjgwZDg2NjQyZDQ5YTBkMTA4NWY2
Njg1NTA1ZjZlM2MwYTU5YTk1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC02NDAsOCArNjQwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgYm9vbCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQpOwotICAgIHZv
aWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90LCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZ2V0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3RyaW5nJiBtYXJr
ZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBjb250ZXh0QWZ0ZXIsIHVpbnQ2
NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKICAgICB2b2lkIHJlcXVlc3REaWN0YXRp
b25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcmVw
bGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTE3NjMsNyArMTc2Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50
NjRfdCBmb250VHJhaXRzLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGF1dG9jb3JyZWN0aW9uQ29u
dGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJr
ZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRl
eHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZWxlY3Rpb25Db250ZXh0Q2FsbGJh
Y2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwg
Y29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW50ZXJwcmV0
S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50LCBib29sJiBoYW5k
bGVkKTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5n
UG9saWN5LCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiYWE1YTc5YTJkZWExN2QzZDc3MWMyYTc2NWI5
MzBhZjQwY2MyMjZjLi5mNThiYzIzMzNmZTQzMDA4YzBlN2E3Mzg0MTIxOGEwOTZiNDY3OWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xODgsNyArMTg4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBHZXN0
dXJlQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXpl
LCB1aW50NjRfdCB0cmFpdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgbWFy
a2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWludDY0X3Qg
bG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soc3RydWN0IFdlYktpdDo6V2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJp
bmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6RWRpdG9yU3RhdGUg
c3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIExlZ2FjeVN5bmMKICAg
ICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA2YTVk
YmFiMTFjNmFjYzdlMDc3ZTFiODMzY2I4ZTQyYzAxMmY1OGU3Li5jNWM2ZmEwMDgxYjQxZGZiNTU4
ZDBjZGY5N2MyMmM3M2I4YjgyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xNzcsNyArMTc3LDYgQEAg
c3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dEZpcnN0UmVjdDsK
ICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogICAgIFVJV0tBdXRvY29ycmVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyIGF1dG9jb3JyZWN0aW9uSGFuZGxlcjsKLSAgICBVSVdLQXV0b2NvcnJlY3Rpb25D
b250ZXh0SGFuZGxlciBhdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggNjRhNDBlYTE1ZTZhODczOWZjN2U3NTNjNjU5MzlhNGVkNGMwZWZhMi4u
OTljMTRlNzQyNDI0ZmNkMDQ4NDkzYWU4MjU1ZThiOTVkZWRkOTRmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC02NCw2ICs2NCw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld1By
aXZhdGUuaCIKKyNpbXBvcnQgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgogI2ltcG9ydCAi
V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5o
IgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCkBAIC0zNDM2LDI1ICszNDM3LDIxIEBA
IC0gKHZvaWQpYXBwbHlBdXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiljb3JyZWN0aW9uIHRvU3Ry
aW5nOihOU1N0cmluZyAqKWlucHV0IHdpCiAKIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9u
Q29udGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyZWN0aW9u
Q29udGV4dCAqYXV0b2NvcnJlY3Rpb25Db250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAg
IGlmICghY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhlIHN5bmNocm9ub3VzIGNhbGwgd2hlbiA8cmRhcjovL3Byb2JsZW0vMTYyMDcw
MDI+IGlzIGZpeGVkLgogICAgIGNvbnN0IGJvb2wgdXNlU3luY1JlcXVlc3QgPSB0cnVlOwogCiAg
ICAgaWYgKHVzZVN5bmNSZXF1ZXN0KSB7Ci0gICAgICAgIFN0cmluZyBiZWZvcmVUZXh0OwotICAg
ICAgICBTdHJpbmcgbWFya2VkVGV4dDsKLSAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKLSAg
ICAgICAgU3RyaW5nIGFmdGVyVGV4dDsKLSAgICAgICAgdWludDY0X3QgbG9jYXRpb247Ci0gICAg
ICAgIHVpbnQ2NF90IGxlbmd0aDsKLSAgICAgICAgX3BhZ2UtPmdldEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9j
YXRpb24sIGxlbmd0aCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0
aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpiZWZvcmVUZXh0IG1hcmtl
ZFRleHQ6bWFya2VkVGV4dCBzZWxlY3RlZFRleHQ6c2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDphZnRl
clRleHQgc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVu
Z3RoKV0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2Nv
cnJlY3Rpb25Db250ZXh0SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAg
ICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgICAgICBfcGFnZS0+
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChbdmlld10oY29uc3QgU3RyaW5nJiBiZWZvcmVU
ZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0
LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgICAgICB2aWV3LT5f
YXV0b2NvcnJlY3Rpb25EYXRhLmF1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIoW1dLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhEYXRhOmJlZm9yZVRleHQg
bWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxlY3RlZFRleHQgYWZ0ZXJUZXh0
OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5TTWFrZVJhbmdlKGxvY2F0aW9u
LCBsZW5ndGgpXSk7Ci0gICAgICAgIH0pOworICAgICAgICBhdXRvIGNvbnRleHQgPSBfcGFnZS0+
Z2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtX
S0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpjb250
ZXh0LmNvbnRleHRCZWZvcmUgbWFya2VkVGV4dDpjb250ZXh0Lm1hcmtlZFRleHQgc2VsZWN0ZWRU
ZXh0OmNvbnRleHQuc2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDpjb250ZXh0LmNvbnRleHRBZnRlciBz
ZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5TTWFrZVJhbmdlKGNvbnRleHQubG9jYXRpb24sIGNv
bnRleHQubGVuZ3RoKV0pOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgX3BhZ2UtPnJl
cXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYg
Y29udGV4dCwgYXV0bykgeworICAgICAgICBjb21wbGV0aW9uKFtXS0F1dG9jb3JyZWN0aW9uQ29u
dGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpjb250ZXh0LmNvbnRleHRCZWZvcmUg
bWFya2VkVGV4dDpjb250ZXh0Lm1hcmtlZFRleHQgc2VsZWN0ZWRUZXh0OmNvbnRleHQuc2VsZWN0
ZWRUZXh0IGFmdGVyVGV4dDpjb250ZXh0LmNvbnRleHRBZnRlciBzZWxlY3RlZFJhbmdlSW5NYXJr
ZWRUZXh0Ok5TTWFrZVJhbmdlKGNvbnRleHQubG9jYXRpb24sIGNvbnRleHQubGVuZ3RoKV0pOwor
ICAgIH0pOwogfQogCiAvLyBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNDcyNjg5NGE5M2E3
ODcxOTA3NDZmZDUzYzY3ZDkyODIwZWFiN2RkZi4uMzFiZmFiNDExODRkNzgyZjAzYzQzNmE4NTM5
ZDZjMzNiYTcxMmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0
ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgpAQCAtMTY2LDcgKzE2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250
ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9y
ZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlv
bkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYg
bWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJh
Y2soY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiBjb250ZXh0LCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2Nv
cnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2sp
IHsKQEAgLTE3NCw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25D
b250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9j
YXRpb24sIGxlbmd0aCk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShjb250ZXh0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvblJlY3RzQ2Fs
bGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0
cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNTY2LDIwICs1NjcsMjIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNv
bnRleHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewot
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0
cmluZygpLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2Fs
bGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcm
IGJlZm9yZUNvbnRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQs
IFN0cmluZyYgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5n
dGgpCitXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZVByb3h5OjpnZXRBdXRvY29ycmVj
dGlvbkNvbnRleHQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0
b2NvcnJlY3Rpb25Db250ZXh0OjpSZXBseShiZWZvcmVDb250ZXh0LCBtYXJrZWRUZXh0LCBzZWxl
Y3RlZFRleHQsIGFmdGVyQ29udGV4dCwgbG9jYXRpb24sIGxlbmd0aCksIG1fcGFnZUlEKTsKKyAg
ICBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgY29udGV4dDsKKyAgICBtX3Byb2Nlc3MtPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9uQ29udGV4dDo6UmVwbHkoY29udGV4dCksIG1f
cGFnZUlEKTsKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxOWZmNmMwYWNjYTA2MGExYWNmNDNkMzY0NjE4OTg4ZTI5YjE3YTM3Li5jMzU3
Zjc5ZWMwOGQ0ZjY4MWEyYzFkMzUwN2ZiODRlMmZiYWVkMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MjAsNiArNDUyMCw3IEBA
CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9y
UGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9y
UGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZFNjRC
MzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7
IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElBdHRhY2htZW50Q29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tB
dHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTgwMyw2ICs1ODA0LDcgQEAKIAkJCQkyREE5NDQ5ODE4ODRF
NEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLywKIAkJCQlBMTE4QTlF
QzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLywKIAkJCQlB
MTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8sCisJ
CQkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
ICovLAogCQkJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmgg
Ki8sCiAJCQkJRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0g
Ki8sCiAJCQkJMkRBOTQ0OTkxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5o
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGRi
ZTU0MmMxZWUxNzNiYWYyMjJhZDQ1Y2U2ZDg1NDc4MmIzNGQ0ODAuLmU0Y2Y2Njg1ODE3MGNmZDk5
NGE4MGQyYTc5ZTE1NmUwNTYwYzZhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTI1MCw2ICsyNTAsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7
CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOworc3RydWN0IFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwog
c3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YTsKQEAg
LTY0Nyw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNv
bnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFw
cGxpZWQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lE
KTsKLSAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZVRleHQs
IFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJU
ZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOworICAgIHZvaWQgZ2V0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0JiYpPiYmKTsKICAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiYpPiYmKTsKICAgICB2b2lkIHJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC0xMTkxLDYgKzExOTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzZW5kUG9zaXRpb25JbmZvcm1hdGlvbihJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYmKTsKICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBwb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CisgICAg
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IDc3NmVkNzU1NjM5MzU2ZGM1MGUwNGYzYWNhYmJiYzg5YWFiYjU2NmQuLjAz
ZjFhYjQxNTdhOTFhMmIyYTEzNDU3NDEzNDQ0ZmYxOWYzY2JiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNzks
NyArNzksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBcHBs
eUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2Nv
cnJlY3Rpb25BcHBsaWVkKSBMZWdhY3lTeW5jCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRBdXRvY29ycmVjdGlv
bkNvbnRleHQoKSAtPiAoU3RyaW5nIGJlZm9yZUNvbnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBT
dHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlv
biwgdWludDY0X3QgbGVuZ3RoKSBMZWdhY3lTeW5jCisgICAgR2V0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBjb250ZXh0
KSBEZWxheWVkCiAgICAgR2V0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pIERlbGF5ZWQKICAgICBS
ZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0
UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGFlY2E1OGNkMjQxNzgz
NGU4ODlmZjgyODkyZGI3NzM2OGY3ZDY0Y2EuLmFlYzRlOTMxY2MwZmRhYjlhMmViMDdhMjY0NmRm
Yzc0ZTUyMjFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJVc2VyRGF0YS5o
IgogI2ltcG9ydCAiVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIgogI2ltcG9ydCAiV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oIgorI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0LmgiCiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKQEAgLTE5NzUsMTMgKzE5
NzYsMTkgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICBjb3JyZWN0aW9uQXBwbGllZCA9
IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQoRnJh
bWUmIGZyYW1lLCBTdHJpbmcmIGNvbnRleHRCZWZvcmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3Ry
aW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgY29udGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRp
b24sIHVpbnQ2NF90JiBsZW5ndGgpCitXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6
YXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKIHsKKyAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsKKyAg
ICBTdHJpbmcgbWFya2VkVGV4dDsKKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OworICAgIFN0cmlu
ZyBjb250ZXh0QWZ0ZXI7CisgICAgdWludDY0X3QgbG9jYXRpb24gPSBOU05vdEZvdW5kOworICAg
IHVpbnQ2NF90IGxlbmd0aCA9IDA7CisKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZTsKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0g
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCk7Ci0gICAgbG9jYXRpb24gPSBOU05v
dEZvdW5kOwotICAgIGxlbmd0aCA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQgbWluQ29udGV4dFdv
cmRDb3VudCA9IDM7CiAgICAgY29uc3QgdW5zaWduZWQgbWluQ29udGV4dExlbmdodCA9IDEyOwog
ICAgIGNvbnN0IHVuc2lnbmVkIG1heENvbnRleHRMZW5ndGggPSAzMDsKQEAgLTIwMzUsMjUgKzIw
NDIsMTcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChGcmFtZSYg
ZnJhbWUsIFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3QKICAgICAgICAgICAgICAgICBjb250ZXh0
QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIG5leHRQb3NpdGlvbikucHRyKCkpOwogICAgICAg
ICB9CiAgICAgfQorICAgIHJldHVybiB7IFdURk1vdmUoY29udGV4dEJlZm9yZSksIFdURk1vdmUo
bWFya2VkVGV4dCksIFdURk1vdmUoc2VsZWN0ZWRUZXh0KSwgV1RGTW92ZShjb250ZXh0QWZ0ZXIp
LCBsb2NhdGlvbiwgbGVuZ3RoIH07CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgU3RyaW5nIGNvbnRl
eHRCZWZvcmU7Ci0gICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKLSAgICBTdHJpbmcgc2VsZWN0ZWRU
ZXh0OwotICAgIFN0cmluZyBtYXJrZWRUZXh0OwotICAgIHVpbnQ2NF90IGxvY2F0aW9uOwotICAg
IHVpbnQ2NF90IGxlbmd0aDsKLQotICAgIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQobV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSwgY29udGV4dEJlZm9y
ZSwgbWFya2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBjb250ZXh0QWZ0ZXIsIGxvY2F0aW9uLCBsZW5n
dGgpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkNv
bnRleHRDYWxsYmFjayhjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGNv
bnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soYXV0b2Nv
cnJlY3Rpb25Db250ZXh0KCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRB
dXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdHJpbmcmIG1hcmtl
ZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGNvbnRleHRBZnRlciwgdWludDY0
X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQordm9pZCBXZWJQYWdlOjpnZXRBdXRvY29y
cmVjdGlvbkNvbnRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcHV0ZUF1dG9jb3JyZWN0
aW9uQ29udGV4dChtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LCBjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGNvbnRleHRBZnRlciwg
bG9jYXRpb24sIGxlbmd0aCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0b2NvcnJlY3Rpb25D
b250ZXh0KCkpOwogfQogCiBzdGF0aWMgSFRNTEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5r
RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361374</attachid>
            <date>2019-02-06 20:39:53 -0800</date>
            <delta_ts>2019-02-07 07:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194373-20190206203952.patch</filename>
            <type>text/plain</type>
            <size>27700</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFkMmJjYjAxOTUxZWJhNDFi
YjgxY2JjYjBkZmQ0MDQ2MGYxNzAwYWUuLmUzODRiM2NlNjJiMzcwY2NkYmFiZDAyMjdkZTM4ODlj
NmY5OTQzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDItMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gTW9k
ZXJuaXplIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQ6OmRlY29kZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0IHN0cnVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgaW5kaXZpZHVhbCBwaWVjZXMgb2Yg
YXV0b2NvcnJlY3Rpb24gY29udGV4dC4KKyAgICAgICAgQ2hhbmdlIHRvIHVzZSB0aGlzIGluc3Rl
YWQgb2YgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHdoZW4gcHJvcGFnYXRpbmcgYXV0b2NvcnJl
Y3Rpb24gY29udGV4dCBpbmZvcm1hdGlvbiBvdmVyCisgICAgICAgIElQQy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDpdKToKKyAgICAgICAgKCtbV0tBdXRv
Y29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6bWFya2VkVGV4
dDpzZWxlY3RlZFRleHQ6YWZ0ZXJUZXh0OnNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6XSk6IERl
bGV0ZWQuCisKKyAgICAgICAgQ2hhbmdlIHRoaXMgY29uc3RydWN0b3IgdG8gdGFrZSBhbiBlbnRp
cmUgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXV0b2Nv
cnJlY3Rpb25Db250ZXh0Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KworICAgICAgICBVc2UgRGVsYXllZCBpbnN0ZWFkIG9mIExlZ2FjeVN5bmMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisKKyAgICAgICAgUmVuYW1lZCBmcm9t
IGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQuIFRoaXMgaXMgbm93IGEgcHJpdmF0ZSBtZXRo
b2Qgb24gV2ViUGFnZSB0aGF0IHVzZXMgdGhlIGZvY3VzZWQgb3IgbWFpbgorICAgICAgICBmcmFt
ZSB0byBjb21wdXRlIGFuZCByZXR1cm4gYSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQpOiBEZWxldGVkLgorCiAy
MDE5LTAyLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IHBhZ2VzIHRvIHRyaWdnZXIgcHJvZ3JhbW1hdGljIHBhc3RlIGZyb20gc2NyaXB0
IG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYjMzZTNhZmE1MWMzMzA4YmUxMjU3OTk3ZWEyY2Uw
ZGVkMWY4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQgeworICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOworICAgIFN0cmluZyBtYXJrZWRUZXh0Owor
ICAgIFN0cmluZyBzZWxlY3RlZFRleHQ7CisgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKKyAgICB1
aW50NjRfdCBsb2NhdGlvbiB7IDAgfTsKKyAgICB1aW50NjRfdCBsZW5ndGggeyAwIH07CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dD4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IGlubGluZSB2b2lkIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjb250ZXh0QmVmb3JlIDw8IG1hcmtl
ZFRleHQgPDwgc2VsZWN0ZWRUZXh0IDw8IGNvbnRleHRBZnRlciA8PCBsb2NhdGlvbiA8PCBsZW5n
dGg7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQ+IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZXh0QmVmb3JlOworICAg
IGRlY29kZXIgPj4gY29udGV4dEJlZm9yZTsKKyAgICBpZiAoIWNvbnRleHRCZWZvcmUpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1hcmtlZFRl
eHQ7CisgICAgZGVjb2RlciA+PiBtYXJrZWRUZXh0OworICAgIGlmICghbWFya2VkVGV4dCkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gc2VsZWN0
ZWRUZXh0OworICAgIGRlY29kZXIgPj4gc2VsZWN0ZWRUZXh0OworICAgIGlmICghc2VsZWN0ZWRU
ZXh0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5n
PiBjb250ZXh0QWZ0ZXI7CisgICAgZGVjb2RlciA+PiBjb250ZXh0QWZ0ZXI7CisgICAgaWYgKCFj
b250ZXh0QWZ0ZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDx1aW50NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAo
IWxvY2F0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpjb250ZXh0QmVmb3JlKSwgV1RGTW92ZSgqbWFya2VkVGV4dCksIFdURk1vdmUoKnNlbGVjdGVk
VGV4dCksIFdURk1vdmUoKmNvbnRleHRBZnRlciksIFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92
ZSgqbGVuZ3RoKSB9fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKaW5kZXggZmNhMTgzY2Rj
YzBlMjkwODk4MWU3MDczODQ3ZmFmOWVlMWExZGU4Zi4uYzliYTQyZmQxZDk0YWY3NjIxZDQ4MTcy
M2U2NjdmMWI4MDVkMDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b0NvcnJlY3Rpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9D
b3JyZWN0aW9uQ2FsbGJhY2suaApAQCAtMjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSAiQVBJRXJy
b3IuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3Q+IEF1dG9jb3JyZWN0aW9u
RGF0YUNhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2
NF90PiBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCY+IEF1dG9jb3JyZWN0aW9uQ29udGV4
dENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggYjVmZTkyN2JiNjgzZTViMDYyMGQ3ODczNjVmOTFhOTA5NDU2ODM0Mi4uODBkODY2NDJkNDlh
MGQxMDg1ZjY2ODU1MDVmNmUzYzBhNTlhOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTY0MCw4ICs2NDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29u
c3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
ICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rp
b24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7
Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAg
dm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdHJp
bmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGNvbnRleHRBZnRl
ciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKKyAgICB2b2lkIHJlcXVl
c3RBdXRvY29ycmVjdGlvbkNvbnRleHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0IGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogICAgIHZvaWQgcmVxdWVz
dERpY3RhdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3Ry
aW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwpAQCAtMTc2Myw3ICsxNzYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90
IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNp
emUsIHVpbnQ2NF90IGZvbnRUcmFpdHMsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgYXV0b2NvcnJl
Y3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJp
bmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBhdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNlbGVjdGlvbkNvbnRl
eHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZv
cmVUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBp
bnRlcnByZXRLZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJv
b2wmIGhhbmRsZWQpOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFz
VmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0
ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJhYTVhNzlhMmRlYTE3ZDNkNzcx
YzJhNzY1YjkzMGFmNDBjYzIyNmMuLmY1OGJjMjMzM2ZlNDMwMDhjMGU3YTczODQxMjE4YTA5NmI0
Njc5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTE4OCw3ICsxODgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1lLCBkb3VibGUg
Zm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0
cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1
aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0
OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgY29udGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRl
eHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0
b3JTdGF0ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgTGVnYWN5
U3luYwogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmlu
ZGV4IDZhNWRiYWIxMWM2YWNjN2UwNzdlMWI4MzNjYjhlNDJjMDEyZjU4ZTcuLmM1YzZmYTAwODFi
NDFkZmI1NThkMGNkZjk3YzIyYzczYjhiODJiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTE3Nyw3ICsx
NzcsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIENHUmVjdCB0ZXh0Rmly
c3RSZWN0OwogICAgIENHUmVjdCB0ZXh0TGFzdFJlY3Q7CiAgICAgVUlXS0F1dG9jb3JyZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgYXV0b2NvcnJlY3Rpb25IYW5kbGVyOwotICAgIFVJV0tBdXRvY29y
cmVjdGlvbkNvbnRleHRIYW5kbGVyIGF1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCA2NGE0MGVhMTVlNmE4NzM5ZmM3ZTc1M2M2NTkzOWE0ZWQ0
YzBlZmEyLi5mNGUxYzY4ZTE3MGE0M2ZiYTY3ZjBkNDAyOTlkNGQ3NjY4NDRjZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTY0LDYgKzY0LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAj
aW1wb3J0ICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKICNpbXBvcnQgIldl
YkV2ZW50LmgiCiAjaW1wb3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKQEAgLTI3MSw3ICsyNzIs
NyBAQCArIChXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aFJl
Y3RzOihDR1JlY3QpZmlyc3RSZWN0IGxhc3RSZQogQGVuZAogCiBAaW50ZXJmYWNlIFdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0IDogVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dAotKyAoV0tBdXRvY29y
cmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTooTlNTdHJpbmcg
KiliZWZvcmVUZXh0IG1hcmtlZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4dCBzZWxlY3RlZFRl
eHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDooTlNTdHJpbmcgKilhZnRlclRl
eHQgc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDooTlNSYW5nZSlyYW5nZTsKKysgKFdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6KGNvbnN0
IFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jiljb250ZXh0OwogQGVuZAogCiBAaW50
ZXJmYWNlIFVJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50IChVSVRleHRJbnRlcmFjdGlvbkFzc2lz
dGFudF9JbnRlcm5hbCkKQEAgLTM0MzYsMjUgKzM0MzcsMjAgQEAgLSAodm9pZClhcHBseUF1dG9j
b3JyZWN0aW9uOihOU1N0cmluZyAqKWNvcnJlY3Rpb24gdG9TdHJpbmc6KE5TU3RyaW5nICopaW5w
dXQgd2kKIAogLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICphdXRvY29ycmVj
dGlvbkNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgaWYgKCFjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgc3luY2hy
b25vdXMgY2FsbCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8xNjIwNzAwMj4gaXMgZml4ZWQuCiAgICAg
Y29uc3QgYm9vbCB1c2VTeW5jUmVxdWVzdCA9IHRydWU7CiAKICAgICBpZiAodXNlU3luY1JlcXVl
c3QpIHsKLSAgICAgICAgU3RyaW5nIGJlZm9yZVRleHQ7Ci0gICAgICAgIFN0cmluZyBtYXJrZWRU
ZXh0OwotICAgICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OwotICAgICAgICBTdHJpbmcgYWZ0ZXJU
ZXh0OwotICAgICAgICB1aW50NjRfdCBsb2NhdGlvbjsKLSAgICAgICAgdWludDY0X3QgbGVuZ3Ro
OwotICAgICAgICBfcGFnZS0+Z2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KGJlZm9yZVRleHQsIG1h
cmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgYWZ0ZXJUZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKTsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3Jy
ZWN0aW9uQ29udGV4dFdpdGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNl
bGVjdGVkVGV4dDpzZWxlY3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdl
SW5NYXJrZWRUZXh0Ok5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgX2F1dG9jb3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkNvbnRleHRIYW5k
bGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgICAgICBSZXRhaW5QdHI8V0tDb250
ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rp
b25Db250ZXh0KFt2aWV3XShjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYg
bWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgICAgIHZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEu
YXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0
b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6YmVmb3JlVGV4dCBtYXJrZWRUZXh0Om1hcmtlZFRl
eHQgc2VsZWN0ZWRUZXh0OnNlbGVjdGVkVGV4dCBhZnRlclRleHQ6YWZ0ZXJUZXh0IHNlbGVjdGVk
UmFuZ2VJbk1hcmtlZFRleHQ6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDpfcGFnZS0+Z2V0QXV0b2NvcnJlY3Rp
b25Db250ZXh0KCldKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIF9wYWdlLT5yZXF1
ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGNv
bnRleHQsIGF1dG8pIHsKKyAgICAgICAgY29tcGxldGlvbihbV0tBdXRvY29ycmVjdGlvbkNvbnRl
eHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6Y29udGV4dF0pOworICAgIH0pOwog
fQogCiAvLyBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZQpAQCAtNzE3OSwxOSArNzE3NSwxOSBA
QCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0F1dG9jb3JyZWN0aW9uQ29udGV4dAogCi0rIChX
S0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqKWF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhEYXRhOihO
U1N0cmluZyAqKWJlZm9yZVRleHQgbWFya2VkVGV4dDooTlNTdHJpbmcgKiltYXJrZWRUZXh0IHNl
bGVjdGVkVGV4dDooTlNTdHJpbmcgKilzZWxlY3RlZFRleHQgYWZ0ZXJUZXh0OihOU1N0cmluZyAq
KWFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0OihOU1JhbmdlKXJhbmdlCisrIChX
S0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqKWF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0
Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpd2ViQ29udGV4dAogewog
ICAgIFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICpjb250ZXh0ID0gW1tXS0F1dG9jb3JyZWN0aW9u
Q29udGV4dCBhbGxvY10gaW5pdF07CiAKLSAgICBpZiAoW2JlZm9yZVRleHQgbGVuZ3RoXSkKLSAg
ICAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlU2VsZWN0aW9uID0gYmVmb3JlVGV4dDsKLSAgICBp
ZiAoW3NlbGVjdGVkVGV4dCBsZW5ndGhdKQotICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9
IHNlbGVjdGVkVGV4dDsKLSAgICBpZiAoW21hcmtlZFRleHQgbGVuZ3RoXSkKLSAgICAgICAgY29u
dGV4dC5tYXJrZWRUZXh0ID0gbWFya2VkVGV4dDsKLSAgICBpZiAoW2FmdGVyVGV4dCBsZW5ndGhd
KQotICAgICAgICBjb250ZXh0LmNvbnRleHRBZnRlclNlbGVjdGlvbiA9IGFmdGVyVGV4dDsKLSAg
ICBjb250ZXh0LnJhbmdlSW5NYXJrZWRUZXh0ID0gcmFuZ2U7CisgICAgaWYgKCF3ZWJDb250ZXh0
LmNvbnRleHRCZWZvcmUuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LmNvbnRleHRCZWZvcmVT
ZWxlY3Rpb24gPSB3ZWJDb250ZXh0LmNvbnRleHRCZWZvcmU7CisgICAgaWYgKCF3ZWJDb250ZXh0
LnNlbGVjdGVkVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0g
d2ViQ29udGV4dC5zZWxlY3RlZFRleHQ7CisgICAgaWYgKCF3ZWJDb250ZXh0Lm1hcmtlZFRleHQu
aXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSB3ZWJDb250ZXh0Lm1hcmtl
ZFRleHQ7CisgICAgaWYgKCF3ZWJDb250ZXh0LmNvbnRleHRBZnRlci5pc0VtcHR5KCkpCisgICAg
ICAgIGNvbnRleHQuY29udGV4dEFmdGVyU2VsZWN0aW9uID0gd2ViQ29udGV4dC5jb250ZXh0QWZ0
ZXI7CisgICAgY29udGV4dC5yYW5nZUluTWFya2VkVGV4dCA9IE5TTWFrZVJhbmdlKHdlYkNvbnRl
eHQubG9jYXRpb24sIHdlYkNvbnRleHQubGVuZ3RoKTsKICAgICByZXR1cm4gW2NvbnRleHQgYXV0
b3JlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQppbmRleCA0NzI2ODk0YTkzYTc4NzE5MDc0NmZkNTNjNjdkOTI4MjBlYWI3ZGRm
Li4zMWJmYWI0MTE4NGQ3ODJmMDNjNDM2YTg1MzlkNmMzM2JhNzEyYmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ2LDYgKzQ2LDcg
QEAKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmll
d1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
IgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0xNjYsNyArMTY3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIHNl
bGVjdGVkVGV4dCwgY29uc3QgU3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKHNlbGVjdGVkVGV4dCwgYmVmb3JlVGV4dCwgYWZ0ZXJUZXh0KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmlu
ZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNl
bGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1
aW50NjRfdCBsZW5ndGgsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQmIGNvbnRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxi
YWNrID0gbV9jYWxsYmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc0LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFj
ay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGJlZm9yZVRleHQsIG1hcmtlZFRleHQs
IHNlbGVjdGVkVGV4dCwgYWZ0ZXJUZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBjYWxsYmFj
ay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnRleHQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBA
IC01NjYsMjAgKzU2NywyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNv
bnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3Qs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChGdW5jdGlvbjx2b2lkKGNvbnN0IFdl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dCYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
KQogewogICAgIGlmICghaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3Ry
aW5nKCksIFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIDAsIDAsIENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFjayh7IH0sIENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgYmVmb3JlQ29udGV4dCwgU3RyaW5nJiBtYXJr
ZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBhZnRlckNvbnRleHQsIHVpbnQ2
NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dCBXZWJQYWdlUHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQ6OlJlcGx5KGJl
Zm9yZUNvbnRleHQsIG1hcmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgYWZ0ZXJDb250ZXh0LCBsb2Nh
dGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBj
b250ZXh0OworICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1
dG9jb3JyZWN0aW9uQ29udGV4dCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJlY3Rp
b25Db250ZXh0OjpSZXBseShjb250ZXh0KSwgbV9wYWdlSUQpOworICAgIHJldHVybiBjb250ZXh0
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5ZmY2YzBhY2NhMDYwYTFh
Y2Y0M2QzNjQ2MTg5ODhlMjliMTdhMzcuLmMzNTdmNzllYzA4ZDRmNjgxYTJjMWQzNTA3ZmI4NGUy
ZmJhZWQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDUyMCw2ICs0NTIwLDcgQEAKIAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3
IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJs
aWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4
NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwRDFCNjgyMjBC
REMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5
QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0
MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQyOTE5MzFG
QTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0F0dGFjaG1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODAzLDYg
KzU4MDQsNyBAQAogCQkJCTJEQTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3Vj
aEV2ZW50SU9TLm1tICovLAogCQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xv
b2tEb2N1bWVudERhdGEuY3BwICovLAogCQkJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBR
dWlja0xvb2tEb2N1bWVudERhdGEuaCAqLywKKwkJCQlGNDBEMUI2ODIyMEJEQzBGMDBCNDlBMDEg
LyogV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmggKi8sCiAJCQkJRjQ0REZFQjAxRTlFNzUyRjAw
MzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLywKIAkJCQlGNDRERkVCMTFFOUU3NTJGMDAz
OEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLywKIAkJCQkyREE5NDQ5OTE4ODRFNEYwMDBF
RDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGJlNTQyYzFlZTE3M2JhZjIyMmFkNDVjZTZkODU0
NzgyYjM0ZDQ4MC4uZTRjZjY2ODU4MTcwY2ZkOTk0YTgwZDJhNzllMTU2ZTA1NjBjNmE4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjUwLDYgKzI1
MCw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKIHN0cnVjdCBMb2FkUGFyYW1ldGVyczsKIHN0
cnVjdCBQcmludEluZm87CitzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Owogc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsK
IHN0cnVjdCBXZWJTZWxlY3Rpb25EYXRhOwpAQCAtNjQ3LDcgKzY0OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBib29sJiBjb3JyZWN0aW9uQXBwbGllZCk7CiAgICAgdm9pZCByZXF1ZXN0QXV0
b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rp
b25Db250ZXh0KFN0cmluZyYgYmVmb3JlVGV4dCwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcm
IHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCk7CisgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmJik+JiYpOwogICAgIHZv
aWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mJik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rp
b25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTEx
OTEsNiArMTE5Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRQb3NpdGlvbkluZm9ybWF0
aW9uKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiYpOwogICAgIEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIHBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QmKTsKKyAgICBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0
b2NvcnJlY3Rpb25Db250ZXh0KCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzc2ZWQ3NTU2MzkzNTZk
YzUwZTA0ZjNhY2FiYmJjODlhYWJiNTY2ZC4uMDNmMWFiNDE1N2E5MWEyYjJhMTM0NTc0MTM0NDRm
ZjE5ZjNjYmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC03OSw3ICs3OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJl
Y3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcg
b3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpIExlZ2FjeVN5bmMK
ICAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQotICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpIC0+IChTdHJpbmcgYmVmb3Jl
Q29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBh
ZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIExlZ2FjeVN5
bmMKKyAgICBHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoc3RydWN0IFdlYktpdDo6V2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQpIERlbGF5ZWQKICAgICBHZXRQb3NpdGlvbklu
Zm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJl
cXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biBpbmZvcm1hdGlvbikgRGVsYXllZAogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0
cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCiAgICAg
U3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggYWVjYTU4Y2QyNDE3ODM0ZTg4OWZmODI4OTJkYjc3MzY4ZjdkNjRjYS4u
YWVjNGU5MzFjYzBmZGFiOWEyZWIwN2EyNjQ2ZGZjNzRlNTIyMWY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbXBvcnQgIlVzZXJEYXRhLmgiCiAjaW1wb3J0ICJWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvLmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9T
LmgiCisjaW1wb3J0ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkNo
cm9tZUNsaWVudC5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0
ICJXZWJGcmFtZS5oIgpAQCAtMTk3NSwxMyArMTk3NiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNB
cHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBvcgogICAgIGNvcnJlY3Rpb25BcHBsaWVkID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgY29t
cHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYgY29udGV4dEJl
Zm9yZSwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBj
b250ZXh0QWZ0ZXIsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK1dlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQoKQogewor
ICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOworICAgIFN0cmluZyBtYXJrZWRUZXh0OworICAgIFN0
cmluZyBzZWxlY3RlZFRleHQ7CisgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKKyAgICB1aW50NjRf
dCBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CisgICAgdWludDY0X3QgbGVuZ3RoID0gMDsKKworICAg
IGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5lbmQoKTsKLSAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7Ci0gICAgbGVuZ3RoID0gMDsKICAg
ICBjb25zdCB1bnNpZ25lZCBtaW5Db250ZXh0V29yZENvdW50ID0gMzsKICAgICBjb25zdCB1bnNp
Z25lZCBtaW5Db250ZXh0TGVuZ2h0ID0gMTI7CiAgICAgY29uc3QgdW5zaWduZWQgbWF4Q29udGV4
dExlbmd0aCA9IDMwOwpAQCAtMjAzNSwyNSArMjA0MiwxNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRl
QXV0b2NvcnJlY3Rpb25Db250ZXh0KEZyYW1lJiBmcmFtZSwgU3RyaW5nJiBjb250ZXh0QmVmb3Jl
LCBTdAogICAgICAgICAgICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05v
QnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwg
bmV4dFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHsgV1RG
TW92ZShjb250ZXh0QmVmb3JlKSwgV1RGTW92ZShtYXJrZWRUZXh0KSwgV1RGTW92ZShzZWxlY3Rl
ZFRleHQpLCBXVEZNb3ZlKGNvbnRleHRBZnRlciksIGxvY2F0aW9uLCBsZW5ndGggfTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKLSAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsKLSAgICBTdHJpbmcgY29udGV4
dEFmdGVyOwotICAgIFN0cmluZyBzZWxlY3RlZFRleHQ7Ci0gICAgU3RyaW5nIG1hcmtlZFRleHQ7
Ci0gICAgdWludDY0X3QgbG9jYXRpb247Ci0gICAgdWludDY0X3QgbGVuZ3RoOwotCi0gICAgY29t
cHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLCBjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQs
IGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCk7Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnRleHRCZWZvcmUs
IG1hcmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgY29udGV4dEFmdGVyLCBsb2NhdGlvbiwgbGVuZ3Ro
LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdXRvY29y
cmVjdGlvbkNvbnRleHRDYWxsYmFjayhhdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcm
IGNvbnRleHRCZWZvcmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQs
IFN0cmluZyYgY29udGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5n
dGgpCit2b2lkIFdlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250ZXh0KG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCksIGNvbnRleHRCZWZvcmUsIG1hcmtlZFRleHQs
IHNlbGVjdGVkVGV4dCwgY29udGV4dEFmdGVyLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihhdXRvY29ycmVjdGlvbkNvbnRleHQoKSk7CiB9CiAKIHN0YXRpYyBIVE1M
QW5jaG9yRWxlbWVudCogY29udGFpbmluZ0xpbmtFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361393</attachid>
            <date>2019-02-07 07:52:20 -0800</date>
            <delta_ts>2019-02-07 09:28:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194373-20190207075219.patch</filename>
            <type>text/plain</type>
            <size>27698</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDEwZDg3Y2FmM2IxYmZm
NjI3MGU2Mjc5MDg5YjcxOTRjYjE0ZmUuLjA2YmM0NmQzOGQzNzU1YTBjZTkyODRhNDgwNDJmNDEz
MGQ3ZTFhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDItMDcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gTW9k
ZXJuaXplIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQ6OmRlY29kZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0IHN0cnVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgaW5kaXZpZHVhbCBwaWVjZXMgb2Yg
YXV0b2NvcnJlY3Rpb24gY29udGV4dC4KKyAgICAgICAgQ2hhbmdlIHRvIHVzZSB0aGlzIGluc3Rl
YWQgb2YgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHdoZW4gcHJvcGFnYXRpbmcgYXV0b2NvcnJl
Y3Rpb24gY29udGV4dCBpbmZvcm1hdGlvbiBvdmVyCisgICAgICAgIElQQy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDpdKToKKyAgICAgICAgKCtbV0tBdXRv
Y29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6bWFya2VkVGV4
dDpzZWxlY3RlZFRleHQ6YWZ0ZXJUZXh0OnNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6XSk6IERl
bGV0ZWQuCisKKyAgICAgICAgQ2hhbmdlIHRoaXMgY29uc3RydWN0b3IgdG8gdGFrZSBhbiBlbnRp
cmUgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXV0b2Nv
cnJlY3Rpb25Db250ZXh0Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KworICAgICAgICBVc2UgRGVsYXllZCBpbnN0ZWFkIG9mIExlZ2FjeVN5bmMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisKKyAgICAgICAgUmVuYW1lZCBmcm9t
IGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQuIFRoaXMgaXMgbm93IGEgcHJpdmF0ZSBtZXRo
b2Qgb24gV2ViUGFnZSB0aGF0IHVzZXMgdGhlIGZvY3VzZWQgb3IgbWFpbgorICAgICAgICBmcmFt
ZSB0byBjb21wdXRlIGFuZCByZXR1cm4gYSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQpOiBEZWxldGVkLgorCiAy
MDE5LTAyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSb2xsIG91dCBwYXJ0cyBvZiByMjM4ODE5IHNpbmNlIGl0IGlzIGEgUExUIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q5Y2U2MTZjMzliNjNmNGZiODBhZDYxYzYz
ZWVhYWU3MmRmZjFmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCB7CisgICAgU3RyaW5nIGNvbnRleHRC
ZWZvcmU7CisgICAgU3RyaW5nIG1hcmtlZFRleHQ7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsK
KyAgICBTdHJpbmcgY29udGV4dEFmdGVyOworICAgIHVpbnQ2NF90IGxvY2F0aW9uIHsgbm90Rm91
bmQgfTsKKyAgICB1aW50NjRfdCBsZW5ndGggeyAwIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dD4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFdl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBjb250ZXh0QmVmb3JlIDw8IG1hcmtlZFRleHQgPDwgc2VsZWN0ZWRU
ZXh0IDw8IGNvbnRleHRBZnRlciA8PCBsb2NhdGlvbiA8PCBsZW5ndGg7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZXh0QmVmb3JlOworICAgIGRlY29kZXIgPj4gY29udGV4
dEJlZm9yZTsKKyAgICBpZiAoIWNvbnRleHRCZWZvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1hcmtlZFRleHQ7CisgICAgZGVjb2RlciA+
PiBtYXJrZWRUZXh0OworICAgIGlmICghbWFya2VkVGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gc2VsZWN0ZWRUZXh0OworICAgIGRlY29k
ZXIgPj4gc2VsZWN0ZWRUZXh0OworICAgIGlmICghc2VsZWN0ZWRUZXh0KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZXh0QWZ0ZXI7Cisg
ICAgZGVjb2RlciA+PiBjb250ZXh0QWZ0ZXI7CisgICAgaWYgKCFjb250ZXh0QWZ0ZXIpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9jYXRp
b247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxlbmd0aDsK
KyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpjb250ZXh0QmVmb3JlKSwg
V1RGTW92ZSgqbWFya2VkVGV4dCksIFdURk1vdmUoKnNlbGVjdGVkVGV4dCksIFdURk1vdmUoKmNv
bnRleHRBZnRlciksIFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSB9fTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKaW5kZXggZmNhMTgzY2RjYzBlMjkwODk4MWU3MDczODQ3
ZmFmOWVlMWExZGU4Zi4uMzliZDJmOGIxNzE1ZWJmNWU0YjI2NmRiYmMwZmE2MjI0NmVlM2UwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFj
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRl
ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0
UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVpbnQ2NF90PiBBdXRvY29ycmVjdGlvbkRh
dGFDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRf
dD4gQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmPiBBdXRvY29ycmVjdGlvbkNvbnRleHRD
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDdiZTkxOTQzODkwYjc1ZDBlMjhjYTM3MDFmNWI0NjdlYzA4NzQ3YTIuLmQxMzg1OTUxYmNhNjQy
MDg0ZGRkZGU5OTc2NWQ0YmM4ZDIzMTVjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC02NDAsOCArNjQwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEF1
dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgYm9vbCBhcHBseUF1dG9jb3JyZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQpOwot
ICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZv
aWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3RyaW5n
JiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBjb250ZXh0QWZ0ZXIs
IHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisgICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIFdlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKICAgICB2b2lkIHJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmlu
ZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYg
b2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBm
bGFncywgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXpl
LCB1aW50NjRfdCBmb250VHJhaXRzLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGF1dG9jb3JyZWN0
aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5n
JiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBh
ZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZWxlY3Rpb25Db250ZXh0
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3Jl
VGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50LCBib29s
JiBoYW5kbGVkKTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1Zp
ZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3ODc1ZWFiNDMxMTMxNGE0ZDg3YTky
MjA3ZDUxMmU1M2RlMjhlYzcxLi4zMDJlN2RmNjdiNDRmY2JkZmIyYTMwOGI3NGRiZTlkYTVmNGRm
M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xODgsNyArMTg4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBiZWZvcmVUZXh0LCBTdHJp
bmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWlu
dDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soc3RydWN0IFdlYktpdDo6
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0
LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6RWRpdG9y
U3RhdGUgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIExlZ2FjeVN5
bmMKICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRl
eCAzOGJlMGQwZTJhY2ZjNDZhMmY5NjljZWRkYmYwMjFiMDE2ZWQ5YTZjLi5kYzBkMTczYzQyMzYz
YjIwMTAwYTczYmE2NWI5ZjNjOGI2YTY1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xNzYsNyArMTc2
LDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dEZpcnN0
UmVjdDsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogICAgIFVJV0tBdXRvY29ycmVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyIGF1dG9jb3JyZWN0aW9uSGFuZGxlcjsKLSAgICBVSVdLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0SGFuZGxlciBhdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggZGU3YzVjYTA4MjAxNDY3MzVlYWEzYTVmMDIyZjEwOTU5Y2Y4
MDRjOC4uOTJmYjZlNjY2NzhhYzA5NmU2MmU2N2ZmNTM0NzcxODQwOTVmM2U3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC02NCw2ICs2NCw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vi
Vmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgogI2lt
cG9ydCAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCiAjaW1wb3J0ICJXZWJF
dmVudC5oIgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCkBAIC0yNzEsNyArMjcyLDcg
QEAgKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dpdGhSZWN0
czooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0UmUKIEBlbmQKIAogQGludGVyZmFjZSBXS0F1dG9jb3Jy
ZWN0aW9uQ29udGV4dCA6IFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHQKLSsgKFdLQXV0b2NvcnJl
Y3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6KE5TU3RyaW5nICop
YmVmb3JlVGV4dCBtYXJrZWRUZXh0OihOU1N0cmluZyAqKW1hcmtlZFRleHQgc2VsZWN0ZWRUZXh0
OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBhZnRlclRleHQ6KE5TU3RyaW5nICopYWZ0ZXJUZXh0
IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6KE5TUmFuZ2UpcmFuZ2U7CisrIChXS0F1dG9jb3Jy
ZWN0aW9uQ29udGV4dCAqKWF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0Oihjb25zdCBX
ZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4dDsKIEBlbmQKIAogQGludGVy
ZmFjZSBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoVUlUZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnRfSW50ZXJuYWwpCkBAIC0zMzkzLDI1ICszMzk0LDIwIEBAIC0gKHZvaWQpYXBwbHlBdXRvY29y
cmVjdGlvbjooTlNTdHJpbmcgKiljb3JyZWN0aW9uIHRvU3RyaW5nOihOU1N0cmluZyAqKWlucHV0
IHdpCiAKIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqYXV0b2NvcnJlY3Rp
b25Db250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIGlmICghY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHN5bmNocm9u
b3VzIGNhbGwgd2hlbiA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+IGlzIGZpeGVkLgogICAgIGNv
bnN0IGJvb2wgdXNlU3luY1JlcXVlc3QgPSB0cnVlOwogCiAgICAgaWYgKHVzZVN5bmNSZXF1ZXN0
KSB7Ci0gICAgICAgIFN0cmluZyBiZWZvcmVUZXh0OwotICAgICAgICBTdHJpbmcgbWFya2VkVGV4
dDsKLSAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKLSAgICAgICAgU3RyaW5nIGFmdGVyVGV4
dDsKLSAgICAgICAgdWludDY0X3QgbG9jYXRpb247Ci0gICAgICAgIHVpbnQ2NF90IGxlbmd0aDsK
LSAgICAgICAgX3BhZ2UtPmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChiZWZvcmVUZXh0LCBtYXJr
ZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVj
dGlvbkNvbnRleHRXaXRoRGF0YTpiZWZvcmVUZXh0IG1hcmtlZFRleHQ6bWFya2VkVGV4dCBzZWxl
Y3RlZFRleHQ6c2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDphZnRlclRleHQgc2VsZWN0ZWRSYW5nZUlu
TWFya2VkVGV4dDpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV0pOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxl
ciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAgICAgUmV0YWluUHRyPFdLQ29udGVu
dFZpZXc+IHZpZXcgPSBzZWxmOwotICAgICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9u
Q29udGV4dChbdmlld10oY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1h
cmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVy
VGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgICAgICB2aWV3LT5fYXV0b2NvcnJlY3Rpb25EYXRhLmF1
dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9j
b3JyZWN0aW9uQ29udGV4dFdpdGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0
IHNlbGVjdGVkVGV4dDpzZWxlY3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJh
bmdlSW5NYXJrZWRUZXh0Ok5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7Ci0gICAgICAg
IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQg
YXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6X3BhZ2UtPmdldEF1dG9jb3JyZWN0aW9u
Q29udGV4dCgpXSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBfcGFnZS0+cmVxdWVz
dEF1dG9jb3JyZWN0aW9uQ29udGV4dChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwg
Y29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBjb250
ZXh0LCBhdXRvKSB7CisgICAgICAgIGNvbXBsZXRpb24oW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0OmNvbnRleHRdKTsKKyAgICB9KTsKIH0K
IAogLy8gVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUKQEAgLTcwOTMsMTkgKzcwODksMTkgQEAg
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tBdXRvY29ycmVjdGlvbkNvbnRleHQKIAotKyAoV0tB
dXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTooTlNT
dHJpbmcgKiliZWZvcmVUZXh0IG1hcmtlZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4dCBzZWxl
Y3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDooTlNTdHJpbmcgKilh
ZnRlclRleHQgc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDooTlNSYW5nZSlyYW5nZQorKyAoV0tB
dXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDoo
Y29uc3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKXdlYkNvbnRleHQKIHsKICAg
ICBXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqY29udGV4dCA9IFtbV0tBdXRvY29ycmVjdGlvbkNv
bnRleHQgYWxsb2NdIGluaXRdOwogCi0gICAgaWYgKFtiZWZvcmVUZXh0IGxlbmd0aF0pCi0gICAg
ICAgIGNvbnRleHQuY29udGV4dEJlZm9yZVNlbGVjdGlvbiA9IGJlZm9yZVRleHQ7Ci0gICAgaWYg
KFtzZWxlY3RlZFRleHQgbGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSBz
ZWxlY3RlZFRleHQ7Ci0gICAgaWYgKFttYXJrZWRUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRl
eHQubWFya2VkVGV4dCA9IG1hcmtlZFRleHQ7Ci0gICAgaWYgKFthZnRlclRleHQgbGVuZ3RoXSkK
LSAgICAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXJTZWxlY3Rpb24gPSBhZnRlclRleHQ7Ci0gICAg
Y29udGV4dC5yYW5nZUluTWFya2VkVGV4dCA9IHJhbmdlOworICAgIGlmICghd2ViQ29udGV4dC5j
b250ZXh0QmVmb3JlLmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlU2Vs
ZWN0aW9uID0gd2ViQ29udGV4dC5jb250ZXh0QmVmb3JlOworICAgIGlmICghd2ViQ29udGV4dC5z
ZWxlY3RlZFRleHQuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IHdl
YkNvbnRleHQuc2VsZWN0ZWRUZXh0OworICAgIGlmICghd2ViQ29udGV4dC5tYXJrZWRUZXh0Lmlz
RW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5tYXJrZWRUZXh0ID0gd2ViQ29udGV4dC5tYXJrZWRU
ZXh0OworICAgIGlmICghd2ViQ29udGV4dC5jb250ZXh0QWZ0ZXIuaXNFbXB0eSgpKQorICAgICAg
ICBjb250ZXh0LmNvbnRleHRBZnRlclNlbGVjdGlvbiA9IHdlYkNvbnRleHQuY29udGV4dEFmdGVy
OworICAgIGNvbnRleHQucmFuZ2VJbk1hcmtlZFRleHQgPSBOU01ha2VSYW5nZSh3ZWJDb250ZXh0
LmxvY2F0aW9uLCB3ZWJDb250ZXh0Lmxlbmd0aCk7CiAgICAgcmV0dXJuIFtjb250ZXh0IGF1dG9y
ZWxlYXNlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggNDcyNjg5NGE5M2E3ODcxOTA3NDZmZDUzYzY3ZDkyODIwZWFiN2RkZi4u
MzFiZmFiNDExODRkNzgyZjAzYzQzNmE4NTM5ZDZjMzNiYTcxMmJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlZpZXdV
cGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIK
ICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMTY2LDcgKzE2Nyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0JiBjb250ZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFj
ayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE3NCw3ICsxNzUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBi
ZWZvcmVUZXh0LCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBz
ZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb250ZXh0KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAt
NTY2LDIwICs1NjcsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250
ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmlu
ZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRl
eHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEF1
dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZUNvbnRleHQsIFN0cmluZyYgbWFya2Vk
VGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJDb250ZXh0LCB1aW50NjRf
dCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCitXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQg
V2ViUGFnZVByb3h5OjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgp
LCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0OjpSZXBseShiZWZv
cmVDb250ZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyQ29udGV4dCwgbG9jYXRp
b24sIGxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRv
Y29ycmVjdGlvbkNvbnRleHQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9u
Q29udGV4dDo6UmVwbHkoY29udGV4dCksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gY29udGV4dDsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOWZmNmMwYWNjYTA2MGExYWNm
NDNkMzY0NjE4OTg4ZTI5YjE3YTM3Li5jMzU3Zjc5ZWMwOGQ0ZjY4MWEyYzFkMzUwN2ZiODRlMmZi
YWVkMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ1MjAsNiArNDUyMCw3IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAv
KiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGlj
U3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcx
NUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MEQxQjY4MjIwQkRD
MEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA1NjYxMjEzMDY5OUEw
MDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
UElBdHRhY2htZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5
MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0F0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MjkxOTMxRkE1
OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tBdHRhY2htZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTgwMyw2ICs1
ODA0LDcgQEAKIAkJCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hF
dmVudElPUy5tbSAqLywKIAkJCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcCAqLywKIAkJCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVp
Y2tMb29rRG9jdW1lbnREYXRhLmggKi8sCisJCQkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8q
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovLAogCQkJCUY0NERGRUIwMUU5RTc1MkYwMDM4
RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi8sCiAJCQkJRjQ0REZFQjExRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJMkRBOTQ0OTkxODg0RTRGMDAwRUQ4
NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGExYTAyOTRhYTVhNmQ1YWY5MjM4MDQxM2RkZGM0ZTMz
YTJmZjNmZjguLjBhYzY0M2ZhYjU1MzkwZjc2M2U3YWIyODg3NjI4NzU0OWJhNDM0ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI1MCw2ICsyNTAs
NyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1
Y3QgUHJpbnRJbmZvOworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBz
dHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0
b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxpZWQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9u
Q29udGV4dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBz
ZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2
NF90JiBsZW5ndGgpOworICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiYpPiYmKTsKICAgICB2b2lk
IGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJiYpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9u
V2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC0xMTg5
LDYgKzExOTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZW5kUG9zaXRpb25JbmZvcm1hdGlv
bihJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKTsKICAgICBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiBwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0Jik7CisgICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9j
b3JyZWN0aW9uQ29udGV4dCgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDc3NmVkNzU1NjM5MzU2ZGM1
MGUwNGYzYWNhYmJiYzg5YWFiYjU2NmQuLjAzZjFhYjQxNTdhOTFhMmIyYTEzNDU3NDEzNDQ0ZmYx
OWYzY2JiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNzksNyArNzksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0
aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9y
aWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSBMZWdhY3lTeW5jCiAg
ICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKLSAgICBHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJlZm9yZUNv
bnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSBMZWdhY3lTeW5j
CisgICAgR2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dCBjb250ZXh0KSBEZWxheWVkCiAgICAgR2V0UG9zaXRpb25JbmZv
cm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1
ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24g
aW5mb3JtYXRpb24pIERlbGF5ZWQKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1
Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0
YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDVkMWIxZGQ5MDY5N2NmODBjNDgxOWEyYTNlNjk2NDA0MWI4ZWI4MjUuLmM3
MzYyOTVmMjA5ODIyNDIwNTZiZDc2ZTkyYmJmNjliYjkyNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00NSw2ICs0
NSw3IEBACiAjaW1wb3J0ICJVc2VyRGF0YS5oIgogI2ltcG9ydCAiVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mby5oIgogI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5o
IgorI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1wb3J0ICJXZWJDaHJv
bWVDbGllbnQuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAi
V2ViRnJhbWUuaCIKQEAgLTE5NzUsMTMgKzE5NzYsMTkgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3IKICAgICBjb3JyZWN0aW9uQXBwbGllZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1
dGVBdXRvY29ycmVjdGlvbkNvbnRleHQoRnJhbWUmIGZyYW1lLCBTdHJpbmcmIGNvbnRleHRCZWZv
cmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgY29u
dGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCitXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKIHsKKyAg
ICBTdHJpbmcgY29udGV4dEJlZm9yZTsKKyAgICBTdHJpbmcgbWFya2VkVGV4dDsKKyAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0OworICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CisgICAgdWludDY0X3Qg
bG9jYXRpb24gPSBOU05vdEZvdW5kOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IDA7CisKKyAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
ZW5kKCk7Ci0gICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwotICAgIGxlbmd0aCA9IDA7CiAgICAg
Y29uc3QgdW5zaWduZWQgbWluQ29udGV4dFdvcmRDb3VudCA9IDM7CiAgICAgY29uc3QgdW5zaWdu
ZWQgbWluQ29udGV4dExlbmdodCA9IDEyOwogICAgIGNvbnN0IHVuc2lnbmVkIG1heENvbnRleHRM
ZW5ndGggPSAzMDsKQEAgLTIwMzUsMjUgKzIwNDIsMTcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1
dG9jb3JyZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYgY29udGV4dEJlZm9yZSwg
U3QKICAgICAgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIG5l
eHRQb3NpdGlvbikucHRyKCkpOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB7IFdURk1v
dmUoY29udGV4dEJlZm9yZSksIFdURk1vdmUobWFya2VkVGV4dCksIFdURk1vdmUoc2VsZWN0ZWRU
ZXh0KSwgV1RGTW92ZShjb250ZXh0QWZ0ZXIpLCBsb2NhdGlvbiwgbGVuZ3RoIH07CiB9CiAKIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7Ci0gICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7Ci0gICAgU3RyaW5nIGNvbnRleHRB
ZnRlcjsKLSAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OwotICAgIFN0cmluZyBtYXJrZWRUZXh0Owot
ICAgIHVpbnQ2NF90IGxvY2F0aW9uOwotICAgIHVpbnQ2NF90IGxlbmd0aDsKLQotICAgIGNvbXB1
dGVBdXRvY29ycmVjdGlvbkNvbnRleHQobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKSwgY29udGV4dEJlZm9yZSwgbWFya2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBj
b250ZXh0QWZ0ZXIsIGxvY2F0aW9uLCBsZW5ndGgpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb250ZXh0QmVmb3JlLCBt
YXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCwg
Y2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXV0b2NvcnJl
Y3Rpb25Db250ZXh0Q2FsbGJhY2soYXV0b2NvcnJlY3Rpb25Db250ZXh0KCksIGNhbGxiYWNrSUQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBj
b250ZXh0QmVmb3JlLCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBT
dHJpbmcmIGNvbnRleHRBZnRlciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3Ro
KQordm9pZCBXZWJQYWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLCBjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBz
ZWxlY3RlZFRleHQsIGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpOwogfQogCiBzdGF0aWMgSFRNTEFu
Y2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361405</attachid>
            <date>2019-02-07 09:28:07 -0800</date>
            <delta_ts>2019-02-07 12:17:16 -0800</delta_ts>
            <desc>Actually fix non-iOS builds</desc>
            <filename>bug-194373-20190207092807.patch</filename>
            <type>text/plain</type>
            <size>27818</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDEwZDg3Y2FmM2IxYmZm
NjI3MGU2Mjc5MDg5YjcxOTRjYjE0ZmUuLjA2YmM0NmQzOGQzNzU1YTBjZTkyODRhNDgwNDJmNDEz
MGQ3ZTFhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDItMDcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gTW9k
ZXJuaXplIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQ6OmRlY29kZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0IHN0cnVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgaW5kaXZpZHVhbCBwaWVjZXMgb2Yg
YXV0b2NvcnJlY3Rpb24gY29udGV4dC4KKyAgICAgICAgQ2hhbmdlIHRvIHVzZSB0aGlzIGluc3Rl
YWQgb2YgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHdoZW4gcHJvcGFnYXRpbmcgYXV0b2NvcnJl
Y3Rpb24gY29udGV4dCBpbmZvcm1hdGlvbiBvdmVyCisgICAgICAgIElQQy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0
aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS0F1dG9jb3JyZWN0aW9uQ29udGV4
dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDpdKToKKyAgICAgICAgKCtbV0tBdXRv
Y29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6bWFya2VkVGV4
dDpzZWxlY3RlZFRleHQ6YWZ0ZXJUZXh0OnNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6XSk6IERl
bGV0ZWQuCisKKyAgICAgICAgQ2hhbmdlIHRoaXMgY29uc3RydWN0b3IgdG8gdGFrZSBhbiBlbnRp
cmUgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXV0b2Nv
cnJlY3Rpb25Db250ZXh0Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KworICAgICAgICBVc2UgRGVsYXllZCBpbnN0ZWFkIG9mIExlZ2FjeVN5bmMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisKKyAgICAgICAgUmVuYW1lZCBmcm9t
IGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQuIFRoaXMgaXMgbm93IGEgcHJpdmF0ZSBtZXRo
b2Qgb24gV2ViUGFnZSB0aGF0IHVzZXMgdGhlIGZvY3VzZWQgb3IgbWFpbgorICAgICAgICBmcmFt
ZSB0byBjb21wdXRlIGFuZCByZXR1cm4gYSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQpOiBEZWxldGVkLgorCiAy
MDE5LTAyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSb2xsIG91dCBwYXJ0cyBvZiByMjM4ODE5IHNpbmNlIGl0IGlzIGEgUExUIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q5Y2U2MTZjMzliNjNmNGZiODBhZDYxYzYz
ZWVhYWU3MmRmZjFmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCB7CisgICAgU3RyaW5nIGNvbnRleHRC
ZWZvcmU7CisgICAgU3RyaW5nIG1hcmtlZFRleHQ7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsK
KyAgICBTdHJpbmcgY29udGV4dEFmdGVyOworICAgIHVpbnQ2NF90IGxvY2F0aW9uIHsgbm90Rm91
bmQgfTsKKyAgICB1aW50NjRfdCBsZW5ndGggeyAwIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dD4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFdl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBjb250ZXh0QmVmb3JlIDw8IG1hcmtlZFRleHQgPDwgc2VsZWN0ZWRU
ZXh0IDw8IGNvbnRleHRBZnRlciA8PCBsb2NhdGlvbiA8PCBsZW5ndGg7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZXh0QmVmb3JlOworICAgIGRlY29kZXIgPj4gY29udGV4
dEJlZm9yZTsKKyAgICBpZiAoIWNvbnRleHRCZWZvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1hcmtlZFRleHQ7CisgICAgZGVjb2RlciA+
PiBtYXJrZWRUZXh0OworICAgIGlmICghbWFya2VkVGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gc2VsZWN0ZWRUZXh0OworICAgIGRlY29k
ZXIgPj4gc2VsZWN0ZWRUZXh0OworICAgIGlmICghc2VsZWN0ZWRUZXh0KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZXh0QWZ0ZXI7Cisg
ICAgZGVjb2RlciA+PiBjb250ZXh0QWZ0ZXI7CisgICAgaWYgKCFjb250ZXh0QWZ0ZXIpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9jYXRp
b247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAoIWxvY2F0aW9uKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxlbmd0aDsK
KyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpjb250ZXh0QmVmb3JlKSwg
V1RGTW92ZSgqbWFya2VkVGV4dCksIFdURk1vdmUoKnNlbGVjdGVkVGV4dCksIFdURk1vdmUoKmNv
bnRleHRBZnRlciksIFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSB9fTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKaW5kZXggZmNhMTgzY2RjYzBlMjkwODk4MWU3MDczODQ3
ZmFmOWVlMWExZGU4Zi4uMzgwODU2ZmFkZDg4NjY3NzFjNWUzMTIwNjNiMjM2MzAxNmI3MDBmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFj
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2su
aApAQCAtMzQsOCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQ7CisKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1aW50NjRf
dD4gQXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCB1aW50NjRfdCwgdWludDY0X3Q+IEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrOwordHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Jj4gQXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0
Q2FsbGJhY2s7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA3YmU5MTk0Mzg5MGI3NWQwZTI4Y2EzNzAxZjViNDY3ZWMwODc0
N2EyLi5hYmMwNzliMTc3ZWRmNWJlNTY0YjEwNGQ4NzY3ZWUzM2YwMzRkOGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTAyLDYgKzEwMiwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
LmgiCisjZW5kaWYKKwogT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5OwogCkBAIC02NDAsOCArNjQ0LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlv
biwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYs
IGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9u
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgYm9vbCBhcHBseUF1dG9jb3Jy
ZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRl
eHQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwot
ICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29udGV4dEJlZm9yZSwg
U3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBjb250ZXh0
QWZ0ZXIsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CisgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKTsKICAgICB2b2lkIHJl
cXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
ICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0
IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0
cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTE3NjEsNyArMTc2NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50
MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0b3VjaGVzQ2FsbGJhY2soY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZv
bnRTaXplLCB1aW50NjRfdCBmb250VHJhaXRzLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGF1dG9j
b3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3Qg
U3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3Ry
aW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZWxlY3Rpb25D
b250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYg
YmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50
LCBib29sJiBoYW5kbGVkKTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29s
IGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6
Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3ODc1ZWFiNDMxMTMxNGE0
ZDg3YTkyMjA3ZDUxMmU1M2RlMjhlYzcxLi4zMDJlN2RmNjdiNDRmY2JkZmIyYTMwOGI3NGRiZTlk
YTVmNGRmM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xODgsNyArMTg4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhW
ZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91
YmxlIGZvbnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQotICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBiZWZvcmVUZXh0
LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVyVGV4
dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soc3RydWN0IFdl
YktpdDo6V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2VsZWN0
ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6
RWRpdG9yU3RhdGUgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIExl
Z2FjeVN5bmMKICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAppbmRleCAzOGJlMGQwZTJhY2ZjNDZhMmY5NjljZWRkYmYwMjFiMDE2ZWQ5YTZjLi5kYzBkMTcz
YzQyMzYzYjIwMTAwYTczYmE2NWI5ZjNjOGI2YTY1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xNzYs
NyArMTc2LDYgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4
dEZpcnN0UmVjdDsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogICAgIFVJV0tBdXRvY29ycmVj
dGlvbkNvbXBsZXRpb25IYW5kbGVyIGF1dG9jb3JyZWN0aW9uSGFuZGxlcjsKLSAgICBVSVdLQXV0
b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlciBhdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGU3YzVjYTA4MjAxNDY3MzVlYWEzYTVmMDIyZjEw
OTU5Y2Y4MDRjOC4uOTJmYjZlNjY2NzhhYzA5NmU2MmU2N2ZmNTM0NzcxODQwOTVmM2U3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC02NCw2ICs2NCw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2ViVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
IgogI2ltcG9ydCAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLmgiCiAjaW1wb3J0
ICJXZWJFdmVudC5oIgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCkBAIC0yNzEsNyAr
MjcyLDcgQEAgKyAoV0tBdXRvY29ycmVjdGlvblJlY3RzICopYXV0b2NvcnJlY3Rpb25SZWN0c1dp
dGhSZWN0czooQ0dSZWN0KWZpcnN0UmVjdCBsYXN0UmUKIEBlbmQKIAogQGludGVyZmFjZSBXS0F1
dG9jb3JyZWN0aW9uQ29udGV4dCA6IFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHQKLSsgKFdLQXV0
b2NvcnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aERhdGE6KE5TU3Ry
aW5nICopYmVmb3JlVGV4dCBtYXJrZWRUZXh0OihOU1N0cmluZyAqKW1hcmtlZFRleHQgc2VsZWN0
ZWRUZXh0OihOU1N0cmluZyAqKXNlbGVjdGVkVGV4dCBhZnRlclRleHQ6KE5TU3RyaW5nICopYWZ0
ZXJUZXh0IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6KE5TUmFuZ2UpcmFuZ2U7CisrIChXS0F1
dG9jb3JyZWN0aW9uQ29udGV4dCAqKWF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0Oihj
b25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4dDsKIEBlbmQKIAog
QGludGVyZmFjZSBVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAoVUlUZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnRfSW50ZXJuYWwpCkBAIC0zMzkzLDI1ICszMzk0LDIwIEBAIC0gKHZvaWQpYXBwbHlB
dXRvY29ycmVjdGlvbjooTlNTdHJpbmcgKiljb3JyZWN0aW9uIHRvU3RyaW5nOihOU1N0cmluZyAq
KWlucHV0IHdpCiAKIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqYXV0b2Nv
cnJlY3Rpb25Db250ZXh0KSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIGlmICghY29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHN5
bmNocm9ub3VzIGNhbGwgd2hlbiA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+IGlzIGZpeGVkLgog
ICAgIGNvbnN0IGJvb2wgdXNlU3luY1JlcXVlc3QgPSB0cnVlOwogCiAgICAgaWYgKHVzZVN5bmNS
ZXF1ZXN0KSB7Ci0gICAgICAgIFN0cmluZyBiZWZvcmVUZXh0OwotICAgICAgICBTdHJpbmcgbWFy
a2VkVGV4dDsKLSAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKLSAgICAgICAgU3RyaW5nIGFm
dGVyVGV4dDsKLSAgICAgICAgdWludDY0X3QgbG9jYXRpb247Ci0gICAgICAgIHVpbnQ2NF90IGxl
bmd0aDsKLSAgICAgICAgX3BhZ2UtPmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRv
Y29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTpiZWZvcmVUZXh0IG1hcmtlZFRleHQ6bWFya2VkVGV4
dCBzZWxlY3RlZFRleHQ6c2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDphZnRlclRleHQgc2VsZWN0ZWRS
YW5nZUluTWFya2VkVGV4dDpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV0pOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIF9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJlY3Rpb25Db250ZXh0
SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XTsKLSAgICAgICAgUmV0YWluUHRyPFdL
Q29udGVudFZpZXc+IHZpZXcgPSBzZWxmOwotICAgICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChbdmlld10oY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJp
bmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgICAgICB2aWV3LT5fYXV0b2NvcnJlY3Rpb25E
YXRhLmF1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhEYXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJr
ZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxlY3RlZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxl
Y3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7Ci0g
ICAgICAgIH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNv
bnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6X3BhZ2UtPmdldEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCgpXSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBfcGFnZS0+
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRv
JiBjb250ZXh0LCBhdXRvKSB7CisgICAgICAgIGNvbXBsZXRpb24oW1dLQXV0b2NvcnJlY3Rpb25D
b250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0OmNvbnRleHRdKTsKKyAgICB9
KTsKIH0KIAogLy8gVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUKQEAgLTcwOTMsMTkgKzcwODks
MTkgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tBdXRvY29ycmVjdGlvbkNvbnRleHQKIAot
KyAoV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0
YTooTlNTdHJpbmcgKiliZWZvcmVUZXh0IG1hcmtlZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4
dCBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDooTlNTdHJp
bmcgKilhZnRlclRleHQgc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDooTlNSYW5nZSlyYW5nZQor
KyAoV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29u
dGV4dDooY29uc3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKXdlYkNvbnRleHQK
IHsKICAgICBXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAqY29udGV4dCA9IFtbV0tBdXRvY29ycmVj
dGlvbkNvbnRleHQgYWxsb2NdIGluaXRdOwogCi0gICAgaWYgKFtiZWZvcmVUZXh0IGxlbmd0aF0p
Ci0gICAgICAgIGNvbnRleHQuY29udGV4dEJlZm9yZVNlbGVjdGlvbiA9IGJlZm9yZVRleHQ7Ci0g
ICAgaWYgKFtzZWxlY3RlZFRleHQgbGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5zZWxlY3RlZFRl
eHQgPSBzZWxlY3RlZFRleHQ7Ci0gICAgaWYgKFttYXJrZWRUZXh0IGxlbmd0aF0pCi0gICAgICAg
IGNvbnRleHQubWFya2VkVGV4dCA9IG1hcmtlZFRleHQ7Ci0gICAgaWYgKFthZnRlclRleHQgbGVu
Z3RoXSkKLSAgICAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXJTZWxlY3Rpb24gPSBhZnRlclRleHQ7
Ci0gICAgY29udGV4dC5yYW5nZUluTWFya2VkVGV4dCA9IHJhbmdlOworICAgIGlmICghd2ViQ29u
dGV4dC5jb250ZXh0QmVmb3JlLmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5jb250ZXh0QmVm
b3JlU2VsZWN0aW9uID0gd2ViQ29udGV4dC5jb250ZXh0QmVmb3JlOworICAgIGlmICghd2ViQ29u
dGV4dC5zZWxlY3RlZFRleHQuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4
dCA9IHdlYkNvbnRleHQuc2VsZWN0ZWRUZXh0OworICAgIGlmICghd2ViQ29udGV4dC5tYXJrZWRU
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5tYXJrZWRUZXh0ID0gd2ViQ29udGV4dC5t
YXJrZWRUZXh0OworICAgIGlmICghd2ViQ29udGV4dC5jb250ZXh0QWZ0ZXIuaXNFbXB0eSgpKQor
ICAgICAgICBjb250ZXh0LmNvbnRleHRBZnRlclNlbGVjdGlvbiA9IHdlYkNvbnRleHQuY29udGV4
dEFmdGVyOworICAgIGNvbnRleHQucmFuZ2VJbk1hcmtlZFRleHQgPSBOU01ha2VSYW5nZSh3ZWJD
b250ZXh0LmxvY2F0aW9uLCB3ZWJDb250ZXh0Lmxlbmd0aCk7CiAgICAgcmV0dXJuIFtjb250ZXh0
IGF1dG9yZWxlYXNlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNDcyNjg5NGE5M2E3ODcxOTA3NDZmZDUzYzY3ZDkyODIwZWFi
N2RkZi4uMzFiZmFiNDExODRkNzgyZjAzYzQzNmE4NTM5ZDZjMzNiYTcxMmJhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00Niw2ICs0
Niw3IEBACiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQg
IlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMTY2LDcgKzE2Nyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBT
dHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlv
biwgdWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0JiBjb250ZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE3NCw3ICsxNzUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBiZWZvcmVUZXh0LCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0LCBtYXJrZWRU
ZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb250ZXh0KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxlY3Rpb25SZWN0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQpAQCAtNTY2LDIwICs1NjcsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRp
b25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0
b2NvcnJlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2
NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoRnVuY3Rpb248dm9pZChjb25z
dCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIFN0cmluZygpLCAwLCAwLCBDYWxsYmFja0Jh
c2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlv
bkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZUNvbnRleHQsIFN0cmluZyYg
bWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJDb250ZXh0LCB1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCitXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQgV2ViUGFnZVByb3h5OjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9uQ29u
dGV4dCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0OjpSZXBs
eShiZWZvcmVDb250ZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyQ29udGV4dCwg
bG9jYXRpb24sIGxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQgY29udGV4dDsKKyAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dDo6UmVwbHkoY29udGV4dCksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gY29u
dGV4dDsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOWZmNmMwYWNjYTA2
MGExYWNmNDNkMzY0NjE4OTg4ZTI5YjE3YTM3Li5jMzU3Zjc5ZWMwOGQ0ZjY4MWEyYzFkMzUwN2Zi
ODRlMmZiYWVkMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQ1MjAsNiArNDUyMCw3IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAz
MDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJh
UHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAz
Njk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MEQxQjY4
MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA1NjYxMjEz
MDY5OUEwMDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBUElBdHRhY2htZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0Mjkx
OTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTgw
Myw2ICs1ODA0LDcgQEAKIAkJCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2Vi
VG91Y2hFdmVudElPUy5tbSAqLywKIAkJCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVp
Y2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLywKIAkJCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIg
LyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8sCisJCQkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5
QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovLAogCQkJCUY0NERGRUIwMUU5RTc1
MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi8sCiAJCQkJRjQ0REZFQjExRTlFNzUy
RjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJMkRBOTQ0OTkxODg0RTRG
MDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGExYTAyOTRhYTVhNmQ1YWY5MjM4MDQxM2Rk
ZGM0ZTMzYTJmZjNmZjguLjBhYzY0M2ZhYjU1MzkwZjc2M2U3YWIyODg3NjI4NzU0OWJhNDM0ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI1MCw2
ICsyNTAsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1
Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7
CiBzdHJ1Y3QgUHJpbnRJbmZvOworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU7CiBzdHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0Fw
cGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxpZWQpOwogICAgIHZvaWQgcmVxdWVz
dEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldEF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3Ry
aW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24s
IHVpbnQ2NF90JiBsZW5ndGgpOworICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiYpPiYmKTsKICAg
ICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJiYpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBA
IC0xMTg5LDYgKzExOTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZW5kUG9zaXRpb25JbmZv
cm1hdGlvbihJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKTsKICAgICBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CisgICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDc3NmVkNzU1NjM5
MzU2ZGM1MGUwNGYzYWNhYmJiYzg5YWFiYjU2NmQuLjAzZjFhYjQxNTdhOTFhMmIyYTEzNDU3NDEz
NDQ0ZmYxOWYzY2JiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNzksNyArNzksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBj
b3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3Ry
aW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKSBMZWdhY3lT
eW5jCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKLSAgICBHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJl
Zm9yZUNvbnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJp
bmcgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSBMZWdh
Y3lTeW5jCisgICAgR2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKHN0cnVjdCBXZWJLaXQ6
OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBjb250ZXh0KSBEZWxheWVkCiAgICAgR2V0UG9zaXRp
b25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24gaW5mb3JtYXRpb24pIERlbGF5ZWQKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlv
bihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQog
ICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IDVkMWIxZGQ5MDY5N2NmODBjNDgxOWEyYTNlNjk2NDA0MWI4ZWI4
MjUuLmM3MzYyOTVmMjA5ODIyNDIwNTZiZDc2ZTkyYmJmNjliYjkyNDAxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00
NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJVc2VyRGF0YS5oIgogI2ltcG9ydCAiVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby5oIgogI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dElPUy5oIgorI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1wb3J0ICJX
ZWJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lt
cG9ydCAiV2ViRnJhbWUuaCIKQEAgLTE5NzUsMTMgKzE5NzYsMTkgQEAgdm9pZCBXZWJQYWdlOjpz
eW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0
cmluZyYgb3IKICAgICBjb3JyZWN0aW9uQXBwbGllZCA9IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQoRnJhbWUmIGZyYW1lLCBTdHJpbmcmIGNvbnRl
eHRCZWZvcmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmlu
ZyYgY29udGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCitX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0KCkK
IHsKKyAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsKKyAgICBTdHJpbmcgbWFya2VkVGV4dDsKKyAg
ICBTdHJpbmcgc2VsZWN0ZWRUZXh0OworICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CisgICAgdWlu
dDY0X3QgbG9jYXRpb24gPSBOU05vdEZvdW5kOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IDA7CisK
KyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuZW5kKCk7Ci0gICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOwotICAgIGxlbmd0aCA9IDA7
CiAgICAgY29uc3QgdW5zaWduZWQgbWluQ29udGV4dFdvcmRDb3VudCA9IDM7CiAgICAgY29uc3Qg
dW5zaWduZWQgbWluQ29udGV4dExlbmdodCA9IDEyOwogICAgIGNvbnN0IHVuc2lnbmVkIG1heENv
bnRleHRMZW5ndGggPSAzMDsKQEAgLTIwMzUsMjUgKzIwNDIsMTcgQEAgc3RhdGljIHZvaWQgY29t
cHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYgY29udGV4dEJl
Zm9yZSwgU3QKICAgICAgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRp
b24sIG5leHRQb3NpdGlvbikucHRyKCkpOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiB7
IFdURk1vdmUoY29udGV4dEJlZm9yZSksIFdURk1vdmUobWFya2VkVGV4dCksIFdURk1vdmUoc2Vs
ZWN0ZWRUZXh0KSwgV1RGTW92ZShjb250ZXh0QWZ0ZXIpLCBsb2NhdGlvbiwgbGVuZ3RoIH07CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7Ci0gICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7Ci0gICAgU3RyaW5nIGNv
bnRleHRBZnRlcjsKLSAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OwotICAgIFN0cmluZyBtYXJrZWRU
ZXh0OwotICAgIHVpbnQ2NF90IGxvY2F0aW9uOwotICAgIHVpbnQ2NF90IGxlbmd0aDsKLQotICAg
IGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKSwgY29udGV4dEJlZm9yZSwgbWFya2VkVGV4dCwgc2VsZWN0ZWRU
ZXh0LCBjb250ZXh0QWZ0ZXIsIGxvY2F0aW9uLCBsZW5ndGgpOwotCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb250ZXh0QmVm
b3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxl
bmd0aCwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soYXV0b2NvcnJlY3Rpb25Db250ZXh0KCksIGNhbGxi
YWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3Ry
aW5nJiBjb250ZXh0QmVmb3JlLCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRU
ZXh0LCBTdHJpbmcmIGNvbnRleHRBZnRlciwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYg
bGVuZ3RoKQordm9pZCBXZWJQYWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLCBjb250ZXh0QmVmb3JlLCBtYXJrZWRU
ZXh0LCBzZWxlY3RlZFRleHQsIGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpOwogfQogCiBzdGF0aWMg
SFRNTEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50
KQo=
</data>
<flag name="review"
          id="378086"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361439</attachid>
            <date>2019-02-07 13:40:51 -0800</date>
            <delta_ts>2019-02-07 14:57:04 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-194373-20190207134050.patch</filename>
            <type>text/plain</type>
            <size>28031</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDEwZDg3Y2FmM2IxYmZm
NjI3MGU2Mjc5MDg5YjcxOTRjYjE0ZmUuLmZiMDFlZWU4M2ZhMGU0OGExYjQwZDM1OTA2MmU5YTc0
OGRiZGZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTktMDItMDcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gTW9k
ZXJuaXplIGF1dG9jb3JyZWN0aW9uIGNvbnRleHQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbi4KKworICAgICAgICAqIFNoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dDo6ZGVjb2RlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQgc3RydWN0IHRoYXQgZW5jYXBzdWxhdGVzIHRoZSBpbmRpdmlkdWFsIHBpZWNlcyBvZiBhdXRv
Y29ycmVjdGlvbiBjb250ZXh0LgorICAgICAgICBDaGFuZ2UgdG8gdXNlIHRoaXMgaW5zdGVhZCBv
ZiBhIGxvbmcgbGlzdCBvZiBhcmd1bWVudHMgd2hlbiBwcm9wYWdhdGluZyBhdXRvY29ycmVjdGlv
biBjb250ZXh0IGluZm9ybWF0aW9uIG92ZXIKKyAgICAgICAgSVBDLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgrW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1
dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhDb250ZXh0Ol0pOgorICAgICAgICAoK1tXS0F1dG9jb3Jy
ZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTptYXJrZWRUZXh0OnNl
bGVjdGVkVGV4dDphZnRlclRleHQ6c2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDpdKTogRGVsZXRl
ZC4KKworICAgICAgICBDaGFuZ2UgdGhpcyBjb25zdHJ1Y3RvciB0byB0YWtlIGFuIGVudGlyZSBX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkNvbnRleHRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCisgICAgICAgIFVzZSBEZWxheWVkIGluc3RlYWQgb2YgTGVnYWN5U3luYy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKworICAgICAgICBSZW5h
bWVkIGZyb20gY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dC4gVGhpcyBpcyBub3cgYSBwcml2
YXRlIG1ldGhvZCBvbiBXZWJQYWdlIHRoYXQgdXNlcyB0aGUgZm9jdXNlZCBvciBtYWluCisgICAg
ICAgIGZyYW1lIHRvIGNvbXB1dGUgYW5kIHJldHVybiBhIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0U3lu
Yyk6CisKKyAgICAgICAgUmVuYW1lZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQgdG8gYXV0b2Nv
cnJlY3Rpb25Db250ZXh0U3luYy4KKworICAgICAgICAoV2ViS2l0Ojpjb21wdXRlQXV0b2NvcnJl
Y3Rpb25Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXV0
b2NvcnJlY3Rpb25Db250ZXh0KTogRGVsZXRlZC4KKwogMjAxOS0wMi0wNiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQgcGFydHMgb2YgcjIz
ODgxOSBzaW5jZSBpdCBpcyBhIFBMVCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNkOWNlNjE2YzM5YjYzZjRmYjgwYWQ2MWM2M2VlYWFlNzJkZmYxZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvTm90
Rm91bmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQgeworICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOworICAgIFN0cmluZyBtYXJr
ZWRUZXh0OworICAgIFN0cmluZyBzZWxlY3RlZFRleHQ7CisgICAgU3RyaW5nIGNvbnRleHRBZnRl
cjsKKyAgICB1aW50NjRfdCBsb2NhdGlvbiB7IG5vdEZvdW5kIH07CisgICAgdWludDY0X3QgbGVu
Z3RoIHsgMCB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgY29udGV4
dEJlZm9yZSA8PCBtYXJrZWRUZXh0IDw8IHNlbGVjdGVkVGV4dCA8PCBjb250ZXh0QWZ0ZXIgPDwg
bG9jYXRpb24gPDwgbGVuZ3RoOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0PiBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFN0cmluZz4gY29u
dGV4dEJlZm9yZTsKKyAgICBkZWNvZGVyID4+IGNvbnRleHRCZWZvcmU7CisgICAgaWYgKCFjb250
ZXh0QmVmb3JlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
U3RyaW5nPiBtYXJrZWRUZXh0OworICAgIGRlY29kZXIgPj4gbWFya2VkVGV4dDsKKyAgICBpZiAo
IW1hcmtlZFRleHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxTdHJpbmc+IHNlbGVjdGVkVGV4dDsKKyAgICBkZWNvZGVyID4+IHNlbGVjdGVkVGV4dDsKKyAg
ICBpZiAoIXNlbGVjdGVkVGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPFN0cmluZz4gY29udGV4dEFmdGVyOworICAgIGRlY29kZXIgPj4gY29udGV4dEFm
dGVyOworICAgIGlmICghY29udGV4dEFmdGVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOworICAgIGRlY29kZXIgPj4gbG9j
YXRpb247CisgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqY29udGV4dEJlZm9yZSksIFdURk1vdmUoKm1hcmtlZFRleHQpLCBX
VEZNb3ZlKCpzZWxlY3RlZFRleHQpLCBXVEZNb3ZlKCpjb250ZXh0QWZ0ZXIpLCBXVEZNb3ZlKCps
b2NhdGlvbiksIFdURk1vdmUoKmxlbmd0aCkgfX07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxs
YmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5o
CmluZGV4IGZjYTE4M2NkY2MwZTI5MDg5ODFlNzA3Mzg0N2ZhZjllZTFhMWRlOGYuLjM4MDg1NmZh
ZGQ4ODY2NzcxYzVlMzEyMDYzYjIzNjMwMTZiNzAwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgKQEAgLTM0LDggKzM0LDEwIEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Owor
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdWludDY0X3Q+IEF1dG9jb3JyZWN0aW9uRGF0YUNh
bGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90PiBB
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCY+IEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2Jl
OTE5NDM4OTBiNzVkMGUyOGNhMzcwMWY1YjQ2N2VjMDg3NDdhMi4uN2RkYWZiZGYxN2EzMDBlMDY3
ZGNhYmRhZjAyYzg1NTEyN2Q1ZGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTEwMiw2ICsxMDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2luY2x1ZGUgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgorI2VuZGlmCisKIE9CSkNfQ0xB
U1MgTlNWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIApAQCAtNjQw
LDggKzY0NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEo
Y29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBkb3VibGUs
IHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBhcHBseUF1dG9j
b3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIGJvb2wgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWlu
dDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGdldEF1dG9jb3JyZWN0
aW9uQ29udGV4dChTdHJpbmcmIGNvbnRleHRCZWZvcmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3Ry
aW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgY29udGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRp
b24sIHVpbnQ2NF90JiBsZW5ndGgpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2Nv
cnJlY3Rpb25Db250ZXh0U3luYygpOwogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQo
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0
ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAg
ICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBT
dHJpbmcmIG5ld1RleHQpOwpAQCAtMTc2MSw3ICsxNzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGF1
dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+
JiwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRU
cmFpdHMsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJh
Y2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0
X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBT
dHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJp
bmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAg
IHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNv
bnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDc4NzVlYWI0MzExMzE0YTRkODdhOTIyMDdkNTEyZTUzZGUyOGVj
NzEuLjMwMmU3ZGY2N2I0NGZjYmRmYjJhMzA4Yjc0ZGJlOWRhNWY0ZGYzZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE4OCw3
ICsxODgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEdlc3R1cmVDYWxsYmFj
ayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMy
X3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90
IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgQXV0b2NvcnJlY3Rp
b25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBT
dHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwg
dWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpXZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQgY29udGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2Vs
ZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVU
ZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9v
bCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgTGVnYWN5U3luYwogICAgIERpZFJlY2Vp
dmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDM4YmUwZDBlMmFjZmM0
NmEyZjk2OWNlZGRiZjAyMWIwMTZlZDlhNmMuLmRjMGQxNzNjNDIzNjNiMjAxMDBhNzNiYTY1Yjlm
M2M4YjZhNjVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTE3Niw3ICsxNzYsNiBAQCBzdHJ1Y3QgV0tB
dXRvQ29ycmVjdGlvbkRhdGEgewogICAgIENHUmVjdCB0ZXh0Rmlyc3RSZWN0OwogICAgIENHUmVj
dCB0ZXh0TGFzdFJlY3Q7CiAgICAgVUlXS0F1dG9jb3JyZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIg
YXV0b2NvcnJlY3Rpb25IYW5kbGVyOwotICAgIFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5k
bGVyIGF1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBkZTdjNWNhMDgyMDE0NjczNWVhYTNhNWYwMjJmMTA5NTljZjgwNGM4Li5hNzQ3ZGY5Zjhi
ZjBkNDFmNjk4YmE4NmI4ZDQyZGQwMjQ2MWMxYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY0LDYg
KzY0LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZS5oIgor
I2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1wb3J0ICJXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCiAjaW1wb3J0
ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKQEAgLTI3MSw3ICsyNzIsNyBAQCArIChXS0F1dG9jb3Jy
ZWN0aW9uUmVjdHMgKilhdXRvY29ycmVjdGlvblJlY3RzV2l0aFJlY3RzOihDR1JlY3QpZmlyc3RS
ZWN0IGxhc3RSZQogQGVuZAogCiBAaW50ZXJmYWNlIFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0IDog
VUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dAotKyAoV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKilh
dXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTooTlNTdHJpbmcgKiliZWZvcmVUZXh0IG1hcmtl
ZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4dCBzZWxlY3RlZFRleHQ6KE5TU3RyaW5nICopc2Vs
ZWN0ZWRUZXh0IGFmdGVyVGV4dDooTlNTdHJpbmcgKilhZnRlclRleHQgc2VsZWN0ZWRSYW5nZUlu
TWFya2VkVGV4dDooTlNSYW5nZSlyYW5nZTsKKysgKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICop
YXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbnRleHQ6KGNvbnN0IFdlYktpdDo6V2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0Jiljb250ZXh0OwogQGVuZAogCiBAaW50ZXJmYWNlIFVJVGV4dEludGVy
YWN0aW9uQXNzaXN0YW50IChVSVRleHRJbnRlcmFjdGlvbkFzc2lzdGFudF9JbnRlcm5hbCkKQEAg
LTMzOTMsMjUgKzMzOTQsMjAgQEAgLSAodm9pZClhcHBseUF1dG9jb3JyZWN0aW9uOihOU1N0cmlu
ZyAqKWNvcnJlY3Rpb24gdG9TdHJpbmc6KE5TU3RyaW5nICopaW5wdXQgd2kKIAogLSAodm9pZCly
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICphdXRvY29ycmVjdGlvbkNvbnRleHQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgc3luY2hyb25vdXMgY2FsbCB3aGVuIDxy
ZGFyOi8vcHJvYmxlbS8xNjIwNzAwMj4gaXMgZml4ZWQuCiAgICAgY29uc3QgYm9vbCB1c2VTeW5j
UmVxdWVzdCA9IHRydWU7CiAKICAgICBpZiAodXNlU3luY1JlcXVlc3QpIHsKLSAgICAgICAgU3Ry
aW5nIGJlZm9yZVRleHQ7Ci0gICAgICAgIFN0cmluZyBtYXJrZWRUZXh0OwotICAgICAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0OwotICAgICAgICBTdHJpbmcgYWZ0ZXJUZXh0OwotICAgICAgICB1aW50
NjRfdCBsb2NhdGlvbjsKLSAgICAgICAgdWludDY0X3QgbGVuZ3RoOwotICAgICAgICBfcGFnZS0+
Z2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KGJlZm9yZVRleHQsIG1hcmtlZFRleHQsIHNlbGVjdGVk
VGV4dCwgYWZ0ZXJUZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKTsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhE
YXRhOmJlZm9yZVRleHQgbWFya2VkVGV4dDptYXJrZWRUZXh0IHNlbGVjdGVkVGV4dDpzZWxlY3Rl
ZFRleHQgYWZ0ZXJUZXh0OmFmdGVyVGV4dCBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Ok5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgX2F1dG9j
b3JyZWN0aW9uRGF0YS5hdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyID0gW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldOwotICAgICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNl
bGY7Ci0gICAgICAgIF9wYWdlLT5yZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFt2aWV3XShj
b25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3Qg
U3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBs
b2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
LSAgICAgICAgICAgIHZpZXctPl9hdXRvY29ycmVjdGlvbkRhdGEuYXV0b2NvcnJlY3Rpb25Db250
ZXh0SGFuZGxlcihbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJlY3Rpb25Db250ZXh0
V2l0aERhdGE6YmVmb3JlVGV4dCBtYXJrZWRUZXh0Om1hcmtlZFRleHQgc2VsZWN0ZWRUZXh0OnNl
bGVjdGVkVGV4dCBhZnRlclRleHQ6YWZ0ZXJUZXh0IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6
TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldKTsKLSAgICAgICAgfSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFtXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNv
bnRleHRXaXRoQ29udGV4dDpfcGFnZS0+YXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYygpXSk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9u
Q29udGV4dChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY29tcGxldGlvbiA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBjb250ZXh0LCBhdXRvKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1dG9jb3JyZWN0aW9u
Q29udGV4dFdpdGhDb250ZXh0OmNvbnRleHRdKTsKKyAgICB9KTsKIH0KIAogLy8gVUlXZWJGb3Jt
QWNjZXNzb3J5RGVsZWdhdGUKQEAgLTcwOTMsMTkgKzcwODksMTkgQEAgQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV0tBdXRvY29ycmVjdGlvbkNvbnRleHQKIAotKyAoV0tBdXRvY29ycmVjdGlvbkNv
bnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoRGF0YTooTlNTdHJpbmcgKiliZWZvcmVU
ZXh0IG1hcmtlZFRleHQ6KE5TU3RyaW5nICopbWFya2VkVGV4dCBzZWxlY3RlZFRleHQ6KE5TU3Ry
aW5nICopc2VsZWN0ZWRUZXh0IGFmdGVyVGV4dDooTlNTdHJpbmcgKilhZnRlclRleHQgc2VsZWN0
ZWRSYW5nZUluTWFya2VkVGV4dDooTlNSYW5nZSlyYW5nZQorKyAoV0tBdXRvY29ycmVjdGlvbkNv
bnRleHQgKilhdXRvY29ycmVjdGlvbkNvbnRleHRXaXRoQ29udGV4dDooY29uc3QgV2ViS2l0OjpX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKXdlYkNvbnRleHQKIHsKICAgICBXS0F1dG9jb3JyZWN0
aW9uQ29udGV4dCAqY29udGV4dCA9IFtbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYWxsb2NdIGlu
aXRdOwogCi0gICAgaWYgKFtiZWZvcmVUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRleHQuY29u
dGV4dEJlZm9yZVNlbGVjdGlvbiA9IGJlZm9yZVRleHQ7Ci0gICAgaWYgKFtzZWxlY3RlZFRleHQg
bGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSBzZWxlY3RlZFRleHQ7Ci0g
ICAgaWYgKFttYXJrZWRUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRleHQubWFya2VkVGV4dCA9
IG1hcmtlZFRleHQ7Ci0gICAgaWYgKFthZnRlclRleHQgbGVuZ3RoXSkKLSAgICAgICAgY29udGV4
dC5jb250ZXh0QWZ0ZXJTZWxlY3Rpb24gPSBhZnRlclRleHQ7Ci0gICAgY29udGV4dC5yYW5nZUlu
TWFya2VkVGV4dCA9IHJhbmdlOworICAgIGlmICghd2ViQ29udGV4dC5jb250ZXh0QmVmb3JlLmlz
RW1wdHkoKSkKKyAgICAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlU2VsZWN0aW9uID0gd2ViQ29u
dGV4dC5jb250ZXh0QmVmb3JlOworICAgIGlmICghd2ViQ29udGV4dC5zZWxlY3RlZFRleHQuaXNF
bXB0eSgpKQorICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IHdlYkNvbnRleHQuc2VsZWN0
ZWRUZXh0OworICAgIGlmICghd2ViQ29udGV4dC5tYXJrZWRUZXh0LmlzRW1wdHkoKSkKKyAgICAg
ICAgY29udGV4dC5tYXJrZWRUZXh0ID0gd2ViQ29udGV4dC5tYXJrZWRUZXh0OworICAgIGlmICgh
d2ViQ29udGV4dC5jb250ZXh0QWZ0ZXIuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LmNvbnRl
eHRBZnRlclNlbGVjdGlvbiA9IHdlYkNvbnRleHQuY29udGV4dEFmdGVyOworICAgIGNvbnRleHQu
cmFuZ2VJbk1hcmtlZFRleHQgPSBOU01ha2VSYW5nZSh3ZWJDb250ZXh0LmxvY2F0aW9uLCB3ZWJD
b250ZXh0Lmxlbmd0aCk7CiAgICAgcmV0dXJuIFtjb250ZXh0IGF1dG9yZWxlYXNlXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
NDcyNjg5NGE5M2E3ODcxOTA3NDZmZDUzYzY3ZDkyODIwZWFiN2RkZi4uZmUxZDdhMzAxMTIyY2Vh
OGY4MWIwZDYwODNmMWFlOWI2ZGQwYmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlZpZXdVcGRhdGVEaXNwYXRjaGVy
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFs
LmgiCisjaW1wb3J0ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNpbXBvcnQgIldlYlBh
Z2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgpAQCAtMTY2LDcgKzE2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShzZWxlY3Rl
ZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25D
b250ZXh0Q2FsbGJhY2soY29uc3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0JiBjb250ZXh0LCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tz
LnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlm
ICghY2FsbGJhY2spIHsKQEAgLTE3NCw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFm
dGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShjb250ZXh0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBz
ZWxlY3Rpb25SZWN0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNTY2LDIwICs1NjcsMjIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgY28KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRv
Y29ycmVjdGlvbkNvbnRleHQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBTdHJpbmcoKSwg
U3RyaW5nKCksIFN0cmluZygpLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
KyAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFs
aWRhdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChTdHJpbmcmIGJlZm9yZUNvbnRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBz
ZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVp
bnQ2NF90JiBsZW5ndGgpCitXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkNvbnRleHRTeW5jKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldEF1dG9jb3JyZWN0aW9uQ29udGV4dDo6UmVwbHkoYmVmb3JlQ29udGV4dCwgbWFy
a2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBhZnRlckNvbnRleHQsIGxvY2F0aW9uLCBsZW5ndGgpLCBt
X3BhZ2VJRCk7CisgICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvbnRleHQ7CisgICAgbV9w
cm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2NvcnJlY3Rpb25Db250ZXh0
U3luYygpLCBNZXNzYWdlczo6V2ViUGFnZTo6QXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYzo6UmVw
bHkoY29udGV4dCksIG1fcGFnZUlEKTsKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOWZmNmMwYWNjYTA2MGExYWNmNDNkMzY0NjE4OTg4
ZTI5YjE3YTM3Li5jMzU3Zjc5ZWMwOGQ0ZjY4MWEyYzFkMzUwN2ZiODRlMmZiYWVkMmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1
MjAsNiArNDUyMCw3IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1Ymxp
Y1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRB
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNB
ODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAv
KiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAvKiBB
UElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElBdHRhY2htZW50
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5MTkxMUZBNTkxMDcw
MDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNF
IC8qIF9XS0F0dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTgwMyw2ICs1ODA0LDcgQEAKIAkJ
CQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAq
LywKIAkJCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRh
LmNwcCAqLywKIAkJCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1l
bnREYXRhLmggKi8sCisJCQkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oICovLAogCQkJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJ
Y29uVXRpbGl0aWVzLmggKi8sCiAJCQkJRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYklj
b25VdGlsaXRpZXMubW0gKi8sCiAJCQkJMkRBOTQ0OTkxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklP
U0V2ZW50RmFjdG9yeS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGExYTAyOTRhYTVhNmQ1YWY5MjM4MDQxM2RkZGM0ZTMzYTJmZjNmZjguLjYz
MDY3ZmMyYmEzNDgwNGQxYmFlNmNkOTFmMWE2NzAxMmYwYjMxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI1MCw2ICsyNTAsNyBAQCBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZv
Oworc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2ViU2Vs
ZWN0aW9uRGF0YTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUF1
dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgYm9v
bCYgY29ycmVjdGlvbkFwcGxpZWQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29u
dGV4dChDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJp
bmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQs
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgp
OworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0U3luYyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYmKT4mJik7CiAgICAgdm9pZCBnZXRQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4mJik7
CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtMTE4OSw2ICsxMTkwLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZFBvc2l0aW9uSW5mb3JtYXRpb24oSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mJik7CiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24gcG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYpOworICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBhdXRvY29ycmVjdGlvbkNv
bnRleHQoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA3NzZlZDc1NTYzOTM1NmRjNTBlMDRmM2FjYWJi
YmM4OWFhYmI1NjZkLi5lZGQyOTNlNjU3NzhlNWI2OTk4NmUzNDc1N2E4ZThlNmQzMTk3Y2JjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTc5LDcgKzc5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAgICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5n
IG9yaWdpbmFsVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3luY0Fw
cGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQp
IC0+IChib29sIGF1dG9jb3JyZWN0aW9uQXBwbGllZCkgTGVnYWN5U3luYwogICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAg
R2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKFN0cmluZyBiZWZvcmVDb250ZXh0LCBTdHJp
bmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVyQ29udGV4dCwg
dWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgTGVnYWN5U3luYworICAgIEF1dG9j
b3JyZWN0aW9uQ29udGV4dFN5bmMoKSAtPiAoc3RydWN0IFdlYktpdDo6V2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0IGNvbnRleHQpIERlbGF5ZWQKICAgICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0
cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpIC0+IChz
dHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlv
bikgRGVsYXllZAogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggNWQxYjFkZDkwNjk3Y2Y4MGM0ODE5YTJhM2U2OTY0MDQxYjhlYjgyNS4uOTE3Y2ZlMzgzNWQ1
MWZjMTkwM2RkMzJmNGZlYzMzYTUxZGVkZDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bXBvcnQgIlVzZXJEYXRhLmgiCiAjaW1wb3J0ICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
LmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCisjaW1wb3J0
ICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5o
IgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5o
IgpAQCAtMTk3NSwxMyArMTk3NiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3Jy
ZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcgogICAgIGNv
cnJlY3Rpb25BcHBsaWVkID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3RyaW5n
JiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBjb250ZXh0QWZ0ZXIs
IHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKK1dlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQoKQogeworICAgIFN0cmluZyBj
b250ZXh0QmVmb3JlOworICAgIFN0cmluZyBtYXJrZWRUZXh0OworICAgIFN0cmluZyBzZWxlY3Rl
ZFRleHQ7CisgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKKyAgICB1aW50NjRfdCBsb2NhdGlvbiA9
IE5TTm90Rm91bmQ7CisgICAgdWludDY0X3QgbGVuZ3RoID0gMDsKKworICAgIGF1dG8mIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0g
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gZW5kUG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKLSAg
ICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7Ci0gICAgbGVuZ3RoID0gMDsKICAgICBjb25zdCB1bnNp
Z25lZCBtaW5Db250ZXh0V29yZENvdW50ID0gMzsKICAgICBjb25zdCB1bnNpZ25lZCBtaW5Db250
ZXh0TGVuZ2h0ID0gMTI7CiAgICAgY29uc3QgdW5zaWduZWQgbWF4Q29udGV4dExlbmd0aCA9IDMw
OwpAQCAtMjAzNSwyNSArMjA0MiwxNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlQXV0b2NvcnJlY3Rp
b25Db250ZXh0KEZyYW1lJiBmcmFtZSwgU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdAogICAgICAg
ICAgICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShS
YW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgbmV4dFBvc2l0aW9u
KS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHsgV1RGTW92ZShjb250ZXh0
QmVmb3JlKSwgV1RGTW92ZShtYXJrZWRUZXh0KSwgV1RGTW92ZShzZWxlY3RlZFRleHQpLCBXVEZN
b3ZlKGNvbnRleHRBZnRlciksIGxvY2F0aW9uLCBsZW5ndGggfTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
LSAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsKLSAgICBTdHJpbmcgY29udGV4dEFmdGVyOwotICAg
IFN0cmluZyBzZWxlY3RlZFRleHQ7Ci0gICAgU3RyaW5nIG1hcmtlZFRleHQ7Ci0gICAgdWludDY0
X3QgbG9jYXRpb247Ci0gICAgdWludDY0X3QgbGVuZ3RoOwotCi0gICAgY29tcHV0ZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLCBjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGNvbnRleHRBZnRl
ciwgbG9jYXRpb24sIGxlbmd0aCk7Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnRleHRCZWZvcmUsIG1hcmtlZFRleHQs
IHNlbGVjdGVkVGV4dCwgY29udGV4dEFmdGVyLCBsb2NhdGlvbiwgbGVuZ3RoLCBjYWxsYmFja0lE
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkNvbnRl
eHRDYWxsYmFjayhhdXRvY29ycmVjdGlvbkNvbnRleHQoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGNvbnRleHRCZWZv
cmUsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgY29u
dGV4dEFmdGVyLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCit2b2lkIFdl
YlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dFN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
Y29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLCBjb250ZXh0QmVmb3JlLCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRl
eHQsIGNvbnRleHRBZnRlciwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpOwogfQogCiBzdGF0aWMgSFRNTEFuY2hvckVsZW1l
bnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>