<?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>130304</bug_id>
          
          <creation_ts>2014-03-16 09:40:59 -0700</creation_ts>
          <short_desc>Remove all uses of deprecatedCharacters from JavaScriptCore</short_desc>
          <delta_ts>2014-03-17 00:24:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990970</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 09:40:59 -0700</bug_when>
    <thetext>Remove all uses of deprecatedCharacters from JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990972</commentid>
    <comment_count>1</comment_count>
      <attachid>226842</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 09:52:47 -0700</bug_when>
    <thetext>Created attachment 226842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990976</commentid>
    <comment_count>2</comment_count>
      <attachid>226842</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-16 10:32:55 -0700</bug_when>
    <thetext>Comment on attachment 226842
Patch

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

&gt; Source/JavaScriptCore/API/JSValueRef.cpp:336
&gt; +    if (str.is8Bit()) {

I think this will crash if str is a null string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990977</commentid>
    <comment_count>3</comment_count>
      <attachid>226843</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 10:33:50 -0700</bug_when>
    <thetext>Created attachment 226843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990979</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 10:36:19 -0700</bug_when>
    <thetext>Committed r165703: &lt;http://trac.webkit.org/changeset/165703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991098</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-16 22:43:28 -0700</bug_when>
    <thetext>Looks like this broke JSC tests on bots:

1   0x109b29a9e WTF::StringImpl::destroy(WTF::StringImpl*)
2   0x10998ea0c JSStringRelease
3   0x10999fa31 -[JSValue valueForProperty:]
4   0x109725741 __testObjectiveCAPI_block_invoke354
5   0x10994b45d -[JSContext(Internal) valueFromNotifyException:]
6   0x10994abba -[JSContext evaluateScript:withSourceURL:]
7   0x10971ebe2 testObjectiveCAPI
8   0x10971651c main
9   0x7fff8b5645fd start
10  0x1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991106</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-16 23:18:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Looks like this broke JSC tests on bots:
&gt; 
&gt; 1   0x109b29a9e WTF::StringImpl::destroy(WTF::StringImpl*)
&gt; 2   0x10998ea0c JSStringRelease
&gt; 3   0x10999fa31 -[JSValue valueForProperty:]
&gt; 4   0x109725741 __testObjectiveCAPI_block_invoke354
&gt; 5   0x10994b45d -[JSContext(Internal) valueFromNotifyException:]
&gt; 6   0x10994abba -[JSContext evaluateScript:withSourceURL:]
&gt; 7   0x10971ebe2 testObjectiveCAPI
&gt; 8   0x10971651c main
&gt; 9   0x7fff8b5645fd start
&gt; 10  0x1

Fixed this in &lt;http://trac.webkit.org/r165719&gt;. Not sure why webkit-patch added an r=andersca.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991129</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-17 00:24:03 -0700</bug_when>
    <thetext>Thanks Andreas, for fixing my mistake.

Maybe someone who understands the rationale should add a comment explaining why we go out of our way to make a new string instead of using the existing one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226842</attachid>
            <date>2014-03-16 09:52:47 -0700</date>
            <delta_ts>2014-03-16 10:33:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130304-20140316095233.patch</filename>
            <type>text/plain</type>
            <size>27997</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjIxMDQ0YjFmNTg1NWRjMjk4NTM3MzExYmQxOTI0Yjg2ZTAwY2ExLi5mM2U4NjhjODJiNzkwYWJi
NmI3NGNkODQ4NmUzZTRiNjk3NGI3YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNC0wMy0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGFsbCB1c2VzIG9mIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGZyb20gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMDMwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZU1ha2VGcm9tSlNPTlN0
cmluZyk6IFVzZSBjaGFyYWN0ZXJzMTYgaW4gdGhlIDE2LWJpdCBjb2RlIHBhdGguCisgICAgICAg
ICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjp+T3Bh
cXVlSlNTdHJpbmcpOiBVc2UgY2hhcmFjdGVycyAxNiBpbiB0aGUgMTYtYml0IGNvZGUgcGF0aC4K
KyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKTogR2V0IHJpZCBvZiBjdXN0b20g
SWRlbnRpZmllciBjb25zdHJ1Y3RvciwgYW5kCisgICAgICAgIGp1c2UgdXNlIHRoZSBzdGFuZGFy
ZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmluZy4KKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFy
YWN0ZXJzKTogVXNlIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0IGluc3RlYWQgb2YgYQorICAg
ICAgICBoYW5kLXdyaXR0ZW4gYWx0ZXJuYXRpdmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOiBD
cmVhdGUgSW5zcGVjdG9yU3RyaW5nIGZyb20gU3RyaW5nIGRpcmVjdGx5CisgICAgICAgIGluc3Rl
YWQgb2YgaW52b2x2aW5nIGEgY2hhcmFjdGVyIHBvaW50ZXIuIFVzZSB0aGUgU3RyaW5nIGZyb20g
SWRlbnRpZmllcgorICAgICAgICBkaXJlY3RseSBpbnN0ZWFkIG9mIG1ha2luZyBhIG5ldyBTdHJp
bmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJl
Z2V4U291cmNlKTogVXNlIFN0cmluZ0J1aWxkZXIKKyAgICAgICAgaW5zdGVhZCBvZiBidWlsZGlu
ZyBhIFN0cmluZyBhIGNoYXJhY3RlciBhdCBhIHRpbWUuIFRoaXMgaXMgc3RpbGwgYSB2ZXJ5IHNs
b3cKKyAgICAgICAgd2F5IHRvIGRvIHRoaXMuIEFsc28gdXNlIHN0cmNociB0byBzZWFyY2ggZm9y
IGEgY2hhcmFjdGVyIGluc3RlYWQgb2YgYnVpbGRpbmcKKyAgICAgICAgYSBTdHJpbmcgZXZlcnkg
dGltZSBqdXN0IHRvIHVzZSBmaW5kIG9uIGl0LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmRvdWJsZVF1b3RlU3RyaW5nKTog
UmVtb3ZlIHVubmVjZXNzYXJ5IHRyaXAgdGhyb3VnaCBhCisgICAgICAgIGNoYXJhY3RlciBwb2lu
dGVyLiBUaGlzIGlzIHN0aWxsIGEgcmVhbGx5IHNsb3cgd2F5IHRvIGRvIHRoaXMuCisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04pOiBVc2UgU3RyaW5nVmlldzo6
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjpkZXByZWNh
dGVkQ2hhcmFjdGVycy4gU3RpbGwgc2xvdyB0byBhbHdheXMgdXBjb252ZXJ0LgorCisgICAgICAg
ICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUu
CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDogRGl0dG8uCisKKyAgICAgICAg
KiBydW50aW1lL0lkZW50aWZpZXIuaDogUmVtb3ZlZCBkZXByZWNhdGVkQ2hhcmFjdGVycyBmdW5j
dGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjplbmNvZGUpOiBBZGRlZCBhIHR5cGUgY2FzdCB0byBhdm9pZCBhbWJpZ3Vp
dHkgd2l0aCB0aGUgdHdvIGNoYXJhY3Rlci0KKyAgICAgICAgYXBwZW5kaW5nIGZ1bmN0aW9ucyBm
cm9tIEpTU3RyaW5nQnVpbGRlci4gUmVtb3ZlZCB1bm5lZWRlZCBjb2RlIGR1cGxpY2F0aW5nCisg
ICAgICAgIHdoYXQgSlNTdHJpbmdCdWlsZGVyIGFscmVhZHkgZG9lcyBpbiBpdHMgY2hhcmFjdGVy
IGFwcGVuZCBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6ZGVjb2RlKTogRGVsZXRlZCBjb2RlIHRo
YXQgY3JlYXRlcyBhIEpTU3RyaW5nQnVpbGRlciB0aGF0IGlzIG5ldmVyIHVzZWQuCisgICAgICAg
IChKU0M6OnBhcnNlSW50T3ZlcmZsb3cpOiBDaGFuZ2VkIGxlbmd0aHMgdG8gdW5zaWduZWQuIE1h
ZGUgb25seSB0aGUgb3ZlcmxvYWQgdGhhdAorICAgICAgICBpcyB1c2VkIG91dHNpZGUgdGhpcyBm
aWxlIGhhdmUgZXh0ZXJuYWwgbGlua2FnZS4gQWRkZWQgYSBuZXcgb3ZlcmxvYWQgdGhhdCB0YWtl
cworICAgICAgICBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChKU0M6OnBhcnNlSW50KTogVXNlIFN0
cmluZ1ZpZXc6OnN1YnN0cmluZyB0byBjYWxsIHBhcnNlSW50T3ZlcmZsb3cuCisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNFc2NhcGUpOiBVc2UgSlNCdWlsZGVyOjphcHBlbmQgaW4gYSBtb3JlIGVm
ZmljaWVudCB3YXkgZm9yIGEKKyAgICAgICAgc2luZ2xlIGNoYXJhY3Rlci4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDogUmVtb3ZlZCB1bnVzZWQgb3Zlcmxv
YWRzIG9mIHBhcnNlSW50T3ZlcmZsb3cuCisKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nQnVp
bGRlci5oOiBNYXJrZWQgdGhpcyAibGlnaHRseSBkZXByZWNhdGVkIi4KKyAgICAgICAgKEpTQzo6
SlNTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBPdmVybG9hZGVkIGZvciBiZXR0ZXIgc3BlZWQgd2l0
aCA4LWJpdCBjaGFyYWN0ZXJzLgorICAgICAgICBNYWRlIG9uZSBvdmVybG9hZCBwcml2YXRlLiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGJ1ZyB3aGVyZSB3ZSB3b3VsZCByZXNlcnZlIGNhcGFjaXR5Cisg
ICAgICAgIGluIHRoZSA4LWJpdCBidWZmZXIgYnV0IHRoZW4gYXBwZW5kIHRvIHRoZSAxNi1iaXQg
YnVmZmVyLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOiBSZW1vdmVk
IHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKTogVXNlIFN0cmluZ1Zp
ZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0LgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMaW5rKTogRGl0dG8uCisKIDIwMTQtMDMtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgQ2hlY2tIYXNJbnN0YW5jZS9J
bnN0YW5jZU9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGQ3N2I3NzJkMjY2ODc3ODhjMmFkZDE5YmIyYzU0MTNiMzFmMDI0MTcu
LmNmYjczNjU0MjNjNGY4MTE4MTdjMDdmOTAzYWY5ZjE1OGQ5MThjNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBhbGwgdXNlcyBvZiBkZXByZWNhdGVkQ2hhcmFjdGVycyBmcm9tIEphdmFTY3Jp
cHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzAzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9kdG9hLmg6CisgICAgICAgIChXVEY6OnBhcnNlRG91YmxlKTogQWRkZWQgYW4gb3Zlcmxv
YWQgdGhhdCB0YWtlcyBhIFN0cmluZ1ZpZXcuCisKIDIwMTQtMDMtMTUgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbGwgdXNlcyBvZiBkZXByZWNhdGVk
Q2hhcmFjdGVycyBmcm9tIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVS
ZWYuY3BwCmluZGV4IDIwZmQzNmI0MzFmNTA5MzQ5ZTdkOTQxOTI3NThjNGFhNjA2MjJmMDAuLjI3
MDU4YTM0NGFkMjNhZTNlNGIwMTk5YWM4ZWUxM2RhMWQxYzQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtMzMzLDEyICszMzMsMTEgQEAgSlNWYWx1ZVJl
ZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IHN0cmluZykKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKICAgICBTdHJpbmcgc3RyID0gc3RyaW5nLT5zdHJpbmcoKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7Ci0gICAgaWYgKGxlbmd0aCAmJiBzdHIu
aXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0
ci5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIFN0cmljdEpTT04pOworICAgIGlmIChzdHIuaXM4Qml0
KCkpIHsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5jaGFy
YWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICByZXR1cm4gdG9S
ZWYoZXhlYywgcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKTsKICAgICB9Ci0gICAgTGl0ZXJhbFBh
cnNlcjxVQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsZW5n
dGgsIFN0cmljdEpTT04pOworICAgIExpdGVyYWxQYXJzZXI8VUNoYXI+IHBhcnNlcihleGVjLCBz
dHIuY2hhcmFjdGVyczE2KCksIHN0ci5sZW5ndGgoKSwgU3RyaWN0SlNPTik7CiAgICAgcmV0dXJu
IHRvUmVmKGV4ZWMsIHBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKaW5kZXggNjhmMGY1YzExNDA1MzUx
YzVlMmE5M2U5OGY2MzhmNWM2OWRjNWY1Zi4uOTQ5YzQ3YzEyMzU0NTBmOTRhZTEzMWZmNWU1MjUy
NDJlMDBlODMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTQ3LDcg
KzQ4LDcgQEAgT3BhcXVlSlNTdHJpbmc6On5PcGFxdWVKU1N0cmluZygpCiAgICAgaWYgKCFjaGFy
YWN0ZXJzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fc3RyaW5nLmlzOEJpdCgpICYm
IG1fc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgPT0gY2hhcmFjdGVycykKKyAgICBpZiAo
IW1fc3RyaW5nLmlzOEJpdCgpICYmIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpID09IGNoYXJhY3Rl
cnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZhc3RGcmVlKGNoYXJhY3RlcnMpOwpAQCAtNzAs
MTAgKzcxLDcgQEAgSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihWTSogdm0p
IGNvbnN0CiAgICAgaWYgKG1fc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIElkZW50
aWZpZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlmaWVyKTsKIAotICAgIGlmIChtX3N0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBt
X3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBJ
ZGVudGlmaWVyKHZtLCBtX3N0cmluZyk7CiB9CiAKIGNvbnN0IFVDaGFyKiBPcGFxdWVKU1N0cmlu
Zzo6Y2hhcmFjdGVycygpCkBAIC05MSwxMiArODksNyBAQCBjb25zdCBVQ2hhciogT3BhcXVlSlNT
dHJpbmc6OmNoYXJhY3RlcnMoKQogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9zdHJpbmcubGVu
Z3RoKCk7CiAgICAgVUNoYXIqIG5ld0NoYXJhY3RlcnMgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KGZh
c3RNYWxsb2MobGVuZ3RoICogc2l6ZW9mKFVDaGFyKSkpOwotCi0gICAgaWYgKG1fc3RyaW5nLmlz
OEJpdCgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICBuZXdDaGFyYWN0ZXJzW2ldID0gbV9zdHJpbmcuY2hhcmFjdGVyczgoKVtpXTsK
LSAgICB9IGVsc2UKLSAgICAgICAgbWVtY3B5KG5ld0NoYXJhY3RlcnMsIG1fc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChuZXdDaGFyYWN0ZXJzKTsKIAogICAgIGlm
ICghbV9jaGFyYWN0ZXJzLmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKGNoYXJhY3RlcnMsIG5ld0No
YXJhY3RlcnMpKSB7CiAgICAgICAgIGZhc3RGcmVlKG5ld0NoYXJhY3RlcnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNGRmOWNjODhm
ZWVkYzk1ODg2YmY4YzA5MTQ4ODJjMzZkMWI1OWEzMy4uYzA4YTJmNjNlMzg0MmQ4NjViZjllYWY3
OTY2YzA4Y2U2NmVjMDliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwCkBAIC0xMTUsMTAgKzExNSw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
SlNWCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUuYXNC
b29sZWFuKCkpOwogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOwotICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNjcmlw
dFN0YXRlKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZyhz
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpKTsKLSAgICB9CisgICAgaWYgKHZh
bHVlLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2
YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpKTsKIAogICAgIGlmICh2YWx1ZS5pc09iamVjdCgp
KSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CkBAIC0xMzksMTIgKzEzNywxMiBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVgogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2NyaXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUgPSAgcHJvcGVydHlOYW1lc1tpXTsKKyAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwogICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0
eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5hbWUpOwogICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShz
Y3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4RGVwdGgpOwogICAgICAgICAgICAgaWYgKCFp
bnNwZWN0b3JWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
ICAgIGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUoU3RyaW5nKG5hbWUuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSwgbmFtZS5sZW5ndGgoKSksIGluc3BlY3RvclZhbHVlKTsKKyAgICAgICAgICAgIGlu
c3BlY3Rvck9iamVjdC0+c2V0VmFsdWUobmFtZS5zdHJpbmcoKSwgaW5zcGVjdG9yVmFsdWUpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JPYmplY3Q7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAKaW5kZXggMGNkNGVkYzY1Y2RjZmJmZmFlYTkxMGUwMzczMjU0MWJiM2YxM2Fj
MC4uYmNkNjkxYmIxZTM2YmJmNjJlMjYxYzE5OWNiODg0YTkzY2Y1MzQ2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUg
PHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M6OllhcnI7CiAKQEAgLTQ3LDE3ICs0OCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciByZWdl
eFNwZWNpYWxDaGFyYWN0ZXJzW10gPSAiW10oKXt9Ky0qLiw/XFxeJHwiOwogCiBzdGF0aWMgU3Ry
aW5nIGNyZWF0ZVNlYXJjaFJlZ2V4U291cmNlKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBT
dHJpbmcgcmVzdWx0OwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dC5kZXByZWNh
dGVkQ2hhcmFjdGVycygpOwotICAgIFN0cmluZyBzcGVjaWFscyhyZWdleFNwZWNpYWxDaGFyYWN0
ZXJzKTsKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKHNwZWNpYWxzLmZpbmQo
Y2hhcmFjdGVyc1tpXSkgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJc
XCIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3RlcnNbaV0pOworICAgICAgICBVQ2hh
ciBjaGFyYWN0ZXIgPSB0ZXh0W2ldOworICAgICAgICBpZiAoaXNBU0NJSShjaGFyYWN0ZXIpICYm
IHN0cmNocihyZWdleFNwZWNpYWxDaGFyYWN0ZXJzLCBjaGFyYWN0ZXIpKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnXFwnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwog
ICAgIH0KIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCiBzdGF0aWMgaW5saW5lIHNpemVfdCBzaXpldEV4dHJhY3Rvcihjb25zdCBzaXplX3Qq
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwCmluZGV4IDA4NDkyMTNlZDljNTAwY2EyYWZmOTg2MDM3ZDNjN2E1MmYyYzhh
OTYuLjE5MmZiNmM5ZDkwOTI0ZTYxN2M1ZDMyYzVkMmUzYmI5ZmNjZDNlMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAg
LTQ3MCw5ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBkb3VibGVRdW90ZVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0ciwgU3RyaW5nQnVpbGRlciogZHN0KQogICAgICAgICAgICAgICAgIC8vIDEuIEVzY2Fw
aW5nIDwsID4gdG8gcHJldmVudCBzY3JpcHQgZXhlY3V0aW9uLgogICAgICAgICAgICAgICAgIC8v
IDIuIFRlY2huaWNhbGx5LCB3ZSBjb3VsZCBhbHNvIHBhc3MgdGhyb3VnaCBjID4gMTI2IGFzIFVU
RjgsIGJ1dCB0aGlzCiAgICAgICAgICAgICAgICAgLy8gICAgaXMgYWxzbyBvcHRpb25hbC4gIEl0
IHdvdWxkIGFsc28gYmUgYSBwYWluIHRvIGltcGxlbWVudCBoZXJlLgotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzeW1ib2wgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGMpOwotICAg
ICAgICAgICAgICAgIFN0cmluZyBzeW1ib2xDb2RlID0gU3RyaW5nOjpmb3JtYXQoIlxcdSUwNFgi
LCBzeW1ib2wpOwotICAgICAgICAgICAgICAgIGRzdC0+YXBwZW5kKHN5bWJvbENvZGUuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgc3ltYm9sQ29kZS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAg
ZHN0LT5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxcdSUwNFgiLCBjKSk7CiAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICBkc3QtPmFwcGVuZChjKTsKICAgICAgICAgfQpAQCAtNTYw
LDkgKzU1OCwxMSBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JWYWx1ZTo6
YXNBcnJheSgpCiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpw
YXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uKQogewotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9
IGpzb24uZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogZW5kID0ganNv
bi5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsganNvbi5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hh
ciAqdG9rZW5FbmQ7CisgICAgLy8gRklYTUU6IFRoaXMgd2hvbGUgZmlsZSBzaG91bGQganVzdCB1
c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFVDaGFyL2xlbmd0aCBhbmQgYXZvaWQgdXBjb252ZXJ0
aW5nLgorICAgIGF1dG8gY2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcoanNvbikudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY2hhcmFjdGVyczsKKyAgICBj
b25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29uLmxlbmd0aCgpOworICAgIGNvbnN0IFVDaGFy
KiB0b2tlbkVuZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYnVpbGRWYWx1
ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwogICAgIGlmICghdmFsdWUgfHwgdG9rZW5FbmQg
IT0gZW5kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IGUzODk2NTI1MDc5NTI1ZDVh
MTRkZDk1ZWNlNWIzNzFjZTY4N2JiNmYuLjE4YjlkY2Q5ODhhMDIzMGFhNWE4MThmOTVkYTY4ODAz
ZWQwZjFmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5j
bHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPG1hdGguaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggYzU2OTVmOGI2MmE5
YTI5OWU3YjhmNzhmNTMyYjNmZTQzYjk4MzFjNS4uN2NjYmNjNDQ1MmRiYzczM2QwMTY2ODJmYWVi
NzI0ZTYyOWVjZmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2lu
Y2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
Ik9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCAwMDNlZGUzMjkwNjcwOWFiZGNj
MTFjNTVmMzM0NjRkMTlmNjc3OGRjLi4xMDc3OTk3ZmM0MDUzN2VlZmZlNTg5MzczN2YwYTEzODE2
ZDcyMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBA
IC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBTdHJpbmcmIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgCi0gICAgICAg
IGNvbnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7IH0KICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CiAgICAgICAgIAogICAgICAgICBDU3RyaW5n
IGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCmluZGV4IDkxZjJjYmY5NTM1NGY1ZmE4ZjNkOTExMjNjYzMyNjQ1OWY0MmMyYjEuLjhjMDJm
MzQyZmFmNTdiMmU0NmI1OTQ5NTk5ZTE2N2Y2YWVjY2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIEpTVmFsdWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgY2hhciogZG9Ob3RFc2NhcGUpCiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBjc3Ry
Lmxlbmd0aCgpOyBrKyssIHArKykgewogICAgICAgICBjaGFyIGMgPSAqcDsKICAgICAgICAgaWYg
KGMgJiYgc3RyY2hyKGRvTm90RXNjYXBlLCBjKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGMpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjaGFyIHRtcFs0XTsKICAgICAgICAgICAgIHNu
cHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlJSUwMlgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjKSk7CkBAIC0xMjgsMTAgKzEyOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJMZW4g
JiYgKHUgPT0gMCB8fCB1ID49IDEyOCB8fCAhc3RyY2hyKGRvTm90VW5lc2NhcGUsIHUpKSkgewot
ICAgICAgICAgICAgICAgIGlmICh1IDwgMjU2KQotICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4odSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodSk7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQodSk7CiAgICAgICAgICAgICAgICAgayArPSBjaGFyTGVuOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTQ0LDcgKzE0MSw2IEBAIHN0YXRp
YyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0
ZXJzLCBpbnQgbGVuZ3RoLCBjCiAKIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IGNoYXIqIGRvTm90VW5lc2NhcGUsIGJvb2wgc3RyaWN0KQogewotICAgIEpTU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgCiAgICAgaWYgKHN0ci5pczhCaXQoKSkK
QEAgLTE4OSw3ICsxODUsNyBAQCBzdGF0aWMgaW50IHBhcnNlRGlnaXQodW5zaWduZWQgc2hvcnQg
YywgaW50IHJhZGl4KQogICAgIHJldHVybiBkaWdpdDsKIH0KIAotZG91YmxlIHBhcnNlSW50T3Zl
cmZsb3coY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgsIGludCByYWRpeCkKK2RvdWJsZSBwYXJz
ZUludE92ZXJmbG93KGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCkK
IHsKICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwogICAgIGRvdWJsZSByYWRpeE11bHRpcGxpZXIg
PSAxLjA7CkBAIC0yMTEsNyArMjA3LDcgQEAgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3Qg
TENoYXIqIHMsIGludCBsZW5ndGgsIGludCByYWRpeCkKICAgICByZXR1cm4gbnVtYmVyOwogfQog
Ci1kb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCwgaW50
IHJhZGl4KQorc3RhdGljIGRvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IFVDaGFyKiBzLCB1
bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCkKIHsKICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwog
ICAgIGRvdWJsZSByYWRpeE11bHRpcGxpZXIgPSAxLjA7CkBAIC0yMzMsNiArMjI5LDEzIEBAIGRv
dWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoLCBpbnQgcmFk
aXgpCiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIAorc3RhdGljIGRvdWJsZSBwYXJzZUludE92ZXJm
bG93KFN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgcmFkaXgpCit7CisgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50T3ZlcmZsb3coc3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0cmluZy5sZW5ndGgoKSwgcmFkaXgpOworICAgIHJldHVybiBwYXJzZUludE92ZXJmbG93
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCByYWRpeCk7Cit9CisKIC8v
IEVTNS4xIDE1LjEuMi4yCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5M
SU5FCkBAIC0zMDgsOSArMzExLDkgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJp
bmcmIHMsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgcmFkaXgpCiAgICAgaWYgKG51bWJlciA+
PSBtYW50aXNzYU92ZXJmbG93TG93ZXJCb3VuZCkgewogICAgICAgICBpZiAocmFkaXggPT0gMTAp
IHsKICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7Ci0gICAgICAgICAgICBudW1iZXIg
PSBwYXJzZURvdWJsZShzLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBmaXJzdERpZ2l0UG9zaXRp
b24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24sIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICBu
dW1iZXIgPSBwYXJzZURvdWJsZShTdHJpbmdWaWV3KHMpLnN1YnN0cmluZyhmaXJzdERpZ2l0UG9z
aXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24pLCBwYXJzZWRMZW5ndGgpOwogICAgICAgICB9
IGVsc2UgaWYgKHJhZGl4ID09IDIgfHwgcmFkaXggPT0gNCB8fCByYWRpeCA9PSA4IHx8IHJhZGl4
ID09IDE2IHx8IHJhZGl4ID09IDMyKQotICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnRPdmVy
ZmxvdyhzLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGZpcnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0
RGlnaXRQb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbiwgcmFk
aXgpOworICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnRPdmVyZmxvdyhTdHJpbmdWaWV3KHMp
LnN1YnN0cmluZyhmaXJzdERpZ2l0UG9zaXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24pLCBy
YWRpeCk7CiAgICAgfQogCiAgICAgLy8gMTUuIFJldHVybiBzaWduIHggbnVtYmVyLgpAQCAtNjIw
LDcgKzYyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2Fw
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBzdHIu
bGVuZ3RoKCk7IGsrKywgYysrKSB7CiAgICAgICAgICAgICBpbnQgdSA9IGNbMF07CiAgICAgICAg
ICAgICBpZiAodSAmJiBzdHJjaHIoZG9fbm90X2VzY2FwZSwgc3RhdGljX2Nhc3Q8Y2hhcj4odSkp
KQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMsIDEpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IGNoYXIgdG1wWzRdOwogICAgICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCks
ICIlJSUwMlgiLCB1KTsKQEAgLTYzOSw3ICs2NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgc25w
cmludGYodG1wLCBzaXplb2YodG1wKSwgIiUldSUwNFgiLCB1KTsKICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHRtcCk7CiAgICAgICAgIH0gZWxzZSBpZiAodSAhPSAwICYmIHN0cmNocihkb19u
b3RfZXNjYXBlLCBzdGF0aWNfY2FzdDxjaGFyPih1KSkpCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChjLCAxKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBjaGFyIHRtcFs0XTsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwg
c2l6ZW9mKHRtcCksICIlJSUwMlgiLCB1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDg0YTY5OTg3OTEx
ODFjMWQzMTMwNzVkNjhkNjQ3ZjljZGQ5MGFjNzUuLjkzNTAzMmY0Zjk0OWY5Mjg2YjVmN2I3OTg4
NDM5ODNjYWRkZWFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaApAQCAtNTMsOSArNTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqKTsK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNT
dGF0ZSopOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5k
ID0gOTAwNzE5OTI1NDc0MDk5Mi4wOwotZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENo
YXIqLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpOwotQUxXQVlTX0lOTElORSBkb3VibGUgcGFyc2VJ
bnRPdmVyZmxvdyhjb25zdCBjaGFyKiBzLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpIHsgcmV0dXJu
IHBhcnNlSW50T3ZlcmZsb3cocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5n
dGgsIHJhZGl4KTsgfQotZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoLCBpbnQgcmFkaXgpOworZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIq
LCB1bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCk7CiBib29sIGlzU3RyV2hpdGVTcGFjZShVQ2hh
cik7CiBkb3VibGUganNUb051bWJlcihjb25zdCBXVEY6OlN0cmluZyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCmluZGV4IDdiMWMxYTUw
NTZkYWEwZTdiNDY2YmNkZjA1MzQ4ODQ1NTllMmI3YzEuLjYzZTUxYTNjZTI5ZmViYzgwODYwZjlk
YTM1NzIxN2MxNjFhNjhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nQnVpbGRlci5oCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisvLyBGSVhNRTogU2hvdWxkIG1vdmUgdGhlIGxhc3QgZmV3IGNhbGxlcnMgb3ZlciBmcm9tIHRo
aXMgdG8gV1RGOjpTdHJpbmdCdWlsZGVyLgogY2xhc3MgSlNTdHJpbmdCdWlsZGVyIHsKIHB1Ymxp
YzoKICAgICBKU1N0cmluZ0J1aWxkZXIoKQpAQCAtNDAsNzIgKzQxLDYzIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIgdSkKKyAgICB2b2lkIGFw
cGVuZChMQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBpZiAobV9pczhCaXQpIHsKLSAg
ICAgICAgICAgIGlmICh1IDwgMHhmZikgewotICAgICAgICAgICAgICAgIExDaGFyIGMgPSB1Owot
ICAgICAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZCgmYywgMSk7CisgICAg
ICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50cnlBcHBlbmQoJmNoYXJhY3RlciwgMSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgVUNoYXIgdXBjb252ZXJ0ZWRDaGFy
YWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlBcHBlbmQo
JnVwY29udmVydGVkQ2hhcmFjdGVyLCAxKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChVQ2hh
ciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBpZiAobV9pczhCaXQpIHsKKyAgICAgICAgICAg
IGlmIChjaGFyYWN0ZXIgPCAweDEwMCkgeworICAgICAgICAgICAgICAgIExDaGFyIG5hcnJvd2Vk
Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgICAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4
LnRyeUFwcGVuZCgmbmFycm93ZWRDaGFyYWN0ZXIsIDEpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVwQ29udmVydCgpOwogICAgICAgICB9Ci0g
ICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlBcHBlbmQoJnUsIDEpOworICAgICAgICBtX29r
YXkgJj0gYnVmZmVyMTYudHJ5QXBwZW5kKCZjaGFyYWN0ZXIsIDEpOwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKICAgICB7Ci0gICAgICAgIGFwcGVuZChzdHIsIHN0
cmxlbihzdHIpKTsKKyAgICAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzdHIpLCBzdHJsZW4oc3RyKSk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogc3RyLCBzaXplX3QgbGVuKQorICAgIEpTVmFsdWUgYnVpbGQoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHsKKyAgICAgICAgaWYgKCFtX29rYXkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOwogICAgICAgICBpZiAobV9pczhCaXQpIHsKLSAgICAgICAgICAg
IG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oc3RyKSwgbGVuKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBt
X29rYXkgJj0gYnVmZmVyOC50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyMTYuc2l6ZSgpICsgbGVu
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAg
ICAgVUNoYXIgdSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0cltpXSk7Ci0gICAgICAg
ICAgICBtX29rYXkgJj0gYnVmZmVyMTYudHJ5QXBwZW5kKCZ1LCAxKTsKKyAgICAgICAgICAgIGJ1
ZmZlcjguc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgICAgIGlmICghYnVmZmVyOC5kYXRhKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjgpKTsKICAg
ICAgICAgfQorICAgICAgICBidWZmZXIxNi5zaHJpbmtUb0ZpdCgpOworICAgICAgICBpZiAoIWJ1
ZmZlcjE2LmRhdGEoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZl
cjE2KSk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqIHN0ciwgc2l6ZV90
IGxlbikKK3ByaXZhdGU6CisgICAgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgpCiAgICAgewogICAgICAgICBpZiAobV9pczhCaXQpIHsKLSAgICAgICAg
ICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZChzdHIsIGxlbik7CisgICAgICAgICAgICBt
X29rYXkgJj0gYnVmZmVyOC50cnlBcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50cnlSZXNl
cnZlQ2FwYWNpdHkoYnVmZmVyMTYuc2l6ZSgpICsgbGVuKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgVUNoYXIgdSA9IHN0cltpXTsKLSAg
ICAgICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlBcHBlbmQoJnUsIDEpOwotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBs
ZW4pCi0gICAgewotICAgICAgICBpZiAobV9pczhCaXQpCi0gICAgICAgICAgICB1cENvbnZlcnQo
KTsgLy8gRklYTUU6IFdlIGNvdWxkIGNoZWNrIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIgaXRzIHNp
emUuCi0gICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlBcHBlbmQoc3RyLCBsZW4pOwotICAg
IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOwotCi0gICAgICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX2lzOEJpdCkgewotICAgICAgICAg
ICAgaWYgKHN0ci5pczhCaXQoKSkgewotICAgICAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4
LnRyeUFwcGVuZChzdHIuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1cENvbnZlcnQoKTsKKyAgICAgICAg
Ly8gRklYTUU6IFRoZXJlIG11c3QgYmUgYSBtb3JlIGVmZmljaWVudCB3YXkgb2YgZG9pbmcgdGhp
cy4KKyAgICAgICAgbV9va2F5ICY9IGJ1ZmZlcjE2LnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXIx
Ni5zaXplKCkgKyBsZW5ndGgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICBVQ2hhciB1cGNvbnZlcnRlZENoYXJhY3RlciA9IGNoYXJh
Y3RlcnNbaV07CisgICAgICAgICAgICBtX29rYXkgJj0gYnVmZmVyMTYudHJ5QXBwZW5kKCZ1cGNv
bnZlcnRlZENoYXJhY3RlciwgMSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9va2F5ICY9IGJ1ZmZl
cjE2LnRyeUFwcGVuZChzdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbGVuZ3RoKTsKICAgICB9
CiAKICAgICB2b2lkIHVwQ29udmVydCgpCkBAIC0xMjAsMjMgKzExMiw2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9pczhCaXQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGJ1aWxkKEV4ZWNT
dGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIGlmICghbV9va2F5KQotICAgICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgaWYgKG1faXM4Qml0KSB7
Ci0gICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBpZiAoIWJ1
ZmZlcjguZGF0YSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9w
dChidWZmZXI4KSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyMTYuc2hyaW5rVG9GaXQoKTsK
LSAgICAgICAgaWYgKCFidWZmZXIxNi5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3Ry
aW5nOjphZG9wdChidWZmZXIxNikpOwotICAgIH0KLQotcHJvdGVjdGVkOgogICAgIFZlY3RvcjxM
Q2hhciwgNjQsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBidWZmZXI4OwogICAgIFZlY3RvcjxVQ2hh
ciwgNjQsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBidWZmZXIxNjsKICAgICBib29sIG1fb2theTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CmluZGV4IDQwYjRkZjdlOGRkOTA3ZDIzNWIzYWI1NGM4NTYwNDM2NzM5NzRlMzYuLjY5YzlmOTQ4
Mzc4NTU3OWQ1NDIyYWJkOTYxNWIzNGNkMDljODgyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMjUsNyArMjUsNiBAQAog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
aW5kZXggNjY5ZmVlZmZmNzE1YmE4NTBlNGM5ODZkODcxMGNkNTNjNWRjMjcwNi4uMDJkNjM3M2M1
YzZiNzY4YWM5MTYxZTAxYjI1MDU3NTcyN2ZhZWY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNDA4LDYgKzE0MDgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYTAuZ2V0VUludDMyKHNtYWxsSW50ZWdlcikgJiYgc21h
bGxJbnRlZ2VyIDw9IDkpIHsKICAgICAgICAgdW5zaWduZWQgc3RyaW5nU2l6ZSA9IHMubGVuZ3Ro
KCk7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemUgPSAyMiArIHN0cmluZ1NpemU7CisgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgaGF2ZSBhbiA4LWJpdCB2ZXJzaW9uIG9mIHRoaXMgY29k
ZSBwYXRoIHRvbz8gT3IgbWF5YmUgb25seSBhbiA4LWJpdCB2ZXJzaW9uPwogICAgICAgICBVQ2hh
ciogYnVmZmVyOwogICAgICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBTdHJpbmdJ
bXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUsIGJ1ZmZlcik7CiAgICAgICAg
IGlmICghaW1wbCkKQEAgLTE0MjcsNyArMTQyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBi
dWZmZXJbMTJdID0gJzAnICsgc21hbGxJbnRlZ2VyOwogICAgICAgICBidWZmZXJbMTNdID0gJyIn
OwogICAgICAgICBidWZmZXJbMTRdID0gJz4nOwotICAgICAgICBtZW1jcHkoJmJ1ZmZlclsxNV0s
IHMuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nU2l6ZSAqIHNpemVvZihVQ2hhcikpOwor
ICAgICAgICBTdHJpbmdWaWV3KHMpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KCZidWZmZXJb
MTVdKTsKICAgICAgICAgYnVmZmVyWzE1ICsgc3RyaW5nU2l6ZV0gPSAnPCc7CiAgICAgICAgIGJ1
ZmZlclsxNiArIHN0cmluZ1NpemVdID0gJy8nOwogICAgICAgICBidWZmZXJbMTcgKyBzdHJpbmdT
aXplXSA9ICdmJzsKQEAgLTE0NzAsNiArMTQ3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQg
bGlua1RleHRTaXplID0gbGlua1RleHQubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgc3RyaW5nU2l6
ZSA9IHMubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IDE1ICsgbGlua1RleHRT
aXplICsgc3RyaW5nU2l6ZTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGhhdmUgYW4gOC1iaXQg
dmVyc2lvbiBvZiB0aGlzIGNvZGUgcGF0aCB0b28/IE9yIG1heWJlIG9ubHkgYW4gOC1iaXQgdmVy
c2lvbj8KICAgICBVQ2hhciogYnVmZmVyOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1w
bCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSwgYnVmZmVy
KTsKICAgICBpZiAoIWltcGwpCkBAIC0xNDgzLDEwICsxNDg1LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
YnVmZmVyWzZdID0gJ2YnOwogICAgIGJ1ZmZlcls3XSA9ICc9JzsKICAgICBidWZmZXJbOF0gPSAn
Iic7Ci0gICAgbWVtY3B5KCZidWZmZXJbOV0sIGxpbmtUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIGxpbmtUZXh0U2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgIFN0cmluZ1ZpZXcobGlua1Rl
eHQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KCZidWZmZXJbOV0pOwogICAgIGJ1ZmZlcls5
ICsgbGlua1RleHRTaXplXSA9ICciJzsKICAgICBidWZmZXJbMTAgKyBsaW5rVGV4dFNpemVdID0g
Jz4nOwotICAgIG1lbWNweSgmYnVmZmVyWzExICsgbGlua1RleHRTaXplXSwgcy5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBzdHJpbmdTaXplICogc2l6ZW9mKFVDaGFyKSk7CisgICAgU3RyaW5nVmll
dyhzKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCgmYnVmZmVyWzExICsgbGlua1RleHRTaXpl
XSk7CiAgICAgYnVmZmVyWzExICsgbGlua1RleHRTaXplICsgc3RyaW5nU2l6ZV0gPSAnPCc7CiAg
ICAgYnVmZmVyWzEyICsgbGlua1RleHRTaXplICsgc3RyaW5nU2l6ZV0gPSAnLyc7CiAgICAgYnVm
ZmVyWzEzICsgbGlua1RleHRTaXplICsgc3RyaW5nU2l6ZV0gPSAnYSc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9kdG9hLmggYi9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmgKaW5kZXggODUyNzNh
NGEyMDI3MDcyMjBhYjdiYzQ2MWY0MTY4ZjM1OTM1ZDkzNi4uZmFiODQwZTVmMDY4Njk2ZDJjMDc2
ZjhhMTc0NDc0OWNiNTg4YjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZHRvYS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuaApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHVu
aWNvZGUvdXR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtNDksNiArNDksNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9G
aXhlZFdpZHRoU3RyaW5nKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbAogCiBkb3VibGUgcGFyc2VE
b3VibGUoY29uc3QgTENoYXIqIHN0cmluZywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBwYXJzZWRM
ZW5ndGgpOwogZG91YmxlIHBhcnNlRG91YmxlKGNvbnN0IFVDaGFyKiBzdHJpbmcsIHNpemVfdCBs
ZW5ndGgsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKK2RvdWJsZSBwYXJzZURvdWJsZShTdHJpbmdW
aWV3LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CiAKIG5hbWVzcGFjZSBJbnRlcm5hbCB7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURvdWJsZUZyb21Mb25nU3RyaW5nKGNvbnN0
IFVDaGFyKiBzdHJpbmcsIHNpemVfdCBsZW5ndGgsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKQEAg
LTY5LDYgKzcwLDEzIEBAIGlubGluZSBkb3VibGUgcGFyc2VEb3VibGUoY29uc3QgVUNoYXIqIHN0
cmluZywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBwYXJzZWRMZW5nCiAgICAgICAgIGNvbnZlcnNp
b25CdWZmZXJbaV0gPSBpc0FTQ0lJKHN0cmluZ1tpXSkgPyBzdHJpbmdbaV0gOiAwOwogICAgIHJl
dHVybiBwYXJzZURvdWJsZShjb252ZXJzaW9uQnVmZmVyLCBsZW5ndGgsIHBhcnNlZExlbmd0aCk7
CiB9CisKK2lubGluZSBkb3VibGUgcGFyc2VEb3VibGUoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVf
dCYgcGFyc2VkTGVuZ3RoKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBwYXJzZURvdWJsZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBw
YXJzZWRMZW5ndGgpOworICAgIHJldHVybiBwYXJzZURvdWJsZShzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSwgcGFyc2VkTGVuZ3RoKTsKK30KICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226843</attachid>
            <date>2014-03-16 10:33:50 -0700</date>
            <delta_ts>2014-03-16 10:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130304-20140316103336.patch</filename>
            <type>text/plain</type>
            <size>27910</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzEyZTJiZjA3NGFlYmIwOGJmMjcyMjM0ZjVmMDY3YjdkYTZmMzk4Li40M2NkYWEzMDkwNTk5NjM3
YjQ5MWU1NTg0YzU0NmY4N2I5YTNiYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNC0wMy0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGFsbCB1c2VzIG9mIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGZyb20gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMDMwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZU1ha2VGcm9tSlNPTlN0
cmluZyk6IFVzZSBjaGFyYWN0ZXJzMTYgaW4gdGhlIDE2LWJpdCBjb2RlIHBhdGguCisgICAgICAg
ICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjp+T3Bh
cXVlSlNTdHJpbmcpOiBVc2UgY2hhcmFjdGVycyAxNiBpbiB0aGUgMTYtYml0IGNvZGUgcGF0aC4K
KyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKTogR2V0IHJpZCBvZiBjdXN0b20g
SWRlbnRpZmllciBjb25zdHJ1Y3RvciwgYW5kCisgICAgICAgIGp1c2UgdXNlIHRoZSBzdGFuZGFy
ZCBvbmUgdGhhdCB0YWtlcyBhIFN0cmluZy4KKyAgICAgICAgKE9wYXF1ZUpTU3RyaW5nOjpjaGFy
YWN0ZXJzKTogVXNlIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0IGluc3RlYWQgb2YgYQorICAg
ICAgICBoYW5kLXdyaXR0ZW4gYWx0ZXJuYXRpdmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChEZXByZWNhdGVkOjpqc1RvSW5zcGVjdG9yVmFsdWUpOiBD
cmVhdGUgSW5zcGVjdG9yU3RyaW5nIGZyb20gU3RyaW5nIGRpcmVjdGx5CisgICAgICAgIGluc3Rl
YWQgb2YgaW52b2x2aW5nIGEgY2hhcmFjdGVyIHBvaW50ZXIuIFVzZSB0aGUgU3RyaW5nIGZyb20g
SWRlbnRpZmllcgorICAgICAgICBkaXJlY3RseSBpbnN0ZWFkIG9mIG1ha2luZyBhIG5ldyBTdHJp
bmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJl
Z2V4U291cmNlKTogVXNlIFN0cmluZ0J1aWxkZXIKKyAgICAgICAgaW5zdGVhZCBvZiBidWlsZGlu
ZyBhIFN0cmluZyBhIGNoYXJhY3RlciBhdCBhIHRpbWUuIFRoaXMgaXMgc3RpbGwgYSB2ZXJ5IHNs
b3cKKyAgICAgICAgd2F5IHRvIGRvIHRoaXMuIEFsc28gdXNlIHN0cmNociB0byBzZWFyY2ggZm9y
IGEgY2hhcmFjdGVyIGluc3RlYWQgb2YgYnVpbGRpbmcKKyAgICAgICAgYSBTdHJpbmcgZXZlcnkg
dGltZSBqdXN0IHRvIHVzZSBmaW5kIG9uIGl0LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmRvdWJsZVF1b3RlU3RyaW5nKTog
UmVtb3ZlIHVubmVjZXNzYXJ5IHRyaXAgdGhyb3VnaCBhCisgICAgICAgIGNoYXJhY3RlciBwb2lu
dGVyLiBUaGlzIGlzIHN0aWxsIGEgcmVhbGx5IHNsb3cgd2F5IHRvIGRvIHRoaXMuCisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04pOiBVc2UgU3RyaW5nVmlldzo6
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjpkZXByZWNh
dGVkQ2hhcmFjdGVycy4gU3RpbGwgc2xvdyB0byBhbHdheXMgdXBjb252ZXJ0LgorCisgICAgICAg
ICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUu
CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDogRGl0dG8uCisKKyAgICAgICAg
KiBydW50aW1lL0lkZW50aWZpZXIuaDogUmVtb3ZlZCBkZXByZWNhdGVkQ2hhcmFjdGVycyBmdW5j
dGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjplbmNvZGUpOiBBZGRlZCBhIHR5cGUgY2FzdCB0byBhdm9pZCBhbWJpZ3Vp
dHkgd2l0aCB0aGUgdHdvIGNoYXJhY3Rlci0KKyAgICAgICAgYXBwZW5kaW5nIGZ1bmN0aW9ucyBm
cm9tIEpTU3RyaW5nQnVpbGRlci4gUmVtb3ZlZCB1bm5lZWRlZCBjb2RlIGR1cGxpY2F0aW5nCisg
ICAgICAgIHdoYXQgSlNTdHJpbmdCdWlsZGVyIGFscmVhZHkgZG9lcyBpbiBpdHMgY2hhcmFjdGVy
IGFwcGVuZCBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6ZGVjb2RlKTogRGVsZXRlZCBjb2RlIHRo
YXQgY3JlYXRlcyBhIEpTU3RyaW5nQnVpbGRlciB0aGF0IGlzIG5ldmVyIHVzZWQuCisgICAgICAg
IChKU0M6OnBhcnNlSW50T3ZlcmZsb3cpOiBDaGFuZ2VkIGxlbmd0aHMgdG8gdW5zaWduZWQuIE1h
ZGUgb25seSB0aGUgb3ZlcmxvYWQgdGhhdAorICAgICAgICBpcyB1c2VkIG91dHNpZGUgdGhpcyBm
aWxlIGhhdmUgZXh0ZXJuYWwgbGlua2FnZS4gQWRkZWQgYSBuZXcgb3ZlcmxvYWQgdGhhdCB0YWtl
cworICAgICAgICBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChKU0M6OnBhcnNlSW50KTogVXNlIFN0
cmluZ1ZpZXc6OnN1YnN0cmluZyB0byBjYWxsIHBhcnNlSW50T3ZlcmZsb3cuCisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNFc2NhcGUpOiBVc2UgSlNCdWlsZGVyOjphcHBlbmQgaW4gYSBtb3JlIGVm
ZmljaWVudCB3YXkgZm9yIGEKKyAgICAgICAgc2luZ2xlIGNoYXJhY3Rlci4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDogUmVtb3ZlZCB1bnVzZWQgb3Zlcmxv
YWRzIG9mIHBhcnNlSW50T3ZlcmZsb3cuCisKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nQnVp
bGRlci5oOiBNYXJrZWQgdGhpcyAibGlnaHRseSBkZXByZWNhdGVkIi4KKyAgICAgICAgKEpTQzo6
SlNTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBPdmVybG9hZGVkIGZvciBiZXR0ZXIgc3BlZWQgd2l0
aCA4LWJpdCBjaGFyYWN0ZXJzLgorICAgICAgICBNYWRlIG9uZSBvdmVybG9hZCBwcml2YXRlLiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGJ1ZyB3aGVyZSB3ZSB3b3VsZCByZXNlcnZlIGNhcGFjaXR5Cisg
ICAgICAgIGluIHRoZSA4LWJpdCBidWZmZXIgYnV0IHRoZW4gYXBwZW5kIHRvIHRoZSAxNi1iaXQg
YnVmZmVyLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOiBSZW1vdmVk
IHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKTogVXNlIFN0cmluZ1Zp
ZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0LgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMaW5rKTogRGl0dG8uCisKIDIwMTQtMDMtMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGVEwgQXJyYXlpZnlUb1N0cnVjdHVyZSBzaG91bGRuJ3QgZmFp
bCBldmVyeSB0aW1lIHRoYXQgaXQgYWN0dWFsbHkgYXJyYXlpZmllcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkNzdiNzcyZDI2
Njg3Nzg4YzJhZGQxOWJiMmM1NDEzYjMxZjAyNDE3Li5jZmI3MzY1NDIzYzRmODExODE3YzA3Zjkw
M2FmOWYxNThkOTE4YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAzLTE2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHVzZXMgb2YgZGVw
cmVjYXRlZENoYXJhY3RlcnMgZnJvbSBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAoV1RG
OjpwYXJzZURvdWJsZSk6IEFkZGVkIGFuIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBTdHJpbmdWaWV3
LgorCiAyMDE0LTAzLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgYWxsIHVzZXMgb2YgZGVwcmVjYXRlZENoYXJhY3RlcnMgZnJvbSBXZWJLaXQyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCAyMGZkMzZiNDMxZjUw
OTM0OWU3ZDk0MTkyNzU4YzRhYTYwNjIyZjAwLi43MGRmOTM0NDdlZjk0ZWQzYmQxNDlmMzdkYWEy
YzE5NjFmMDY3ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAK
QEAgLTMzNCwxMSArMzM0LDExIEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmlu
ZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2tlcihleGVjKTsKICAgICBTdHJpbmcgc3RyID0gc3RyaW5nLT5zdHJpbmcoKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7Ci0gICAgaWYgKGxlbmd0aCAmJiBzdHIuaXM4
Qml0KCkpIHsKKyAgICBpZiAoIWxlbmd0aCB8fCBzdHIuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0
ZXJhbFBhcnNlcjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgs
IFN0cmljdEpTT04pOwogICAgICAgICByZXR1cm4gdG9SZWYoZXhlYywgcGFyc2VyLnRyeUxpdGVy
YWxQYXJzZSgpKTsKICAgICB9Ci0gICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4gcGFyc2VyKGV4ZWMs
IHN0ci5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsZW5ndGgsIFN0cmljdEpTT04pOworICAgIExp
dGVyYWxQYXJzZXI8VUNoYXI+IHBhcnNlcihleGVjLCBzdHIuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCwgU3RyaWN0SlNPTik7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHBhcnNlci50cnlMaXRlcmFs
UGFyc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3Bh
cXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5jcHAKaW5kZXggNjhmMGY1YzExNDA1MzUxYzVlMmE5M2U5OGY2MzhmNWM2OWRjNWY1Zi4uOTQ5
YzQ3YzEyMzU0NTBmOTRhZTEzMWZmNWU1MjUyNDJlMDBlODMwYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgT3BhcXVlSlNTdHJpbmc6On5PcGFx
dWVKU1N0cmluZygpCiAgICAgaWYgKCFjaGFyYWN0ZXJzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fc3RyaW5nLmlzOEJpdCgpICYmIG1fc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCkgPT0gY2hhcmFjdGVycykKKyAgICBpZiAoIW1fc3RyaW5nLmlzOEJpdCgpICYmIG1fc3RyaW5n
LmNoYXJhY3RlcnMxNigpID09IGNoYXJhY3RlcnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZh
c3RGcmVlKGNoYXJhY3RlcnMpOwpAQCAtNzAsMTAgKzcxLDcgQEAgSWRlbnRpZmllciBPcGFxdWVK
U1N0cmluZzo6aWRlbnRpZmllcihWTSogdm0pIGNvbnN0CiAgICAgaWYgKG1fc3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIoSWRlbnRpZmllcjo6RW1wdHlJZGVudGlm
aWVyKTsKIAotICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIElkZW50
aWZpZXIodm0sIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLQot
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbV9zdHJp
bmcubGVuZ3RoKCkpOworICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBtX3N0cmluZyk7CiB9CiAK
IGNvbnN0IFVDaGFyKiBPcGFxdWVKU1N0cmluZzo6Y2hhcmFjdGVycygpCkBAIC05MSwxMiArODks
NyBAQCBjb25zdCBVQ2hhciogT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3RlcnMoKQogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gbV9zdHJpbmcubGVuZ3RoKCk7CiAgICAgVUNoYXIqIG5ld0NoYXJhY3Rl
cnMgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KGZhc3RNYWxsb2MobGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSkpOwotCi0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBuZXdDaGFyYWN0ZXJzW2ldID0g
bV9zdHJpbmcuY2hhcmFjdGVyczgoKVtpXTsKLSAgICB9IGVsc2UKLSAgICAgICAgbWVtY3B5KG5l
d0NoYXJhY3RlcnMsIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGggKiBzaXplb2YoVUNo
YXIpKTsKKyAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChuZXdDaGFyYWN0ZXJzKTsKIAogICAgIGlmICghbV9jaGFyYWN0ZXJzLmNvbXBhcmVfZXhjaGFu
Z2Vfc3Ryb25nKGNoYXJhY3RlcnMsIG5ld0NoYXJhY3RlcnMpKSB7CiAgICAgICAgIGZhc3RGcmVl
KG5ld0NoYXJhY3RlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggNGRmOWNjODhmZWVkYzk1ODg2YmY4YzA5MTQ4ODJjMzZkMWI1OWEz
My4uYzA4YTJmNjNlMzg0MmQ4NjViZjllYWY3OTY2YzA4Y2U2NmVjMDliYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMTUsMTAgKzEx
NSw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFs
dWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNWCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUuYXNCb29sZWFuKCkpOwogICAgIGlmICh2YWx1ZS5pc051
bWJlcigpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVl
LmFzTnVtYmVyKCkpOwotICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFN0cmlu
ZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZyhzLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHMubGVu
Z3RoKCkpKTsKLSAgICB9CisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpKTsK
IAogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkodmFs
dWUpKSB7CkBAIC0xMzksMTIgKzEzNywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVgogICAg
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKHNjcmlwdFN0YXRlKTsKICAgICAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc2Ny
aXB0U3RhdGUsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSAgcHJvcGVydHlOYW1lc1tpXTsK
KyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwog
ICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3Rh
dGUsIG5hbWUpOwogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JW
YWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4
RGVwdGgpOwogICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUo
U3RyaW5nKG5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbmFtZS5sZW5ndGgoKSksIGluc3Bl
Y3RvclZhbHVlKTsKKyAgICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUobmFtZS5z
dHJpbmcoKSwgaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnNw
ZWN0b3JPYmplY3Q7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggMGNkNGVkYzY1Y2Rj
ZmJmZmFlYTkxMGUwMzczMjU0MWJiM2YxM2FjMC4uYmNkNjkxYmIxZTM2YmJmNjJlMjYxYzE5OWNi
ODg0YTkzY2Y1MzQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OllhcnI7CiAKQEAgLTQ3LDE3ICs0OCwx
NiBAQCBzdGF0aWMgY29uc3QgY2hhciByZWdleFNwZWNpYWxDaGFyYWN0ZXJzW10gPSAiW10oKXt9
Ky0qLiw/XFxeJHwiOwogCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVNlYXJjaFJlZ2V4U291cmNlKGNv
bnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwotICAgIFN0cmluZyBz
cGVjaWFscyhyZWdleFNwZWNpYWxDaGFyYWN0ZXJzKTsKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsK
LSAgICAgICAgaWYgKHNwZWNpYWxzLmZpbmQoY2hhcmFjdGVyc1tpXSkgIT0gbm90Rm91bmQpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcXCIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNo
YXJhY3RlcnNbaV0pOworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB0ZXh0W2ldOworICAgICAg
ICBpZiAoaXNBU0NJSShjaGFyYWN0ZXIpICYmIHN0cmNocihyZWdleFNwZWNpYWxDaGFyYWN0ZXJz
LCBjaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCiBzdGF0aWMgaW5saW5lIHNpemVfdCBz
aXpldEV4dHJhY3Rvcihjb25zdCBzaXplX3QqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4IDA4NDkyMTNlZDlj
NTAwY2EyYWZmOTg2MDM3ZDNjN2E1MmYyYzhhOTYuLjE5MmZiNmM5ZDkwOTI0ZTYxN2M1ZDMyYzVk
MmUzYmI5ZmNjZDNlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTQ3MCw5ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBk
b3VibGVRdW90ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgU3RyaW5nQnVpbGRlciogZHN0KQog
ICAgICAgICAgICAgICAgIC8vIDEuIEVzY2FwaW5nIDwsID4gdG8gcHJldmVudCBzY3JpcHQgZXhl
Y3V0aW9uLgogICAgICAgICAgICAgICAgIC8vIDIuIFRlY2huaWNhbGx5LCB3ZSBjb3VsZCBhbHNv
IHBhc3MgdGhyb3VnaCBjID4gMTI2IGFzIFVURjgsIGJ1dCB0aGlzCiAgICAgICAgICAgICAgICAg
Ly8gICAgaXMgYWxzbyBvcHRpb25hbC4gIEl0IHdvdWxkIGFsc28gYmUgYSBwYWluIHRvIGltcGxl
bWVudCBoZXJlLgotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzeW1ib2wgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KGMpOwotICAgICAgICAgICAgICAgIFN0cmluZyBzeW1ib2xDb2Rl
ID0gU3RyaW5nOjpmb3JtYXQoIlxcdSUwNFgiLCBzeW1ib2wpOwotICAgICAgICAgICAgICAgIGRz
dC0+YXBwZW5kKHN5bWJvbENvZGUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3ltYm9sQ29kZS5s
ZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgZHN0LT5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxc
dSUwNFgiLCBjKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBkc3QtPmFw
cGVuZChjKTsKICAgICAgICAgfQpAQCAtNTYwLDkgKzU1OCwxMSBAQCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBJbnNwZWN0b3JWYWx1ZTo6YXNBcnJheSgpCiAKIFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uKQog
ewotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IGpzb24uZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsK
LSAgICBjb25zdCBVQ2hhciogZW5kID0ganNvbi5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsganNv
bi5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciAqdG9rZW5FbmQ7CisgICAgLy8gRklYTUU6IFRo
aXMgd2hvbGUgZmlsZSBzaG91bGQganVzdCB1c2UgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFVDaGFy
L2xlbmd0aCBhbmQgYXZvaWQgdXBjb252ZXJ0aW5nLgorICAgIGF1dG8gY2hhcmFjdGVycyA9IFN0
cmluZ1ZpZXcoanNvbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIq
IHN0YXJ0ID0gY2hhcmFjdGVyczsKKyAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29u
Lmxlbmd0aCgpOworICAgIGNvbnN0IFVDaGFyKiB0b2tlbkVuZDsKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHZhbHVlID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwog
ICAgIGlmICghdmFsdWUgfHwgdG9rZW5FbmQgIT0gZW5kKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGUzODk2NTI1MDc5NTI1ZDVhMTRkZDk1ZWNlNWIzNzFjZTY4N2JiNmYuLjE4Yjlk
Y2Q5ODhhMDIzMGFhNWE4MThmOTVkYTY4ODAzZWQwZjFmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgPG1hdGguaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKaW5kZXggYzU2OTVmOGI2MmE5YTI5OWU3YjhmNzhmNTMyYjNmZTQzYjk4MzFjNS4u
N2NjYmNjNDQ1MmRiYzczM2QwMTY2ODJmYWViNzI0ZTYyOWVjZmNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgogI2lu
Y2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAppbmRleCAwMDNlZGUzMjkwNjcwOWFiZGNjMTFjNTVmMzM0NjRkMTlmNjc3OGRjLi4xMDc3OTk3
ZmM0MDUzN2VlZmZlNTg5MzczN2YwYTEzODE2ZDcyMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
bXBsKCk7IH0KICAgICAgICAgCi0gICAgICAgIGNvbnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7IH0K
ICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9
CiAgICAgICAgIAogICAgICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuYXNjaWkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDkxZjJjYmY5NTM1NGY1ZmE4ZjNk
OTExMjNjYzMyNjQ1OWY0MmMyYjEuLjhjMDJmMzQyZmFmNTdiMmU0NmI1OTQ5NTk5ZTE2N2Y2YWVj
Y2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIEpTVmFs
dWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogZG9Ob3RFc2NhcGUpCiAgICAg
Zm9yIChzaXplX3QgayA9IDA7IGsgPCBjc3RyLmxlbmd0aCgpOyBrKyssIHArKykgewogICAgICAg
ICBjaGFyIGMgPSAqcDsKICAgICAgICAgaWYgKGMgJiYgc3RyY2hyKGRvTm90RXNjYXBlLCBjKSkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBj
aGFyIHRtcFs0XTsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlJSUw
MlgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSk7CkBAIC0xMjgsMTAgKzEyOCw3IEBA
IHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBj
aGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKGNoYXJMZW4gJiYgKHUgPT0gMCB8fCB1ID49IDEyOCB8fCAhc3Ry
Y2hyKGRvTm90VW5lc2NhcGUsIHUpKSkgewotICAgICAgICAgICAgICAgIGlmICh1IDwgMjU2KQot
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4odSkp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQodSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodSk7CiAgICAgICAgICAgICAg
ICAgayArPSBjaGFyTGVuOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQpAQCAtMTQ0LDcgKzE0MSw2IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjCiAKIHN0YXRpYyBK
U1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRvTm90VW5lc2NhcGUs
IGJvb2wgc3RyaWN0KQogewotICAgIEpTU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIFN0cmlu
ZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgCiAgICAgaWYgKHN0ci5pczhCaXQoKSkKQEAgLTE4OSw3ICsxODUsNyBAQCBzdGF0aWMgaW50
IHBhcnNlRGlnaXQodW5zaWduZWQgc2hvcnQgYywgaW50IHJhZGl4KQogICAgIHJldHVybiBkaWdp
dDsKIH0KIAotZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIqIHMsIGludCBsZW5n
dGgsIGludCByYWRpeCkKK2RvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IExDaGFyKiBzLCB1
bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCkKIHsKICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwog
ICAgIGRvdWJsZSByYWRpeE11bHRpcGxpZXIgPSAxLjA7CkBAIC0yMTEsNyArMjA3LDcgQEAgZG91
YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgsIGludCByYWRp
eCkKICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1kb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25z
dCBVQ2hhciogcywgaW50IGxlbmd0aCwgaW50IHJhZGl4KQorc3RhdGljIGRvdWJsZSBwYXJzZUlu
dE92ZXJmbG93KGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCkKIHsK
ICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwogICAgIGRvdWJsZSByYWRpeE11bHRpcGxpZXIgPSAx
LjA7CkBAIC0yMzMsNiArMjI5LDEzIEBAIGRvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IFVD
aGFyKiBzLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpCiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIAor
c3RhdGljIGRvdWJsZSBwYXJzZUludE92ZXJmbG93KFN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgcmFk
aXgpCit7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50
T3ZlcmZsb3coc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcmFkaXgpOwor
ICAgIHJldHVybiBwYXJzZUludE92ZXJmbG93KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpLCByYWRpeCk7Cit9CisKIC8vIEVTNS4xIDE1LjEuMi4yCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5MSU5FCkBAIC0zMDgsOSArMzExLDkgQEAgc3RhdGlj
IGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJpbmcmIHMsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBp
bnQgcmFkaXgpCiAgICAgaWYgKG51bWJlciA+PSBtYW50aXNzYU92ZXJmbG93TG93ZXJCb3VuZCkg
ewogICAgICAgICBpZiAocmFkaXggPT0gMTApIHsKICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRM
ZW5ndGg7Ci0gICAgICAgICAgICBudW1iZXIgPSBwYXJzZURvdWJsZShzLmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCkgKyBmaXJzdERpZ2l0UG9zaXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24sIHBh
cnNlZExlbmd0aCk7CisgICAgICAgICAgICBudW1iZXIgPSBwYXJzZURvdWJsZShTdHJpbmdWaWV3
KHMpLnN1YnN0cmluZyhmaXJzdERpZ2l0UG9zaXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24p
LCBwYXJzZWRMZW5ndGgpOwogICAgICAgICB9IGVsc2UgaWYgKHJhZGl4ID09IDIgfHwgcmFkaXgg
PT0gNCB8fCByYWRpeCA9PSA4IHx8IHJhZGl4ID09IDE2IHx8IHJhZGl4ID09IDMyKQotICAgICAg
ICAgICAgbnVtYmVyID0gcGFyc2VJbnRPdmVyZmxvdyhzLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGZp
cnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbikudXRmOCgpLmRhdGEoKSwg
cCAtIGZpcnN0RGlnaXRQb3NpdGlvbiwgcmFkaXgpOworICAgICAgICAgICAgbnVtYmVyID0gcGFy
c2VJbnRPdmVyZmxvdyhTdHJpbmdWaWV3KHMpLnN1YnN0cmluZyhmaXJzdERpZ2l0UG9zaXRpb24s
IHAgLSBmaXJzdERpZ2l0UG9zaXRpb24pLCByYWRpeCk7CiAgICAgfQogCiAgICAgLy8gMTUuIFJl
dHVybiBzaWduIHggbnVtYmVyLgpAQCAtNjIwLDcgKzYyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgayA9IDA7IGsgPCBzdHIubGVuZ3RoKCk7IGsrKywgYysrKSB7CiAgICAgICAg
ICAgICBpbnQgdSA9IGNbMF07CiAgICAgICAgICAgICBpZiAodSAmJiBzdHJjaHIoZG9fbm90X2Vz
Y2FwZSwgc3RhdGljX2Nhc3Q8Y2hhcj4odSkpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGMsIDEpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGNoYXIgdG1wWzRdOwogICAgICAgICAgICAgICAg
IHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlJSUwMlgiLCB1KTsKQEAgLTYzOSw3ICs2NDIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIiUldSUw
NFgiLCB1KTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRtcCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAodSAhPSAwICYmIHN0cmNocihkb19ub3RfZXNjYXBlLCBzdGF0aWNfY2FzdDxjaGFyPih1
KSkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjLCAxKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCpjKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjaGFyIHRtcFs0XTsK
ICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlJSUwMlgiLCB1KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oCmluZGV4IDg0YTY5OTg3OTExODFjMWQzMTMwNzVkNjhkNjQ3ZjljZGQ5MGFjNzUu
LjkzNTAzMmY0Zjk0OWY5Mjg2YjVmN2I3OTg4NDM5ODNjYWRkZWFiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aApAQCAtNTMsOSArNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1
bmNQcm90b0dldHRlcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSopOwogCiBzdGF0aWMgY29uc3QgZG91Ymxl
IG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kID0gOTAwNzE5OTI1NDc0MDk5Mi4wOwotZG91Ymxl
IHBhcnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpOwot
QUxXQVlTX0lOTElORSBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBjaGFyKiBzLCBpbnQg
bGVuZ3RoLCBpbnQgcmFkaXgpIHsgcmV0dXJuIHBhcnNlSW50T3ZlcmZsb3cocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgsIHJhZGl4KTsgfQotZG91YmxlIHBhcnNlSW50
T3ZlcmZsb3coY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpOworZG91YmxlIHBh
cnNlSW50T3ZlcmZsb3coY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGludCByYWRpeCk7
CiBib29sIGlzU3RyV2hpdGVTcGFjZShVQ2hhcik7CiBkb3VibGUganNUb051bWJlcihjb25zdCBX
VEY6OlN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nQnVpbGRlci5oCmluZGV4IDdiMWMxYTUwNTZkYWEwZTdiNDY2YmNkZjA1MzQ4ODQ1NTllMmI3
YzEuLjYzZTUxYTNjZTI5ZmViYzgwODYwZjlkYTM1NzIxN2MxNjFhNjhkMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisvLyBGSVhNRTogU2hvdWxkIG1vdmUgdGhlIGxh
c3QgZmV3IGNhbGxlcnMgb3ZlciBmcm9tIHRoaXMgdG8gV1RGOjpTdHJpbmdCdWlsZGVyLgogY2xh
c3MgSlNTdHJpbmdCdWlsZGVyIHsKIHB1YmxpYzoKICAgICBKU1N0cmluZ0J1aWxkZXIoKQpAQCAt
NDAsNzIgKzQxLDYzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgVUNoYXIgdSkKKyAgICB2b2lkIGFwcGVuZChMQ2hhciBjaGFyYWN0ZXIpCiAgICAgewog
ICAgICAgICBpZiAobV9pczhCaXQpIHsKLSAgICAgICAgICAgIGlmICh1IDwgMHhmZikgewotICAg
ICAgICAgICAgICAgIExDaGFyIGMgPSB1OwotICAgICAgICAgICAgICAgIG1fb2theSAmPSBidWZm
ZXI4LnRyeUFwcGVuZCgmYywgMSk7CisgICAgICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50cnlB
cHBlbmQoJmNoYXJhY3RlciwgMSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgVUNoYXIgdXBjb252ZXJ0ZWRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIG1f
b2theSAmPSBidWZmZXIxNi50cnlBcHBlbmQoJnVwY29udmVydGVkQ2hhcmFjdGVyLCAxKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBp
ZiAobV9pczhCaXQpIHsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPCAweDEwMCkgeworICAg
ICAgICAgICAgICAgIExDaGFyIG5hcnJvd2VkQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgICAg
ICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZCgmbmFycm93ZWRDaGFyYWN0ZXIs
IDEpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHVwQ29udmVydCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlB
cHBlbmQoJnUsIDEpOworICAgICAgICBtX29rYXkgJj0gYnVmZmVyMTYudHJ5QXBwZW5kKCZjaGFy
YWN0ZXIsIDEpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKICAg
ICB7Ci0gICAgICAgIGFwcGVuZChzdHIsIHN0cmxlbihzdHIpKTsKKyAgICAgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHIpLCBzdHJsZW4oc3RyKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQorICAgIEpTVmFs
dWUgYnVpbGQoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKKyAgICAgICAgaWYgKCFtX29rYXkpCisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgICAgICBp
ZiAobV9pczhCaXQpIHsKLSAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyKSwgbGVuKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50cnlSZXNlcnZlQ2Fw
YWNpdHkoYnVmZmVyMTYuc2l6ZSgpICsgbGVuKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgVUNoYXIgdSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KHN0cltpXSk7Ci0gICAgICAgICAgICBtX29rYXkgJj0gYnVmZmVyMTYudHJ5QXBw
ZW5kKCZ1LCAxKTsKKyAgICAgICAgICAgIGJ1ZmZlcjguc2hyaW5rVG9GaXQoKTsKKyAgICAgICAg
ICAgIGlmICghYnVmZmVyOC5kYXRhKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBT
dHJpbmc6OmFkb3B0KGJ1ZmZlcjgpKTsKICAgICAgICAgfQorICAgICAgICBidWZmZXIxNi5zaHJp
bmtUb0ZpdCgpOworICAgICAgICBpZiAoIWJ1ZmZlcjE2LmRhdGEoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBl
bmQoY29uc3QgTENoYXIqIHN0ciwgc2l6ZV90IGxlbikKK3ByaXZhdGU6CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiAgICAgewogICAgICAg
ICBpZiAobV9pczhCaXQpIHsKLSAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVu
ZChzdHIsIGxlbik7CisgICAgICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50cnlBcHBlbmQoY2hh
cmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBtX29rYXkgJj0gYnVmZmVyOC50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyMTYuc2l6ZSgpICsg
bGVuKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICAgICAgVUNoYXIgdSA9IHN0cltpXTsKLSAgICAgICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50
cnlBcHBlbmQoJnUsIDEpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBsZW4pCi0gICAgewotICAgICAgICBpZiAobV9pczhC
aXQpCi0gICAgICAgICAgICB1cENvbnZlcnQoKTsgLy8gRklYTUU6IFdlIGNvdWxkIGNoZWNrIGNo
YXJhY3RlciBieSBjaGFyYWN0ZXIgaXRzIHNpemUuCi0gICAgICAgIG1fb2theSAmPSBidWZmZXIx
Ni50cnlBcHBlbmQoc3RyLCBsZW4pOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyLmxlbmd0aCgp
OwotCi0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmIChtX2lzOEJpdCkgewotICAgICAgICAgICAgaWYgKHN0ci5pczhCaXQoKSkgewotICAgICAg
ICAgICAgICAgIG1fb2theSAmPSBidWZmZXI4LnRyeUFwcGVuZChzdHIuY2hhcmFjdGVyczgoKSwg
bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB1cENvbnZlcnQoKTsKKyAgICAgICAgLy8gRklYTUU6IFRoZXJlIG11c3QgYmUgYSBtb3Jl
IGVmZmljaWVudCB3YXkgb2YgZG9pbmcgdGhpcy4KKyAgICAgICAgbV9va2F5ICY9IGJ1ZmZlcjE2
LnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXIxNi5zaXplKCkgKyBsZW5ndGgpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBVQ2hhciB1
cGNvbnZlcnRlZENoYXJhY3RlciA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAgICBtX29rYXkg
Jj0gYnVmZmVyMTYudHJ5QXBwZW5kKCZ1cGNvbnZlcnRlZENoYXJhY3RlciwgMSk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9va2F5ICY9IGJ1ZmZlcjE2LnRyeUFwcGVuZChzdHIuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgbGVuZ3RoKTsKICAgICB9CiAKICAgICB2b2lkIHVwQ29udmVydCgpCkBAIC0x
MjAsMjMgKzExMiw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9pczhCaXQgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBKU1ZhbHVlIGJ1aWxkKEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9va2F5KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KTsKLSAgICAgICAgaWYgKG1faXM4Qml0KSB7Ci0gICAgICAgICAgICBidWZmZXI4LnNocmlua1Rv
Rml0KCk7Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXI4KSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnVmZmVyMTYuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgaWYgKCFidWZmZXIxNi5kYXRhKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwotICAgIH0K
LQotcHJvdGVjdGVkOgogICAgIFZlY3RvcjxMQ2hhciwgNjQsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiBidWZmZXI4OwogICAgIFZlY3RvcjxVQ2hhciwgNjQsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBi
dWZmZXIxNjsKICAgICBib29sIG1fb2theTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDQwYjRkZjdlOGRkOTA3ZDIzNWIzYWI1
NGM4NTYwNDM2NzM5NzRlMzYuLjY5YzlmOTQ4Mzc4NTU3OWQ1NDIyYWJkOTYxNWIzNGNkMDljODgy
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkpT
U3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNjY5ZmVlZmZmNzE1YmE4NTBlNGM5ODZk
ODcxMGNkNTNjNWRjMjcwNi4uMDJkNjM3M2M1YzZiNzY4YWM5MTYxZTAxYjI1MDU3NTcyN2ZhZWY3
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCkBAIC0xNDA4LDYgKzE0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoYTAuZ2V0
VUludDMyKHNtYWxsSW50ZWdlcikgJiYgc21hbGxJbnRlZ2VyIDw9IDkpIHsKICAgICAgICAgdW5z
aWduZWQgc3RyaW5nU2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNp
emUgPSAyMiArIHN0cmluZ1NpemU7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgaGF2ZSBh
biA4LWJpdCB2ZXJzaW9uIG9mIHRoaXMgY29kZSBwYXRoIHRvbz8gT3IgbWF5YmUgb25seSBhbiA4
LWJpdCB2ZXJzaW9uPwogICAgICAgICBVQ2hhciogYnVmZmVyOwogICAgICAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1
ZmZlclNpemUsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkKQEAgLTE0MjcsNyArMTQyOCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICBidWZmZXJbMTJdID0gJzAnICsgc21hbGxJbnRlZ2Vy
OwogICAgICAgICBidWZmZXJbMTNdID0gJyInOwogICAgICAgICBidWZmZXJbMTRdID0gJz4nOwot
ICAgICAgICBtZW1jcHkoJmJ1ZmZlclsxNV0sIHMuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3Ry
aW5nU2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBTdHJpbmdWaWV3KHMpLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KCZidWZmZXJbMTVdKTsKICAgICAgICAgYnVmZmVyWzE1ICsgc3Ry
aW5nU2l6ZV0gPSAnPCc7CiAgICAgICAgIGJ1ZmZlclsxNiArIHN0cmluZ1NpemVdID0gJy8nOwog
ICAgICAgICBidWZmZXJbMTcgKyBzdHJpbmdTaXplXSA9ICdmJzsKQEAgLTE0NzAsNiArMTQ3MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgbGlua1RleHRTaXplID0gbGlua1RleHQubGVuZ3Ro
KCk7CiAgICAgdW5zaWduZWQgc3RyaW5nU2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQg
YnVmZmVyU2l6ZSA9IDE1ICsgbGlua1RleHRTaXplICsgc3RyaW5nU2l6ZTsKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIGhhdmUgYW4gOC1iaXQgdmVyc2lvbiBvZiB0aGlzIGNvZGUgcGF0aCB0b28/
IE9yIG1heWJlIG9ubHkgYW4gOC1iaXQgdmVyc2lvbj8KICAgICBVQ2hhciogYnVmZmVyOwogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoYnVmZmVyU2l6ZSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCkBAIC0xNDgzLDEw
ICsxNDg1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYnVmZmVyWzZdID0gJ2YnOwogICAgIGJ1ZmZlcls3
XSA9ICc9JzsKICAgICBidWZmZXJbOF0gPSAnIic7Ci0gICAgbWVtY3B5KCZidWZmZXJbOV0sIGxp
bmtUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGxpbmtUZXh0U2l6ZSAqIHNpemVvZihVQ2hh
cikpOworICAgIFN0cmluZ1ZpZXcobGlua1RleHQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KCZidWZmZXJbOV0pOwogICAgIGJ1ZmZlcls5ICsgbGlua1RleHRTaXplXSA9ICciJzsKICAgICBi
dWZmZXJbMTAgKyBsaW5rVGV4dFNpemVdID0gJz4nOwotICAgIG1lbWNweSgmYnVmZmVyWzExICsg
bGlua1RleHRTaXplXSwgcy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJpbmdTaXplICogc2l6
ZW9mKFVDaGFyKSk7CisgICAgU3RyaW5nVmlldyhzKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dCgmYnVmZmVyWzExICsgbGlua1RleHRTaXplXSk7CiAgICAgYnVmZmVyWzExICsgbGlua1RleHRT
aXplICsgc3RyaW5nU2l6ZV0gPSAnPCc7CiAgICAgYnVmZmVyWzEyICsgbGlua1RleHRTaXplICsg
c3RyaW5nU2l6ZV0gPSAnLyc7CiAgICAgYnVmZmVyWzEzICsgbGlua1RleHRTaXplICsgc3RyaW5n
U2l6ZV0gPSAnYSc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9kdG9hLmgKaW5kZXggODUyNzNhNGEyMDI3MDcyMjBhYjdiYzQ2MWY0MTY4ZjM1OTM1
ZDkzNi4uZmFiODQwZTVmMDY4Njk2ZDJjMDc2ZjhhMTc0NDc0OWNiNTg4YjJmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZHRvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuaApAQCAt
MjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDksNiArNDksNyBAQCBXVEZfRVhQT1JUX1BS
SVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGRvdWJsZSwgdW5zaWdu
ZWQgZGVjaW1hbAogCiBkb3VibGUgcGFyc2VEb3VibGUoY29uc3QgTENoYXIqIHN0cmluZywgc2l6
ZV90IGxlbmd0aCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOwogZG91YmxlIHBhcnNlRG91YmxlKGNv
bnN0IFVDaGFyKiBzdHJpbmcsIHNpemVfdCBsZW5ndGgsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsK
K2RvdWJsZSBwYXJzZURvdWJsZShTdHJpbmdWaWV3LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CiAK
IG5hbWVzcGFjZSBJbnRlcm5hbCB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJz
ZURvdWJsZUZyb21Mb25nU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcsIHNpemVfdCBsZW5ndGgs
IHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKQEAgLTY5LDYgKzcwLDEzIEBAIGlubGluZSBkb3VibGUg
cGFyc2VEb3VibGUoY29uc3QgVUNoYXIqIHN0cmluZywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBw
YXJzZWRMZW5nCiAgICAgICAgIGNvbnZlcnNpb25CdWZmZXJbaV0gPSBpc0FTQ0lJKHN0cmluZ1tp
XSkgPyBzdHJpbmdbaV0gOiAwOwogICAgIHJldHVybiBwYXJzZURvdWJsZShjb252ZXJzaW9uQnVm
ZmVyLCBsZW5ndGgsIHBhcnNlZExlbmd0aCk7CiB9CisKK2lubGluZSBkb3VibGUgcGFyc2VEb3Vi
bGUoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQoreworICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBwYXJzZURvdWJsZShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwYXJzZWRMZW5ndGgpOworICAgIHJldHVybiBwYXJz
ZURvdWJsZShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcGFyc2VkTGVu
Z3RoKTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdURgogCg==
</data>
<flag name="review"
          id="251084"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>