<?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>193437</bug_id>
          
          <creation_ts>2019-01-14 23:35:09 -0800</creation_ts>
          <short_desc>[WHLSL] Implement the return checker and the unreachable code checker</short_desc>
          <delta_ts>2019-01-16 02:44:50 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>193487</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>rmorisset</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494548</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-14 23:35:09 -0800</bug_when>
    <thetext>[WHLSL] Implement the return checker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494549</commentid>
    <comment_count>1</comment_count>
      <attachid>359140</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-14 23:36:11 -0800</bug_when>
    <thetext>Created attachment 359140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494553</commentid>
    <comment_count>2</comment_count>
      <attachid>359142</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-14 23:54:50 -0800</bug_when>
    <thetext>Created attachment 359142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494704</commentid>
    <comment_count>3</comment_count>
      <attachid>359142</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-15 10:29:47 -0800</bug_when>
    <thetext>Comment on attachment 359142
Patch

Why do we want this pass?
There is nothing in the spec about requiring functions to return, and it is undecidable in general. And indeed isBoolCastFromTrue treats true differently from 2+2==4.
I am strongly opposed to keeping this pass, especially as I don&apos;t think it buys us anything (is there a difference for us between a function that never terminates and one that returns in a trillion years?)

The unreachable code checker is less unreasonable, but because of its design does not match at all what the spec says (for example it correctly catches {return 42; do_stuff();}, but it misses {break; do_stuff();}.
Please also skip this pass for now, it is not necessary to having a testable compiler, and I will try to hack something based on the spec in its stead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494729</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-15 11:08:47 -0800</bug_when>
    <thetext>(In reply to Robin Morisset from comment #3)
&gt; Comment on attachment 359142 [details]
&gt; Patch
&gt; 
&gt; Why do we want this pass?
&gt; There is nothing in the spec about requiring functions to return, and it is
&gt; undecidable in general. And indeed isBoolCastFromTrue treats true
&gt; differently from 2+2==4.
&gt; I am strongly opposed to keeping this pass, especially as I don&apos;t think it
&gt; buys us anything (is there a difference for us between a function that never
&gt; terminates and one that returns in a trillion years?)
&gt; 
&gt; The unreachable code checker is less unreasonable, but because of its design
&gt; does not match at all what the spec says (for example it correctly catches
&gt; {return 42; do_stuff();}, but it misses {break; do_stuff();}.
&gt; Please also skip this pass for now, it is not necessary to having a testable
&gt; compiler, and I will try to hack something based on the spec in its stead.

A function that is supposed to return an int but has no return statements would break the type system, wouldn’t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494733</commentid>
    <comment_count>5</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-15 11:32:00 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; (In reply to Robin Morisset from comment #3)
&gt; &gt; Comment on attachment 359142 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Why do we want this pass?
&gt; &gt; There is nothing in the spec about requiring functions to return, and it is
&gt; &gt; undecidable in general. And indeed isBoolCastFromTrue treats true
&gt; &gt; differently from 2+2==4.
&gt; &gt; I am strongly opposed to keeping this pass, especially as I don&apos;t think it
&gt; &gt; buys us anything (is there a difference for us between a function that never
&gt; &gt; terminates and one that returns in a trillion years?)
&gt; &gt; 
&gt; &gt; The unreachable code checker is less unreasonable, but because of its design
&gt; &gt; does not match at all what the spec says (for example it correctly catches
&gt; &gt; {return 42; do_stuff();}, but it misses {break; do_stuff();}.
&gt; &gt; Please also skip this pass for now, it is not necessary to having a testable
&gt; &gt; compiler, and I will try to hack something based on the spec in its stead.
&gt; 
&gt; A function that is supposed to return an int but has no return statements
&gt; would break the type system, wouldn’t it?

More precisely: A non-void function that can reach the last statement of its body without hitting a return statement of the right type would break the type system.
Same for a function hitting a return statement of the wrong type.
A function that loops forever on the other hand is perfectly safe (in our type system), even if we claim it returns int.

This pass is not testing the type of returns (I guess it is verified in some part of the type checker I have not yet reviewed), and it tries to verify a lot more than just &quot;no reaching the end of the function body without having returned&quot;, including preventing (some) infinite loops.

I won&apos;t prevent you from landing it if you really need it to get the compiler running, but I am uncomfortable with having these useless checks that do not match anything in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495042</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 02:44:50 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 193487 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359140</attachid>
            <date>2019-01-14 23:36:11 -0800</date>
            <delta_ts>2019-01-14 23:54:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193437-20190114233610.patch</filename>
            <type>text/plain</type>
            <size>17708</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4MmFmNThjNWZkM2I2
YTFjOGU5N2I3ZjBlYWFhYTM5YWJlMGY4Ni4uMWEyOTFkNTI0MjZmNDgwMTQ3NmNmNGEzNDZjZjg0
NGNmMjRmMzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAxLTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBJ
bXBsZW1lbnQgdGhlIHJldHVybiBjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6Ly9naXRo
dWIuY29tL2dwdXdlYi9XSExTTC9ibG9iL21hc3Rlci9Tb3VyY2UvUmVjdXJzaW9uQ2hlY2tlci5t
anMgaW50byBDKysuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgaXQgaXNuJ3QgaG9v
a2VkIHVwIHlldC4gTm90IGVub3VnaCBvZiB0aGUgY29tcGlsZXIgZXhpc3RzIHRvIGhhdmUgYW55
IG1lYW5pbmdmdWwgc29ydAorICAgICAgICBvZiB0ZXN0LiBXaGVuIGVub3VnaCBvZiB0aGUgY29t
cGlsZXIgaXMgcHJlc2VudCwgSSdsbCBwb3J0IHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24n
cyB0ZXN0IHN1aXRlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXR1
cm5DaGVja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UmV0dXJuQ2hl
Y2tlcjo6UmV0dXJuQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UmV0dXJuQ2hl
Y2tlcjo6bWVyZ2VSZXR1cm5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UmV0dXJu
Q2hlY2tlcjo6aXNCb29sQ2FzdEZyb21MaXRlcmFsVHJ1ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6Y2hlY2tSZXR1cm5zKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJldHVybkNoZWNrZXIuaDogQWRkZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAxLTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBJ
bXBsZW1lbnQgdGhlIFR5cGUgQ2hlY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXR1cm5DaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmV0dXJuQ2hlY2tlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTdjNzQ2NzVmYjM4NzE1NzFjOTAyMmE2ZTlmMTNiMThkNjQ2ZjZiNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmV0dXJuQ2hlY2tl
ci5jcHAKQEAgLTAsMCArMSwyNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0hMU0xSZXR1cm5DaGVja2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRG9XaGls
ZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTElmU3Rh
dGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCisjaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJX
SExTTFZpc2l0b3IuaCIKKyNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgewor
CitjbGFzcyBSZXR1cm5DaGVja2VyIDogcHVibGljIFZpc2l0b3IgeworcHVibGljOgorICAgIFJl
dHVybkNoZWNrZXIoSW50cmluc2ljcyYgaW50cmluc2ljcykKKyAgICAgICAgOiBtX2ludHJpbnNp
Y3MoaW50cmluc2ljcykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmV0dXJuQ2hlY2tl
cigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFJldHVyblN0eWxlIHsK
KyAgICAgICAgRGVmaW5pdGVseVJldHVybnMsCisgICAgICAgIERlZmluaXRlbHlEb2VzbnRSZXR1
cm4sCisgICAgICAgIEhhc250UmV0dXJuZWRZZXQKKyAgICB9OworCisgICAgUmV0dXJuU3R5bGUg
bWVyZ2VSZXR1cm5TdHlsZShSZXR1cm5TdHlsZSBhLCBSZXR1cm5TdHlsZSBiKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChhKSB7CisgICAgICAgIGNhc2UgUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlS
ZXR1cm5zOgorICAgICAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJu
OgorICAgICAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsKKyAg
ICAgICAgICAgIHJldHVybiBSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDsKKyAgICAgICAg
Y2FzZSBSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgIHJldHVybiBS
ZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJv
b2wgaXNCb29sQ2FzdEZyb21MaXRlcmFsVHJ1ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24p
CisgICAgeworICAgICAgICBpZiAoIWlzPEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24p
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBjYWxsRXhwcmVzc2lv
biA9IGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pOworICAgICAgICBp
ZiAoIWNhbGxFeHByZXNzaW9uLmlzQ2FzdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIW1hdGNoZXMoKmNhbGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBlKCksIG1f
aW50cmluc2ljcy5ib29sVHlwZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpLnNpemUoKSAhPSAxKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBhcmd1bWVudCA9IHN0YXRpY19jYXN0PEFT
VDo6RXhwcmVzc2lvbiY+KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cygpWzBdKTsKKyAgICAgICAg
aWYgKCFpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihhcmd1bWVudCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGF1dG8mIGJvb2xlYW5MaXRlcmFsID0gZG93bmNhc3Q8QVNUOjpC
b29sZWFuTGl0ZXJhbD4oYXJndW1lbnQpOworICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVyYWwu
dmFsdWUoKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
JiBmdW5jdGlvbkRlZmluaXRpb24pIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobWF0Y2hl
cyhmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpLCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9u
RGVmaW5pdGlvbi5ibG9jaygpKTsKKyAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIEFTU0VSVChtX3N0YWNrLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0
byBib2R5VmFsdWUgPSBtX3N0YWNrLmxhc3QoKTsKKyAgICAgICAgaWYgKGJvZHlWYWx1ZSA9PSBS
ZXR1cm5TdHlsZTo6RGVmaW5pdGVseURvZXNudFJldHVybiB8fCBib2R5VmFsdWUgPT0gUmV0dXJu
U3R5bGU6Okhhc250UmV0dXJuZWRZZXQpCisgICAgICAgICAgICBzZXRFcnJvcigpOworICAgIH0K
KworICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYgYmxvY2spIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkgeworICAgICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRlbWVudCk7CisgICAgICAgICAgICBzd2l0Y2gg
KG1fc3RhY2sudGFrZUxhc3QoKSkgeworICAgICAgICAgICAgY2FzZSBSZXR1cm5TdHlsZTo6RGVm
aW5pdGVseVJldHVybnM6CisgICAgICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5
bGU6OkRlZmluaXRlbHlSZXR1cm5zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuOgorICAgICAgICAg
ICAgICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJu
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIFJldHVyblN0eWxl
OjpIYXNudFJldHVybmVkWWV0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxlOjpIYXNu
dFJldHVybmVkWWV0KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRlZmluaXRl
bHlEb2VzbnRSZXR1cm4pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYp
IG92ZXJyaWRlCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZy4gQ29u
c2lkZXIgYSBsb29wIGxpa2U6CisgICAgICAgIC8vCisgICAgICAgIC8vIGludCBmb28oKSB7IGZv
ciAoOzspIHsgY29udGludWU7IH0gfQorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIHByb2dy
YW0gc2hvdWxkbid0IGNsYWltIHRoYXQgdGhlIHByb2JsZW0gaXMgdGhhdCBpdCBkb2Vzbid0IHJl
dHVybi4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzE3MgorICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5pdGVseURv
ZXNudFJldHVybik7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBk
b1doaWxlTG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b1doaWxlTG9vcC5ib2R5KCkpOworICAgICAgICBpZiAobV9zdGFjay50YWtlTGFzdCgpID09IFJl
dHVyblN0eWxlOjpEZWZpbml0ZWx5UmV0dXJucykgeworICAgICAgICAgICAgbV9zdGFjay5hcHBl
bmQoUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlSZXR1cm5zKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6SGFzbnRSZXR1
cm5lZFlldCk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBpcyByaWdodAor
ICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5pdGVseURvZXNudFJldHVy
bik7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApIG92ZXJy
aWRlCisgICAgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwor
ICAgICAgICBhdXRvIGJvZHlSZXR1cm4gPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIGlm
ICghZm9yTG9vcC5jb25kaXRpb24oKSB8fCBpc0Jvb2xDYXN0RnJvbUxpdGVyYWxUcnVlKCpmb3JM
b29wLmNvbmRpdGlvbigpKSkgeworICAgICAgICAgICAgc3dpdGNoIChib2R5UmV0dXJuKSB7Cisg
ICAgICAgICAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5UmV0dXJuczoKKyAgICAgICAg
ICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5pdGVseVJldHVybnMpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgUmV0dXJuU3R5bGU6OkRl
ZmluaXRlbHlEb2VzbnRSZXR1cm46CisgICAgICAgICAgICBjYXNlIFJldHVyblN0eWxlOjpIYXNu
dFJldHVybmVkWWV0OgorICAgICAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxl
OjpIYXNudFJldHVybmVkWWV0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6Okhhc250
UmV0dXJuZWRZZXQpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpJZlN0YXRlbWVudCYg
aWZTdGF0ZW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxz
ZUJvZHkoKSkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJv
ZHkoKSk7CisgICAgICAgICAgICBhdXRvIGJvZHlWYWx1ZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsK
KyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7
CisgICAgICAgICAgICBhdXRvIGVsc2VWYWx1ZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAg
ICAgICAgIG1fc3RhY2suYXBwZW5kKG1lcmdlUmV0dXJuU3R5bGUoYm9keVZhbHVlLCBlbHNlVmFs
dWUpKTsKKyAgICAgICAgfQorICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6SGFz
bnRSZXR1cm5lZFlldCk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5p
dGVseVJldHVybnMpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1l
bnQmIHN3aXRjaFN0YXRlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNlZW1zIGxpa2UgaXQncyBtaXNzaW5nIHRoaW5ncy4gRm9yIGV4YW1wbGUsIHdlIG5lZWQg
dG8gYmUgc21hcnQgYWJvdXQgdGhpczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gZm9yICg7Oykg
eworICAgICAgICAvLyAgICAgc3dpdGNoICguLi4pIHsKKyAgICAgICAgLy8gICAgIC4uLgorICAg
ICAgICAvLyAgICAgICAgIGNvbnRpbnVlOyAvLyBUaGlzIGNvbnRpbnVlcyB0aGUgZm9yIGxvb3AK
KyAgICAgICAgLy8gICAgIH0KKyAgICAgICAgLy8gfQorICAgICAgICAvLworICAgICAgICAvLyBJ
J20gbm90IHN1cmUgd2hhdCB0aGF0IG1lYW5zIGZvciB0aGlzIGFuYWx5c2lzLiBJJ20gc3RhcnRp
bmcgdG8gdGhpbmsgdGhhdCB0aGUgcmlnaHQgd2F5IHRvCisgICAgICAgIC8vIGJ1aWxkIHRoaXMg
YW5hbHlzaXMgaXMgdG8gcnVuIGEgdmlzaXRvciB0aGF0IGJ1aWxkcyBhIENGRyBhbmQgdGhlbiBh
bmFseXplIHRoZSBDRkcuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzcxNzIKKworICAgICAgICBPcHRpb25hbDxSZXR1cm5TdHlsZT4gcmV0dXJu
U3R5bGU7CisgICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5z
d2l0Y2hDYXNlcygpKSB7CisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2Fz
ZS5ibG9jaygpKTsKKyAgICAgICAgICAgIGF1dG8gYm9keVN0eWxlID0gbV9zdGFjay50YWtlTGFz
dCgpOworICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UgbmVlZCB0aGlzIGRl
bW9uc3RyYXRlcyB0aGUgbmVlZCBmb3IgQ0ZHIGFuYWx5c2lzLgorICAgICAgICAgICAgaWYgKGJv
ZHlTdHlsZSA9PSBSZXR1cm5TdHlsZTo6RGVmaW5pdGVseURvZXNudFJldHVybikKKyAgICAgICAg
ICAgICAgICBib2R5U3R5bGUgPSBSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDsKKyAgICAg
ICAgICAgIGlmIChyZXR1cm5TdHlsZSkKKyAgICAgICAgICAgICAgICByZXR1cm5TdHlsZSA9IG1l
cmdlUmV0dXJuU3R5bGUoKnJldHVyblN0eWxlLCBib2R5U3R5bGUpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVyblN0eWxlID0gYm9keVN0eWxlOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVChyZXR1cm5TdHlsZSk7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKCpyZXR1
cm5TdHlsZSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OlRyYXAmKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlSZXR1
cm5zKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJu
U3R5bGU6Okhhc250UmV0dXJuZWRZZXQpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpX
aGlsZUxvb3AmIHdoaWxlTG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKKyAgICAgICAgYXV0byBib2R5UmV0dXJuID0gbV9z
dGFjay50YWtlTGFzdCgpOworICAgICAgICBpZiAoaXNCb29sQ2FzdEZyb21MaXRlcmFsVHJ1ZSh3
aGlsZUxvb3AuY29uZGl0aW9uYWwoKSkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYm9keVJldHVy
bikgeworICAgICAgICAgICAgY2FzZSBSZXR1cm5TdHlsZTo6RGVmaW5pdGVseVJldHVybnM6Cisg
ICAgICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlSZXR1
cm5zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIFJldHVyblN0
eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuOgorICAgICAgICAgICAgY2FzZSBSZXR1cm5TdHls
ZTo6SGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgICAgICBtX3N0YWNrLmFwcGVuZChSZXR1
cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxl
OjpIYXNudFJldHVybmVkWWV0KTsKKyAgICB9CisKKyAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNp
Y3M7CisgICAgVmVjdG9yPFJldHVyblN0eWxlPiBtX3N0YWNrOworfTsKKworYm9vbCBjaGVja1Jl
dHVybnMoUHJvZ3JhbSYgcHJvZ3JhbSkKK3sKKyAgICBSZXR1cm5DaGVja2VyIHJldHVybkNoZWNr
ZXIocHJvZ3JhbS5pbnRyaW5zaWNzKCkpOworICAgIHJldHVybkNoZWNrZXIuVmlzaXRvcjo6dmlz
aXQocHJvZ3JhbSk7CisgICAgcmV0dXJuICFyZXR1cm5DaGVja2VyLmVycm9yKCk7Cit9CisKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUmV0dXJuQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXR1cm5DaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY4MjM3MTAyNmU4Nzli
MjE4YjU4ZDg1ZGRhNWMxNTVhMjVlODczMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmV0dXJuQ2hlY2tlci5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUHJvZ3Jh
bTsKKworYm9vbCBjaGVja1JldHVybnMoUHJvZ3JhbSYpOworCit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDYzZjA5NjExYjY4MmMxODk0MjE2MzQyMmY4Y2YwMzViYjQyODA5MDYu
LjE4YmY4ZTU4Y2ZlMmJlYzg5NTgwMGEyMzY1MDEzZjRhYzExMmM1NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0zMjEsNiArMzIxLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNz
LmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xS
ZXR1cm5DaGVja2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkzYTRhNTMxY2Y0
M2EzOTkzNzJjYjg4N2IxY2U2OWQ5ZjUwMjZiOGIuLmRlYWZkMmJjNTg4NTY4NzgzZWUxZjMyYWYz
OGQwNzM0MWUzMjhiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MTMsMTQgKzY0MTMsMTYgQEAKIAkJMUM2NjI2MEYxQzZF
N0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU2MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODFCOTU4MEU5NzMz
MDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRW50cnlQb2ludFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDODQwQjk3MjFFQzQwMDcwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0hMU0xDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
ODQwQjk5MjFFQzQwMDgwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExT
TEdhdGhlckVudHJ5UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg0MEI5QjIxRUM0
MDA5MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDODFCOTU4MEU5NzMz
MDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRW50cnlQb2ludFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMQWRkcmVzc1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAvKiBWZXJzaW9uLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDOUFFNURFMjFFREI4NDQwMDY5RDVGMiAvKiBXSExTTFJldHVy
bkNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xSZXR1cm5DaGVja2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5QUU1REYyMUVEQjg0NDAwNjlENUYyIC8q
IFdITFNMUmV0dXJuQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFJldHVybkNoZWNrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMDMwREMyNTU5NTAwNjVBOTk0
IC8qIEV2ZW50TG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEV2ZW50TG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlF
MTUwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
RjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI1NDQyLDYgKzI1NDQ0LDggQEAKIAkJCQlDMjM0QTk5OTIxRTkwRjI5MDAz
Qzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCAqLywKIAkJCQlDMjM0QTk5NzIx
RTkwRjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8sCiAJCQkJQzIz
NEE5OUQyMUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovLAorCQkJCTFD
OUFFNURFMjFFREI4NDQwMDY5RDVGMiAvKiBXSExTTFJldHVybkNoZWNrZXIuY3BwICovLAorCQkJ
CTFDOUFFNURGMjFFREI4NDQwMDY5RDVGMiAvKiBXSExTTFJldHVybkNoZWNrZXIuaCAqLywKIAkJ
CQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICov
LAogCQkJCUMyMzRBOUE5MjFFOTJDMTcwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVBcnJheU9w
ZXJhdG9yTGVuZ3RoLmNwcCAqLywKIAkJCQlDMjM0QTlBRjIxRTkyQzFCMDAzQzk4NEQgLyogV0hM
U0xTeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359142</attachid>
            <date>2019-01-14 23:54:50 -0800</date>
            <delta_ts>2019-01-15 16:41:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193437-20190114235450.patch</filename>
            <type>text/plain</type>
            <size>24696</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4MmFmNThjNWZkM2I2
YTFjOGU5N2I3ZjBlYWFhYTM5YWJlMGY4Ni4uNDBhNTdhNjBmOTgzYTM4M2Y5ZmUwOWVkMGQ4ODM2
NWJmZDgxNzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTAxLTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBJ
bXBsZW1lbnQgdGhlIHJldHVybiBjaGVja2VyIGFuZCB0aGUgdW5yZWFjaGFibGUgY29kZSBjaGVj
a2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9XSExTTC9ibG9i
L21hc3Rlci9Tb3VyY2UvUmV0dXJuQ2hlY2tlci5tanMgYW5kCisgICAgICAgIGh0dHBzOi8vZ2l0
aHViLmNvbS9ncHV3ZWIvV0hMU0wvYmxvYi9tYXN0ZXIvU291cmNlL1VucmVhY2hhYmxlQ29kZUNo
ZWNrZXIubWpzIGludG8gQysrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGl0IGlz
bid0IGhvb2tlZCB1cCB5ZXQuIE5vdCBlbm91Z2ggb2YgdGhlIGNvbXBpbGVyIGV4aXN0cyB0byBo
YXZlIGFueSBtZWFuaW5nZnVsIHNvcnQKKyAgICAgICAgb2YgdGVzdC4gV2hlbiBlbm91Z2ggb2Yg
dGhlIGNvbXBpbGVyIGlzIHByZXNlbnQsIEknbGwgcG9ydCB0aGUgcmVmZXJlbmNlIGltcGxlbWVu
dGF0aW9uJ3MgdGVzdCBzdWl0ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmV0dXJuQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlJl
dHVybkNoZWNrZXI6Om1lcmdlUmV0dXJuU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlJldHVybkNoZWNrZXI6OmlzQm9vbENhc3RGcm9tTGl0ZXJhbFRydWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlJldHVybkNoZWNrZXI6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpjaGVja1JldHVybnMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmV0dXJuQ2hlY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpSZXR1cm5D
aGVja2VyOjpSZXR1cm5DaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpSZXR1cm5D
aGVja2VyOjp0YWtlUmV0dXJuU3R5bGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OlVucmVhY2hhYmxlQ29kZUNoZWNrZXI6OlVucmVhY2hhYmxlQ29kZUNoZWNrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrVW5yZWFjaGFibGVDb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFVucmVhY2hhYmxlQ29kZUNoZWNrZXIuaDog
QWRkZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAxLTE0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBJbXBsZW1lbnQgdGhlIFR5cGUg
Q2hlY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXR1cm5DaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmV0dXJuQ2hlY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ2ZjVmMmI0YzczMWYzYTFm
NTJiZGYyNjFmNWNhZjA1MDkzMWYzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmV0dXJuQ2hlY2tlci5jcHAKQEAgLTAsMCArMSwy
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xS
ZXR1cm5DaGVja2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xD
YWxsRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRl
ICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVk
ZSAiV0hMU0xJbnRyaW5zaWNzLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCisjaW5jbHVk
ZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKKyNp
bmNsdWRlICJXSExTTFdoaWxlTG9vcC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCithdXRvIFJldHVybkNoZWNr
ZXI6Om1lcmdlUmV0dXJuU3R5bGUoUmV0dXJuU3R5bGUgYSwgUmV0dXJuU3R5bGUgYikgLT4gUmV0
dXJuU3R5bGUKK3sKKyAgICBzd2l0Y2ggKGEpIHsKKyAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZp
bml0ZWx5UmV0dXJuczoKKyAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0
dXJuOgorICAgICAgICBpZiAoYSA9PSBiKQorICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAg
IHJldHVybiBSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDsKKyAgICBjYXNlIFJldHVyblN0
eWxlOjpIYXNudFJldHVybmVkWWV0OgorICAgICAgICByZXR1cm4gUmV0dXJuU3R5bGU6Okhhc250
UmV0dXJuZWRZZXQ7CisgICAgfQorfQorCitib29sIFJldHVybkNoZWNrZXI6OmlzQm9vbENhc3RG
cm9tTGl0ZXJhbFRydWUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQoreworICAgIGlmICgh
aXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBhdXRvJiBjYWxsRXhwcmVzc2lvbiA9IGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Np
b24+KGV4cHJlc3Npb24pOworICAgIGlmICghY2FsbEV4cHJlc3Npb24uaXNDYXN0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1hdGNoZXMoKmNhbGxFeHByZXNzaW9uLmNhc3RS
ZXR1cm5UeXBlKCksIG1faW50cmluc2ljcy5ib29sVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKS5zaXplKCkgIT0gMSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIGFyZ3VtZW50ID0gc3RhdGljX2Nhc3Q8QVNU
OjpFeHByZXNzaW9uJj4oY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKClbMF0pOworICAgIGlmICgh
aXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oYXJndW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byYgYm9vbGVhbkxpdGVyYWwgPSBkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFs
Pihhcmd1bWVudCk7CisgICAgcmV0dXJuIGJvb2xlYW5MaXRlcmFsLnZhbHVlKCk7Cit9CisKK3Zv
aWQgUmV0dXJuQ2hlY2tlcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
RGVmaW5pdGlvbikKK3sKKyAgICBpZiAobWF0Y2hlcyhmdW5jdGlvbkRlZmluaXRpb24udHlwZSgp
LCBtX2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7CisgICAgaWYgKGVycm9y
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGFjay5zaXplKCkgPT0gMSk7Cisg
ICAgYXV0byBib2R5VmFsdWUgPSBtX3N0YWNrLmxhc3QoKTsKKyAgICBpZiAoYm9keVZhbHVlID09
IFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuIHx8IGJvZHlWYWx1ZSA9PSBSZXR1
cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCkKKyAgICAgICAgc2V0RXJyb3IoKTsKK30KKwordm9p
ZCBSZXR1cm5DaGVja2VyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKK3sKKyAgICBmb3IgKGF1
dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkgeworICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoc3RhdGVtZW50KTsKKyAgICAgICAgc3dpdGNoIChtX3N0YWNrLnRha2VMYXN0KCkp
IHsKKyAgICAgICAgY2FzZSBSZXR1cm5TdHlsZTo6RGVmaW5pdGVseVJldHVybnM6CisgICAgICAg
ICAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5pdGVseVJldHVybnMpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9l
c250UmV0dXJuOgorICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRlZmlu
aXRlbHlEb2VzbnRSZXR1cm4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFJl
dHVyblN0eWxlOjpIYXNudFJldHVybmVkWWV0OgorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6Okhhc250UmV0dXJu
ZWRZZXQpOworfQorCit2b2lkIFJldHVybkNoZWNrZXI6OnZpc2l0KEFTVDo6QnJlYWsmKQorewor
ICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuKTsK
K30KKwordm9pZCBSZXR1cm5DaGVja2VyOjp2aXNpdChBU1Q6OkNvbnRpbnVlJikKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZy4gQ29uc2lkZXIgYSBsb29wIGxpa2U6CisgICAgLy8K
KyAgICAvLyBpbnQgZm9vKCkgeyBmb3IgKDs7KSB7IGNvbnRpbnVlOyB9IH0KKyAgICAvLworICAg
IC8vIFRoaXMgcHJvZ3JhbSBzaG91bGRuJ3QgY2xhaW0gdGhhdCB0aGUgcHJvYmxlbSBpcyB0aGF0
IGl0IGRvZXNuJ3QgcmV0dXJuLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzcxNzIKKyAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6RGVmaW5p
dGVseURvZXNudFJldHVybik7Cit9CisKK3ZvaWQgUmV0dXJuQ2hlY2tlcjo6dmlzaXQoQVNUOjpE
b1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hp
bGVMb29wLmJvZHkoKSk7CisgICAgaWYgKG1fc3RhY2sudGFrZUxhc3QoKSA9PSBSZXR1cm5TdHls
ZTo6RGVmaW5pdGVseVJldHVybnMpIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5
bGU6OkRlZmluaXRlbHlSZXR1cm5zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0
YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCk7Cit9CisKK3ZvaWQgUmV0
dXJuQ2hlY2tlcjo6dmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpCit7CisgICAgLy8gRklYTUU6IE1h
a2Ugc3VyZSB0aGlzIGlzIHJpZ2h0CisgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRl
ZmluaXRlbHlEb2VzbnRSZXR1cm4pOworfQorCit2b2lkIFJldHVybkNoZWNrZXI6OnZpc2l0KEFT
VDo6Rm9yTG9vcCYgZm9yTG9vcCkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5i
b2R5KCkpOworICAgIGF1dG8gYm9keVJldHVybiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICBp
ZiAoIWZvckxvb3AuY29uZGl0aW9uKCkgfHwgaXNCb29sQ2FzdEZyb21MaXRlcmFsVHJ1ZSgqZm9y
TG9vcC5jb25kaXRpb24oKSkpIHsKKyAgICAgICAgc3dpdGNoIChib2R5UmV0dXJuKSB7CisgICAg
ICAgIGNhc2UgUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlSZXR1cm5zOgorICAgICAgICAgICAgbV9z
dGFjay5hcHBlbmQoUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlSZXR1cm5zKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBSZXR1cm5TdHlsZTo6RGVmaW5pdGVseURvZXNudFJldHVy
bjoKKyAgICAgICAgY2FzZSBSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAg
ICAgIG1fc3RhY2suYXBwZW5kKFJldHVyblN0eWxlOjpIYXNudFJldHVybmVkWWV0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3N0YWNrLmFwcGVuZChSZXR1
cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCk7Cit9CisKK3ZvaWQgUmV0dXJuQ2hlY2tlcjo6dmlz
aXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCit7CisgICAgaWYgKGlmU3RhdGVtZW50
LmVsc2VCb2R5KCkpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJv
ZHkoKSk7CisgICAgICAgIGF1dG8gYm9keVZhbHVlID0gbV9zdGFjay50YWtlTGFzdCgpOworICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOworICAgICAg
ICBhdXRvIGVsc2VWYWx1ZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgbV9zdGFjay5h
cHBlbmQobWVyZ2VSZXR1cm5TdHlsZShib2R5VmFsdWUsIGVsc2VWYWx1ZSkpOworICAgIH0KKyAg
ICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCk7Cit9CisKK3Zv
aWQgUmV0dXJuQ2hlY2tlcjo6dmlzaXQoQVNUOjpSZXR1cm4mKQoreworICAgIG1fc3RhY2suYXBw
ZW5kKFJldHVyblN0eWxlOjpEZWZpbml0ZWx5UmV0dXJucyk7Cit9CisKK3ZvaWQgUmV0dXJuQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGl0J3MgbWlzc2luZyB0aGluZ3MuIEZvciBleGFt
cGxlLCB3ZSBuZWVkIHRvIGJlIHNtYXJ0IGFib3V0IHRoaXM6CisgICAgLy8KKyAgICAvLyBmb3Ig
KDs7KSB7CisgICAgLy8gICAgIHN3aXRjaCAoLi4uKSB7CisgICAgLy8gICAgIC4uLgorICAgIC8v
ICAgICAgICAgY29udGludWU7IC8vIFRoaXMgY29udGludWVzIHRoZSBmb3IgbG9vcAorICAgIC8v
ICAgICB9CisgICAgLy8gfQorICAgIC8vCisgICAgLy8gSSdtIG5vdCBzdXJlIHdoYXQgdGhhdCBt
ZWFucyBmb3IgdGhpcyBhbmFseXNpcy4gSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIHRoYXQgdGhlIHJp
Z2h0IHdheSB0bworICAgIC8vIGJ1aWxkIHRoaXMgYW5hbHlzaXMgaXMgdG8gcnVuIGEgdmlzaXRv
ciB0aGF0IGJ1aWxkcyBhIENGRyBhbmQgdGhlbiBhbmFseXplIHRoZSBDRkcuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzE3MgorCisgICAgT3B0aW9u
YWw8UmV0dXJuU3R5bGU+IHJldHVyblN0eWxlOworICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6
IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOworICAgICAgICBhdXRvIGJvZHlTdHlsZSA9IG1fc3Rh
Y2sudGFrZUxhc3QoKTsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UgbmVlZCB0
aGlzIGRlbW9uc3RyYXRlcyB0aGUgbmVlZCBmb3IgQ0ZHIGFuYWx5c2lzLgorICAgICAgICBpZiAo
Ym9keVN0eWxlID09IFJldHVyblN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuKQorICAgICAg
ICAgICAgYm9keVN0eWxlID0gUmV0dXJuU3R5bGU6Okhhc250UmV0dXJuZWRZZXQ7CisgICAgICAg
IGlmIChyZXR1cm5TdHlsZSkKKyAgICAgICAgICAgIHJldHVyblN0eWxlID0gbWVyZ2VSZXR1cm5T
dHlsZSgqcmV0dXJuU3R5bGUsIGJvZHlTdHlsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVyblN0eWxlID0gYm9keVN0eWxlOworICAgIH0KKyAgICBBU1NFUlQocmV0dXJuU3R5bGUp
OworICAgIG1fc3RhY2suYXBwZW5kKCpyZXR1cm5TdHlsZSk7Cit9CisKK3ZvaWQgUmV0dXJuQ2hl
Y2tlcjo6dmlzaXQoQVNUOjpUcmFwJikKK3sKKyAgICBtX3N0YWNrLmFwcGVuZChSZXR1cm5TdHls
ZTo6RGVmaW5pdGVseVJldHVybnMpOworfQorCit2b2lkIFJldHVybkNoZWNrZXI6OnZpc2l0KEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKQoreworICAgIG1fc3RhY2suYXBwZW5k
KFJldHVyblN0eWxlOjpIYXNudFJldHVybmVkWWV0KTsKK30KKwordm9pZCBSZXR1cm5DaGVja2Vy
Ojp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQoreworICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKKyAgICBhdXRvIGJvZHlSZXR1cm4gPSBtX3N0YWNrLnRh
a2VMYXN0KCk7CisgICAgaWYgKGlzQm9vbENhc3RGcm9tTGl0ZXJhbFRydWUod2hpbGVMb29wLmNv
bmRpdGlvbmFsKCkpKSB7CisgICAgICAgIHN3aXRjaCAoYm9keVJldHVybikgeworICAgICAgICBj
YXNlIFJldHVyblN0eWxlOjpEZWZpbml0ZWx5UmV0dXJuczoKKyAgICAgICAgICAgIG1fc3RhY2su
YXBwZW5kKFJldHVyblN0eWxlOjpEZWZpbml0ZWx5UmV0dXJucyk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgUmV0dXJuU3R5bGU6OkRlZmluaXRlbHlEb2VzbnRSZXR1cm46Cisg
ICAgICAgIGNhc2UgUmV0dXJuU3R5bGU6Okhhc250UmV0dXJuZWRZZXQ6CisgICAgICAgICAgICBt
X3N0YWNrLmFwcGVuZChSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgbV9zdGFjay5hcHBlbmQoUmV0dXJuU3R5
bGU6Okhhc250UmV0dXJuZWRZZXQpOworfQorCitib29sIGNoZWNrUmV0dXJucyhQcm9ncmFtJiBw
cm9ncmFtKQoreworICAgIFJldHVybkNoZWNrZXIgcmV0dXJuQ2hlY2tlcihwcm9ncmFtLmludHJp
bnNpY3MoKSk7CisgICAgcmV0dXJuQ2hlY2tlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKKyAg
ICByZXR1cm4gIXJldHVybkNoZWNrZXIuZXJyb3IoKTsKK30KKworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXR1
cm5DaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJl
dHVybkNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjJhYTNiYWRmNmU2ZGM5NDg3ZTc1OWY3M2E5MzRm
Y2ZkMGQ5MjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXR1cm5DaGVja2VyLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TFZpc2l0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIEJsb2Nr
OworY2xhc3MgQnJlYWs7CitjbGFzcyBDb250aW51ZTsKK2NsYXNzIERvV2hpbGVMb29wOworY2xh
c3MgRXhwcmVzc2lvbjsKK2NsYXNzIEZhbGx0aHJvdWdoOworY2xhc3MgRm9yTG9vcDsKK2NsYXNz
IEZ1bmN0aW9uRGVmaW5pdGlvbjsKK2NsYXNzIElmU3RhdGVtZW50OworY2xhc3MgUmV0dXJuOwor
Y2xhc3MgU3dpdGNoU3RhdGVtZW50OworY2xhc3MgVHJhcDsKK2NsYXNzIFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50OworY2xhc3MgV2hpbGVMb29wOworCit9CisKK2NsYXNzIEludHJpbnNp
Y3M7CitjbGFzcyBQcm9ncmFtOworCitjbGFzcyBSZXR1cm5DaGVja2VyIDogcHVibGljIFZpc2l0
b3IgeworcHVibGljOgorICAgIFJldHVybkNoZWNrZXIoSW50cmluc2ljcyYgaW50cmluc2ljcykK
KyAgICAgICAgOiBtX2ludHJpbnNpY3MoaW50cmluc2ljcykKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB+UmV0dXJuQ2hlY2tlcigpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3MgUmV0
dXJuU3R5bGUgeworICAgICAgICBEZWZpbml0ZWx5UmV0dXJucywKKyAgICAgICAgRGVmaW5pdGVs
eURvZXNudFJldHVybiwKKyAgICAgICAgSGFzbnRSZXR1cm5lZFlldAorICAgIH07CisKKyAgICBS
ZXR1cm5TdHlsZSB0YWtlUmV0dXJuU3R5bGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
Y2suc2l6ZSgpID09IDEpOworICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFzdCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBSZXR1cm5TdHlsZSBtZXJnZVJldHVyblN0eWxlKFJldHVyblN0
eWxlLCBSZXR1cm5TdHlsZSk7CisgICAgYm9vbCBpc0Jvb2xDYXN0RnJvbUxpdGVyYWxUcnVlKEFT
VDo6RXhwcmVzc2lvbiYpOworCisgICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpIG92ZXJyaWRlOworICAg
IHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpD
b250aW51ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpIG92
ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRlOworICAg
IHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6
OklmU3RhdGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYpIG92
ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHZpc2l0KEFTVDo6VHJhcCYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlz
aXQoQVNUOjpXaGlsZUxvb3AmKSBvdmVycmlkZTsKKworICAgIEludHJpbnNpY3MmIG1faW50cmlu
c2ljczsKKyAgICBWZWN0b3I8UmV0dXJuU3R5bGU+IG1fc3RhY2s7Cit9OworCitib29sIGNoZWNr
UmV0dXJucyhQcm9ncmFtJik7CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVW5yZWFjaGFibGVDb2RlQ2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFVucmVhY2hh
YmxlQ29kZUNoZWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZTFjNzQ4M2MyNmI1MmJkODg2NGU0M2Nj
OWU5YjRmMTI3NzA1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFVucmVhY2hhYmxlQ29kZUNoZWNrZXIuY3BwCkBAIC0wLDAgKzEs
NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xV
bnJlYWNoYWJsZUNvZGVDaGVja2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiV0hMU0xSZXR1cm5DaGVja2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIFdITFNMIHsKKworY2xhc3MgVW5yZWFjaGFibGVDb2RlQ2hlY2tlciA6IHB1YmxpYyBWaXNp
dG9yIHsKK3B1YmxpYzoKKyAgICBVbnJlYWNoYWJsZUNvZGVDaGVja2VyKEludHJpbnNpY3MmIGlu
dHJpbnNpY3MpCisgICAgICAgIDogbV9yZXR1cm5DaGVja2VyKGludHJpbnNpY3MpCisgICAgewor
ICAgIH0KKworICAgIHZpcnR1YWwgflVucmVhY2hhYmxlQ29kZUNoZWNrZXIoKSA9IGRlZmF1bHQ7
CisKK3ByaXZhdGU6CisgICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KGJsb2NrKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAg
ICAgICAgICBtX3JldHVybkNoZWNrZXIuY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVu
dHMoKVtpXSk7CisgICAgICAgICAgICBzd2l0Y2ggKG1fcmV0dXJuQ2hlY2tlci50YWtlUmV0dXJu
U3R5bGUoKSkgeworICAgICAgICAgICAgY2FzZSBSZXR1cm5DaGVja2VyOjpSZXR1cm5TdHlsZTo6
RGVmaW5pdGVseVJldHVybnM6CisgICAgICAgICAgICBjYXNlIFJldHVybkNoZWNrZXI6OlJldHVy
blN0eWxlOjpEZWZpbml0ZWx5RG9lc250UmV0dXJuOgorICAgICAgICAgICAgICAgIHNldEVycm9y
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBSZXR1cm5DaGVj
a2VyOjpSZXR1cm5TdHlsZTo6SGFzbnRSZXR1cm5lZFlldDoKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFJldHVybkNoZWNr
ZXIgbV9yZXR1cm5DaGVja2VyOworfTsKKworYm9vbCBjaGVja1VucmVhY2hhYmxlQ29kZShQcm9n
cmFtJiBwcm9ncmFtKQoreworICAgIFVucmVhY2hhYmxlQ29kZUNoZWNrZXIgdW5yZWFjaGFibGVD
b2RlQ2hlY2tlcihwcm9ncmFtLmludHJpbnNpY3MoKSk7CisgICAgdW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKKyAgICByZXR1cm4gIXVucmVhY2hhYmxlQ29k
ZUNoZWNrZXIuZXJyb3IoKTsKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xVbnJlYWNoYWJsZUNvZGVDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFVucmVhY2hh
YmxlQ29kZUNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTI0YTUyMWYwMjRiYWMyZmNkMzIxNjJlYWNm
YTc4NzAzYzM4Y2I0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmgKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBQcm9ncmFtOwor
Citib29sIGNoZWNrVW5yZWFjaGFibGVDb2RlKFByb2dyYW0mKTsKKworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCA2M2YwOTYxMWI2ODJjMTg5NDIxNjM0MjJmOGNmMDM1YmI0Mjgw
OTA2Li4zYzhiMWIxODhiMTAyMDhhNGZiYjU0YmQ2ZTMxMzkyNzYzZTRiMjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMzIxLDYgKzMyMSw4IEBAIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmlu
c2ljcy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmV0dXJuQ2hlY2tlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVW5yZWFjaGFi
bGVDb2RlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5M2E0YTUzMWNm
NDNhMzk5MzcyY2I4ODdiMWNlNjlkOWY1MDI2YjhiLi43Y2YxZGYyNTAzNTJhNDNlMzQxNzk1MmVj
NTM0ZDAzZmZkM2NjNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDEzLDE0ICs2NDEzLDE4IEBACiAJCTFDNjYyNjBGMUM2
RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1NjBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzgxQjk1ODBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDODQwQjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Qzg0MEI5OTIxRUM0MDA4MDBEMDUwMEQgLyogV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg0MEI5QTIxRUM0MDA5MDBEMDUwMEQgLyogV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xHYXRoZXJFbnRy
eVBvaW50SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4NDBCOUIyMUVD
NDAwOTAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzgxQjk1ODBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDODQwQjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzlBRTVERTIxRURCODQ0MDA2OUQ1RjIgLyogV0hMU0xSZXR1
cm5DaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmV0dXJuQ2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOUFFNURGMjFFREI4NDQwMDY5RDVGMiAv
KiBXSExTTFJldHVybkNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm5DaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOUFFNUUyMjFFREM1NTQwMDY5RDVG
MiAvKiBXSExTTFVucmVhY2hhYmxlQ29kZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM5QUU1RTMyMUVEQzU1NDAwNjlENUYyIC8qIFdITFNMVW5yZWFjaGFibGVDb2RlQ2hl
Y2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFVucmVhY2hhYmxlQ29kZUNoZWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMDMwREMyNTU5NTAwNjVBOTk0IC8qIEV2
ZW50TG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2
ZW50TG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMTUwREMy
NTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0Uw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1NDQyLDYgKzI1NDQ2LDggQEAKIAkJCQlDMjM0QTk5OTIxRTkwRjI5MDAzQzk4NEQg
LyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcCAqLywKIAkJCQlDMjM0QTk5NzIxRTkwRjI4
MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8sCiAJCQkJQzIzNEE5OUQy
MUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovLAorCQkJCTFDOUFFNURF
MjFFREI4NDQwMDY5RDVGMiAvKiBXSExTTFJldHVybkNoZWNrZXIuY3BwICovLAorCQkJCTFDOUFF
NURGMjFFREI4NDQwMDY5RDVGMiAvKiBXSExTTFJldHVybkNoZWNrZXIuaCAqLywKIAkJCQlDMjFC
Rjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovLAogCQkJ
CUMyMzRBOUE5MjFFOTJDMTcwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9y
TGVuZ3RoLmNwcCAqLywKIAkJCQlDMjM0QTlBRjIxRTkyQzFCMDAzQzk4NEQgLyogV0hMU0xTeW50
aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oICovLApAQCAtMjU0NTEsNiArMjU0NTcsOCBAQAog
CQkJCUMyMzRBOUFDMjFFOTJDMTkwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5oICovLAogCQkJCUMyMzRBOUI0MjFFOTJDMjIwMDNDOTg0RCAvKiBXSExTTFN5
bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwICovLAogCQkJCUMyMzRBOUI1MjFFOTJDMjMw
MDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuaCAqLywKKwkJCQkx
QzlBRTVFMjIxRURDNTU0MDA2OUQ1RjIgLyogV0hMU0xVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmNw
cCAqLywKKwkJCQkxQzlBRTVFMzIxRURDNTU0MDA2OUQ1RjIgLyogV0hMU0xVbnJlYWNoYWJsZUNv
ZGVDaGVja2VyLmggKi8sCiAJCQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODREIC8qIFdITFNMVmlz
aXRvci5jcHAgKi8sCiAJCQkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRv
ci5oICovLAogCQkJKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>