<?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>55698</bug_id>
          
          <creation_ts>2011-03-03 12:24:35 -0800</creation_ts>
          <short_desc>JSVariableObject needs to use WriteBarrier for symboltable property storage</short_desc>
          <delta_ts>2011-03-03 14:31:29 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361829</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-03 12:24:35 -0800</bug_when>
    <thetext>JSVariableObject needs to use WriteBarrier for symboltable property storage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361838</commentid>
    <comment_count>1</comment_count>
      <attachid>84608</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-03 12:33:25 -0800</bug_when>
    <thetext>Created attachment 84608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361839</commentid>
    <comment_count>2</comment_count>
      <attachid>84608</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-03 12:34:18 -0800</bug_when>
    <thetext>Comment on attachment 84608
Patch

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

&gt; Source/JavaScriptCore/runtime/ArgList.h:75
&gt; -            m_buffer = buffer;
&gt; +            m_buffer = reinterpret_cast&lt;Register*&gt;(buffer);

Why is this OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361842</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-03 12:36:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 84608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84608&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ArgList.h:75
&gt; &gt; -            m_buffer = buffer;
&gt; &gt; +            m_buffer = reinterpret_cast&lt;Register*&gt;(buffer);
&gt; 
&gt; Why is this OK?

Register is just another class that wraps a JSValue, which is (essentially) all that WriteBarrier is</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361892</commentid>
    <comment_count>4</comment_count>
      <attachid>84608</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-03 13:27:53 -0800</bug_when>
    <thetext>Comment on attachment 84608
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361945</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-03 14:31:29 -0800</bug_when>
    <thetext>Committed r80285: &lt;http://trac.webkit.org/changeset/80285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84608</attachid>
            <date>2011-03-03 12:33:25 -0800</date>
            <delta_ts>2011-03-03 13:27:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55698-20110303123324.patch</filename>
            <type>text/plain</type>
            <size>45767</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGUz
ZjNjMmU2YzdiZGVhYWMzZjYxNjk2NzU1NjU4OGQ3NmYwNzExMzYuLjkyZDNhYjIyYjZlMTI4NTNi
YjE2YzAwODk0YTAxOTgxNjU1ZDk2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY3IEBACisyMDExLTAzLTAzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlNWYXJpYWJs
ZU9iamVjdCBuZWVkcyB0byB1c2UgV3JpdGVCYXJyaWVyIGZvciBzeW1ib2x0YWJsZSBwcm9wZXJ0
eSBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTY5OAorCisgICAgICAgIFJlcGxhY2UgdGhlIGRpcmVjdCB1c2FnZSBvZiBSZWdpc3RlciBp
biBKU1ZhcmlhYmxlT2JqZWN0IChhbmQgZGVzY2VuZGVudHMpCisgICAgICAgIHdpdGggV3JpdGVC
YXJyaWVyLiAgVGhpcyByZXF1aXJlcyB1cGRhdGluZyB0aGUgQXJndW1lbnRzIG9iamVjdCB0byB1
c2UKKyAgICAgICAgV3JpdGVCYXJyaWVyIGFzIHdlbGwuCisKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxs
RnJhbWUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHMpOgorICAgICAgICAqIGpp
dC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXJndW1lbnRzOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OmNvcHlUb1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6ZmlsbEFy
Z0xpc3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKEpTQzo6QXJndW1lbnRzOjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6
CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6c2V0QWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6QXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjb3B5UmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjb3B5UmVnaXN0ZXJzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZh
dGlvbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQpOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6cHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246
OmFyZ3VtZW50c0dldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpwdXRXaXRoQXR0
cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y29weUdsb2JhbHNGcm9tKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzVG8pOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cmVzaXplUmVnaXN0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YWRkU3RhdGljR2xvYmFscyk6CisgICAgICAg
ICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGF0
aWNTY29wZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6
cHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNWYXJp
YWJsZU9iamVjdDo6cmVnaXN0ZXJBdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6
OkpTVmFyaWFibGVPYmplY3REYXRhOjpKU1ZhcmlhYmxlT2JqZWN0RGF0YSk6CisgICAgICAgIChK
U0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxl
T2JqZWN0OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6Y29weVJlZ2lzdGVyQXJyYXkpOgorICAgICAgICAoSlNDOjpKU1Zhcmlh
YmxlT2JqZWN0OjpzZXRSZWdpc3RlcnMpOgorCiAyMDExLTAzLTAzICBQZXRlciBWYXJnYSAgPHB2
YXJnYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggMjlkNDI5Y2Y5N2YxM2M0YjIwNDAwZWU1ODdhNThmODJjYTkyMWQ4Ni4uNjcwNjA4Y2JkY2Yy
NWVkZDUxOGFiOThhODAzMTFkNDY0ODJiODg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01NjksMTQgKzU2OSwxNCBAQCBO
RVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSom
IGNhbGxGcmFtZSwgSlNWYWx1ZSBleAogCiAgICAgICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFp
bihzY29wZUNoYWluKTsKICAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3Rp
dmF0aW9uKHNjb3BlQ2hhaW4tPm9iamVjdC5nZXQoKSk7Ci0gICAgICAgIGFjdGl2YXRpb24tPmNv
cHlSZWdpc3RlcnMoKTsKKyAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygqc2NvcGVD
aGFpbi0+Z2xvYmFsRGF0YSk7CiAgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2Nr
LT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW9s
ZENvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMo
YXJndW1lbnRzKS0+c2V0QWN0aXZhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgYWN0aXZh
dGlvbik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3Vt
ZW50cygpICYmICFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChK
U1ZhbHVlIGFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIob2xkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgp
KQotICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+Y29weVJlZ2lzdGVycygpOwor
ICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+Y29weVJlZ2lzdGVycyhjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSk7CiAgICAgfQogCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9
IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKQEAgLTIzNTYsNyArMjM1Niw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpCiAgICAgICAgIEFTU0VSVChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSk7
CiAgICAgICAgIGludCBpbmRleCA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCk7CisgICAgICAg
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpLmdl
dCgpOwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfZ2xvYmFsX3Zhcik7CiAg
ICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC0yMzcwLDcgKzIzNzAsNyBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJl
Z2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBpbnQgaW5kZXggPSB2UENbMV0udS5vcGVy
YW5kOwogICAgICAgICBpbnQgdmFsdWUgPSB2UENbMl0udS5vcGVyYW5kOwogICAgICAgICAKLSAg
ICAgICAgc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpID0gSlNWYWx1ZShjYWxsRnJhbWUtPnIodmFs
dWUpLmpzVmFsdWUoKSk7CisgICAgICAgIHNjb3BlLT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKmds
b2JhbERhdGEsIHNjb3BlLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFyKTsKICAgICAgICAgTkVYVF9J
TlNUUlVDVElPTigpOwogICAgIH0KQEAgLTI0MDEsNyArMjQwMSw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVP
YmplY3QoKSk7CiAgICAgICAgIEpTVmFyaWFibGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8
SlNWYXJpYWJsZU9iamVjdCo+KGl0ZXItPmdldCgpKTsKLSAgICAgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCk7CisgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOwogICAg
ICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKGRzdCkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9
IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3Njb3BlZF92YXIpOwogICAgICAgICBORVhUX0lOU1RSVUNU
SU9OKCk7CkBAIC0yNDMzLDcgKzI0MzMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRl
RXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAg
ICAgICBBU1NFUlQoKCppdGVyKS0+aXNWYXJpYWJsZU9iamVjdCgpKTsKICAgICAgICAgSlNWYXJp
YWJsZU9iamVjdCogc2NvcGUgPSBzdGF0aWNfY2FzdDxKU1ZhcmlhYmxlT2JqZWN0Kj4oaXRlci0+
Z2V0KCkpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwot
ICAgICAgICBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCkgPSBKU1ZhbHVlKGNhbGxGcmFtZS0+cih2
YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpLnNldCgq
Z2xvYmFsRGF0YSwgc2NvcGUsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X3Njb3BlZF92YXIpOwogICAgICAgICBORVhU
X0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtNDA5Myw3ICs0MDkzLDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
KTsKICAgICAgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPnIoYWN0aXZh
dGlvbikuanNWYWx1ZSgpOwogICAgICAgICBpZiAoYWN0aXZhdGlvblZhbHVlKSB7Ci0gICAgICAg
ICAgICBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKS0+Y29weVJlZ2lzdGVycygpOworICAg
ICAgICAgICAgYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSktPmNvcHlSZWdpc3RlcnMoKmds
b2JhbERhdGEpOwogCiAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHNWYWx1ZSA9IGNh
bGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSkuanNWYWx1
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQpA
QCAtNDEwMSw3ICs0MTAxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlIGFyZ3VtZW50c1ZhbHVlID0gY2FsbEZyYW1lLT5y
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKS5qc1ZhbHVlKCkpIHsKICAg
ICAgICAgICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSktPmNvcHlSZWdpc3RlcnMoKTsKKyAgICAgICAg
ICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSktPmNvcHlSZWdpc3RlcnMoKmdsb2Jh
bERhdGEpOwogICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfdGVh
cl9vZmZfYWN0aXZhdGlvbik7CkBAIC00MTIzLDcgKzQxMjMsNyBAQCBza2lwX2lkX2N1c3RvbV9z
ZWxmOgogICAgICAgICBBU1NFUlQoIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYm
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnVzZXNBcmd1bWVudHMoKSk7CiAKICAgICAg
ICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3RlcihzcmMxKSkuanNWYWx1ZSgpKQotICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJn
dW1lbnRzKS0+Y29weVJlZ2lzdGVycygpOworICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1l
bnRzKS0+Y29weVJlZ2lzdGVycygqZ2xvYmFsRGF0YSk7CiAKICAgICAgICAgdlBDICs9IE9QQ09E
RV9MRU5HVEgob3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElP
TigpOwpAQCAtNDc5OSw3ICs0Nzk5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cmV0cmlldmVB
cmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW8KICAgICB9
CiAKICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoZnVuY3Rpb25DYWxsRnJhbWUpIEFy
Z3VtZW50cyhmdW5jdGlvbkNhbGxGcmFtZSk7Ci0gICAgYXJndW1lbnRzLT5jb3B5UmVnaXN0ZXJz
KCk7CisgICAgYXJndW1lbnRzLT5jb3B5UmVnaXN0ZXJzKGZ1bmN0aW9uQ2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkpOwogICAgIHJldHVybiBhcmd1bWVudHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKaW5kZXggZTUwYWEzNjA2YmM1NDNiYzc0N2I1Mzg0OTIxNmNmODZl
YmNkYTU4YS4uOTViZjUyYzA3ZTI1MjE5OTg4ZmM5Njk2NjNjMzZmYjVhYjUyNTM4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTIxMjksMTIgKzIxMjksMTIgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfdGVhcl9vZmZfYWN0aXZhdGlvbikKICAgICBp
ZiAoIWFjdGl2YXRpb25WYWx1ZSkgewogICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gc3RhY2tGcmFt
ZS5hcmdzWzFdLmpzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKCFzdGFja0ZyYW1lLmNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgIGFzQXJn
dW1lbnRzKHYpLT5jb3B5UmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMo
diktPmNvcHlSZWdpc3RlcnMoKnN0YWNrRnJhbWUuZ2xvYmFsRGF0YSk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0Fj
dGl2YXRpb24oc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSk7Ci0gICAgYWN0aXZhdGlvbi0+
Y29weVJlZ2lzdGVycygpOworICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKnN0YWNrRnJh
bWUuZ2xvYmFsRGF0YSk7CiAgICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCkpIHsKICAgICAgICAgaWYgKCFzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnNldEFjdGl2
YXRpb24oKnN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgYWN0aXZhdGlvbik7CkBAIC0yMTQ2LDcgKzIx
NDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hcmd1bWVudHMp
CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQVNTRVJUKHN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFzdGFj
a0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7Ci0g
ICAgYXNBcmd1bWVudHMoc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSktPmNvcHlSZWdpc3Rl
cnMoKTsKKyAgICBhc0FyZ3VtZW50cyhzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKS0+Y29w
eVJlZ2lzdGVycygqc3RhY2tGcmFtZS5nbG9iYWxEYXRhKTsKIH0KIAogREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCwgb3BfcHJvZmlsZV93aWxsX2NhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKaW5kZXggNTdlM2MyMGM1ZGU2OWViMzU0MTkxNWU3YzQyZmVlZDE0ZmQ2
ZTU1ZS4uNTU2NGQ1YmY3NjU4OWUzNmM2Y2M2MDJhMmE0YjZjNTBkY2Q3MjAyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtNjcsMTIgKzY3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRpYWxp
emUoUmVnaXN0ZXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCisgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZShXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJ1ZmZlciwgc2l6ZV90IHNpemUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVCghbV9tYXJrU2V0KTsKICAgICAgICAgICAgIEFTU0VSVChpc0Vt
cHR5KCkpOwogCi0gICAgICAgICAgICBtX2J1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgICAgIG1f
YnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KGJ1ZmZlcik7CiAgICAgICAgICAg
ICBtX3NpemUgPSBzaXplOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1faXNSZWFkT25s
eSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApp
bmRleCBiYWY5YjUzNzk0YjRlOTVjNWQyOGE4NTYzZmRkZmI3NzNiMDZlN2M4Li5lMjAxYjkxZjUz
MDFlN2MwM2ViZDQ0NDQ2M2UwNWI0MDUzNGEyOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTQ4LDExICs0OCwxMSBAQCB2b2lkIEFyZ3VtZW50
czo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIEpTT2JqZWN0OjptYXJr
Q2hpbGRyZW4obWFya1N0YWNrKTsKIAogICAgIGlmIChkLT5yZWdpc3RlckFycmF5KQotICAgICAg
ICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhkLT5yZWdpc3RlckFycmF5LmdldCgp
LCBkLT5udW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhkLT5y
ZWdpc3RlckFycmF5LmdldCgpLCBkLT5udW1QYXJhbWV0ZXJzKTsKIAogICAgIGlmIChkLT5leHRy
YUFyZ3VtZW50cykgewogICAgICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQtPm51
bUFyZ3VtZW50cyAtIGQtPm51bVBhcmFtZXRlcnM7Ci0gICAgICAgIG1hcmtTdGFjay5kZXByZWNh
dGVkQXBwZW5kVmFsdWVzKGQtPmV4dHJhQXJndW1lbnRzLCBudW1FeHRyYUFyZ3VtZW50cyk7Cisg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJh
QXJndW1lbnRzKTsKICAgICB9CiAKICAgICBtYXJrU3RhY2suYXBwZW5kKCZkLT5jYWxsZWUpOwpA
QCAtNzQsOSArNzQsOSBAQCB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNTdGF0
ZSogZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4UwogICAgICAgICB1bnNpZ25l
ZCBwYXJhbWV0ZXJzTGVuZ3RoID0gbWluKG1pbihkLT5udW1QYXJhbWV0ZXJzLCBkLT5udW1Bcmd1
bWVudHMpLCBtYXhTaXplKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGZvciAo
OyBpIDwgcGFyYW1ldGVyc0xlbmd0aDsgKytpKQotICAgICAgICAgICAgYnVmZmVyW2ldID0gZC0+
cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5qc1ZhbHVlKCk7CisgICAgICAg
ICAgICBidWZmZXJbaV0gPSBkLT5yZWdpc3RlcnNbZC0+Zmlyc3RQYXJhbWV0ZXJJbmRleCArIGld
LmdldCgpOwogICAgICAgICBmb3IgKDsgaSA8IGQtPm51bUFyZ3VtZW50czsgKytpKQotICAgICAg
ICAgICAgYnVmZmVyW2ldID0gZC0+ZXh0cmFBcmd1bWVudHNbaSAtIGQtPm51bVBhcmFtZXRlcnNd
LmpzVmFsdWUoKTsKKyAgICAgICAgICAgIGJ1ZmZlcltpXSA9IGQtPmV4dHJhQXJndW1lbnRzW2kg
LSBkLT5udW1QYXJhbWV0ZXJzXS5nZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
QEAgLTg0LDEzICs4NCwxMyBAQCB2b2lkIEFyZ3VtZW50czo6Y29weVRvUmVnaXN0ZXJzKEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXIqIGJ1ZmZlciwgdWludDMyX3QgbWF4UwogICAgIHVuc2lnbmVk
IGkgPSAwOwogICAgIGZvciAoOyBpIDwgcGFyYW1ldGVyc0xlbmd0aDsgKytpKSB7CiAgICAgICAg
IGlmICghZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkKLSAgICAgICAgICAgIGJ1ZmZlcltpXSA9IGQt
PnJlZ2lzdGVyc1tkLT5maXJzdFBhcmFtZXRlckluZGV4ICsgaV0uanNWYWx1ZSgpOworICAgICAg
ICAgICAgYnVmZmVyW2ldID0gZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBp
XS5nZXQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVmZmVyW2ldID0gZ2V0KGV4ZWMs
IGkpOwogICAgIH0KICAgICBmb3IgKDsgaSA8IGQtPm51bUFyZ3VtZW50czsgKytpKSB7CiAgICAg
ICAgIGlmICghZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkKLSAgICAgICAgICAgIGJ1ZmZlcltpXSA9
IGQtPmV4dHJhQXJndW1lbnRzW2kgLSBkLT5udW1QYXJhbWV0ZXJzXS5qc1ZhbHVlKCk7CisgICAg
ICAgICAgICBidWZmZXJbaV0gPSBkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVy
c10uZ2V0KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IGdldChleGVj
LCBpKTsKICAgICB9CkBAIC0xMTksOSArMTE5LDkgQEAgdm9pZCBBcmd1bWVudHM6OmZpbGxBcmdM
aXN0KEV4ZWNTdGF0ZSogZXhlYywgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpCiAgICAgICAg
IHVuc2lnbmVkIHBhcmFtZXRlcnNMZW5ndGggPSBtaW4oZC0+bnVtUGFyYW1ldGVycywgZC0+bnVt
QXJndW1lbnRzKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGZvciAoOyBpIDwg
cGFyYW1ldGVyc0xlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJncy5hcHBlbmQoZC0+cmVnaXN0
ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5qc1ZhbHVlKCkpOworICAgICAgICAgICAg
YXJncy5hcHBlbmQoZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5nZXQo
KSk7CiAgICAgICAgIGZvciAoOyBpIDwgZC0+bnVtQXJndW1lbnRzOyArK2kpCi0gICAgICAgICAg
ICBhcmdzLmFwcGVuZChkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVyc10uanNW
YWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGQtPmV4dHJhQXJndW1lbnRzW2kgLSBk
LT5udW1QYXJhbWV0ZXJzXS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEy
OSwxMyArMTI5LDEzIEBAIHZvaWQgQXJndW1lbnRzOjpmaWxsQXJnTGlzdChFeGVjU3RhdGUqIGV4
ZWMsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzKQogICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
IGZvciAoOyBpIDwgcGFyYW1ldGVyc0xlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmICghZC0+ZGVs
ZXRlZEFyZ3VtZW50c1tpXSkKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGQtPnJlZ2lzdGVyc1tk
LT5maXJzdFBhcmFtZXRlckluZGV4ICsgaV0uanNWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGQtPnJlZ2lzdGVyc1tkLT5maXJzdFBhcmFtZXRlckluZGV4ICsgaV0uZ2V0KCkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChnZXQoZXhlYywgaSkpOwogICAg
IH0KICAgICBmb3IgKDsgaSA8IGQtPm51bUFyZ3VtZW50czsgKytpKSB7CiAgICAgICAgIGlmICgh
ZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGQtPmV4dHJh
QXJndW1lbnRzW2kgLSBkLT5udW1QYXJhbWV0ZXJzXS5qc1ZhbHVlKCkpOworICAgICAgICAgICAg
YXJncy5hcHBlbmQoZC0+ZXh0cmFBcmd1bWVudHNbaSAtIGQtPm51bVBhcmFtZXRlcnNdLmdldCgp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJncy5hcHBlbmQoZ2V0KGV4ZWMsIGkpKTsK
ICAgICB9CkBAIC0xNDUsOSArMTQ1LDkgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5U2xvdCYgc2wKIHsKICAg
ICBpZiAoaSA8IGQtPm51bUFyZ3VtZW50cyAmJiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQt
PmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CiAgICAgICAgIGlmIChpIDwgZC0+bnVtUGFyYW1ldGVy
cykgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShkLT5yZWdpc3RlcnNbZC0+Zmlyc3RQYXJh
bWV0ZXJJbmRleCArIGldLmpzVmFsdWUoKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGQt
PnJlZ2lzdGVyc1tkLT5maXJzdFBhcmFtZXRlckluZGV4ICsgaV0uZ2V0KCkpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+ZXh0cmFBcmd1bWVudHNbaSAtIGQt
Pm51bVBhcmFtZXRlcnNdLmpzVmFsdWUoKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGQt
PmV4dHJhQXJndW1lbnRzW2kgLSBkLT5udW1QYXJhbWV0ZXJzXS5nZXQoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMTg0LDkgKzE4NCw5IEBAIGJvb2wgQXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hCiAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoaXNBcnJh
eUluZGV4KTsKICAgICBpZiAoaXNBcnJheUluZGV4ICYmIGkgPCBkLT5udW1Bcmd1bWVudHMgJiYg
KCFkLT5kZWxldGVkQXJndW1lbnRzIHx8ICFkLT5kZWxldGVkQXJndW1lbnRzW2ldKSkgewogICAg
ICAgICBpZiAoaSA8IGQtPm51bVBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUoZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5qc1ZhbHVlKCkpOwor
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShkLT5yZWdpc3RlcnNbZC0+Zmlyc3RQYXJhbWV0ZXJJ
bmRleCArIGldLmdldCgpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzbG90LnNldFZh
bHVlKGQtPmV4dHJhQXJndW1lbnRzW2kgLSBkLT5udW1QYXJhbWV0ZXJzXS5qc1ZhbHVlKCkpOwor
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFy
YW1ldGVyc10uZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIxNSw5
ICsyMTUsOSBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcAogICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7CiAgICAgaWYgKGlzQXJyYXlJbmRl
eCAmJiBpIDwgZC0+bnVtQXJndW1lbnRzICYmICghZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+
ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKICAgICAgICAgaWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJz
KSB7Ci0gICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+cmVnaXN0ZXJzW2Qt
PmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5qc1ZhbHVlKCksIERvbnRFbnVtKTsKKyAgICAgICAg
ICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5yZWdpc3RlcnNbZC0+Zmlyc3RQYXJhbWV0
ZXJJbmRleCArIGldLmdldCgpLCBEb250RW51bSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPmV4dHJhQXJndW1lbnRzW2kgLSBkLT5udW1Q
YXJhbWV0ZXJzXS5qc1ZhbHVlKCksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVyc10uZ2V0
KCksIERvbnRFbnVtKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMjU3
LDkgKzI1Nyw5IEBAIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChpIDwgZC0+bnVtQXJndW1lbnRzICYmICgh
ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKICAgICAg
ICAgaWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJzKQotICAgICAgICAgICAgZC0+cmVnaXN0ZXJzW2Qt
PmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXSA9IEpTVmFsdWUodmFsdWUpOworICAgICAgICAgICAg
ZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBkLT5hY3RpdmF0aW9uID8gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oZC0+YWN0aXZhdGlv
bi5nZXQoKSkgOiBzdGF0aWNfY2FzdDxKU0NlbGwqPih0aGlzKSwgdmFsdWUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVyc10g
PSBKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzW2kgLSBkLT5u
dW1QYXJhbWV0ZXJzXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3Myw5ICsyNzMsOSBAQCB2b2lkIEFyZ3VtZW50czo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbAogICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJy
YXlJbmRleCk7CiAgICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgZC0+bnVtQXJndW1lbnRzICYm
ICghZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKICAg
ICAgICAgaWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJzKQotICAgICAgICAgICAgZC0+cmVnaXN0ZXJz
W2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXSA9IEpTVmFsdWUodmFsdWUpOworICAgICAgICAg
ICAgZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBkLT5hY3RpdmF0aW9uID8gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oZC0+YWN0aXZh
dGlvbi5nZXQoKSkgOiBzdGF0aWNfY2FzdDxKU0NlbGwqPih0aGlzKSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBkLT5leHRyYUFyZ3VtZW50c1tpIC0gZC0+bnVtUGFyYW1ldGVy
c10gPSBKU1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGQtPmV4dHJhQXJndW1lbnRzW2kgLSBk
LT5udW1QYXJhbWV0ZXJzXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgKaW5kZXggNzNjM2Q1OTllYTY0NmU1ZjdjNzc1ODFjNmQ2ZDUxM2JiZTI0NTc4Yi4u
MDA3ZTBmMTkxNTlmMjkxODFjOWI0ZmI4YTkwM2QwYTQwZjlkNjg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTQyLDEyICs0MiwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcHRyZGlmZl90IGZpcnN0UGFyYW1ldGVySW5kZXg7CiAgICAgICAg
IHVuc2lnbmVkIG51bUFyZ3VtZW50czsKIAotICAgICAgICBSZWdpc3RlciogcmVnaXN0ZXJzOwot
ICAgICAgICBPd25BcnJheVB0cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnM7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRl
QmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXk7CiAKLSAgICAgICAgUmVnaXN0ZXIqIGV4
dHJhQXJndW1lbnRzOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGV4dHJhQXJndW1l
bnRzOwogICAgICAgICBPd25BcnJheVB0cjxib29sPiBkZWxldGVkQXJndW1lbnRzOwotICAgICAg
ICBSZWdpc3RlciBleHRyYUFyZ3VtZW50c0ZpeGVkQnVmZmVyWzRdOworICAgICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gZXh0cmFBcmd1bWVudHNGaXhlZEJ1ZmZlcls0XTsKIAogICAgICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwogICAgICAgICBib29sIG92ZXJyb2RlTGVu
Z3RoIDogMTsKQEAgLTgzLDEwICs4MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgdm9pZCBjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBS
ZWdpc3RlciogYnVmZmVyLCB1aW50MzJfdCBtYXhTaXplKTsKLSAgICAgICAgdm9pZCBjb3B5UmVn
aXN0ZXJzKCk7CisgICAgICAgIHZvaWQgY29weVJlZ2lzdGVycyhKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgYm9vbCBpc1Rvcm5PZmYoKSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3RlckFycmF5OyB9
CiAgICAgICAgIHZvaWQgc2V0QWN0aXZhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
QWN0aXZhdGlvbiogYWN0aXZhdGlvbikKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFk
LT5yZWdpc3RlckFycmF5KTsKICAgICAgICAgICAgIGQtPmFjdGl2YXRpb24uc2V0KGdsb2JhbERh
dGEsIHRoaXMsIGFjdGl2YXRpb24pOwogICAgICAgICAgICAgZC0+cmVnaXN0ZXJzID0gJmFjdGl2
YXRpb24tPnJlZ2lzdGVyQXQoMCk7CiAgICAgICAgIH0KQEAgLTE1NywxOSArMTU4LDE5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBkLT5maXJzdFBhcmFtZXRlckluZGV4ID0gZmlyc3RQYXJh
bWV0ZXJJbmRleDsKICAgICAgICAgZC0+bnVtQXJndW1lbnRzID0gbnVtQXJndW1lbnRzOwogCi0g
ICAgICAgIGQtPnJlZ2lzdGVycyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7CisgICAgICAgIGQt
PnJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4oY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSk7CiAKLSAgICAgICAgUmVnaXN0ZXIqIGV4dHJhQXJndW1lbnRz
OworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGV4dHJhQXJndW1lbnRzOwogICAgICAg
ICBpZiAoZC0+bnVtQXJndW1lbnRzIDw9IGQtPm51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICBl
eHRyYUFyZ3VtZW50cyA9IDA7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdW5zaWduZWQg
bnVtRXh0cmFBcmd1bWVudHMgPSBkLT5udW1Bcmd1bWVudHMgLSBkLT5udW1QYXJhbWV0ZXJzOwot
ICAgICAgICAgICAgaWYgKG51bUV4dHJhQXJndW1lbnRzID4gc2l6ZW9mKGQtPmV4dHJhQXJndW1l
bnRzRml4ZWRCdWZmZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKSkKLSAgICAgICAgICAgICAgICBleHRy
YUFyZ3VtZW50cyA9IG5ldyBSZWdpc3RlcltudW1FeHRyYUFyZ3VtZW50c107CisgICAgICAgICAg
ICBpZiAobnVtRXh0cmFBcmd1bWVudHMgPiBzaXplb2YoZC0+ZXh0cmFBcmd1bWVudHNGaXhlZEJ1
ZmZlcikgLyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkKKyAgICAgICAgICAgICAgICBl
eHRyYUFyZ3VtZW50cyA9IG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbnVtRXh0cmFBcmd1bWVu
dHNdOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGV4dHJhQXJndW1lbnRzID0g
ZC0+ZXh0cmFBcmd1bWVudHNGaXhlZEJ1ZmZlcjsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1FeHRyYUFyZ3VtZW50czsgKytpKQotICAgICAgICAgICAgICAgIGV4dHJh
QXJndW1lbnRzW2ldID0gYXJndltkLT5udW1QYXJhbWV0ZXJzICsgaV07CisgICAgICAgICAgICAg
ICAgZXh0cmFBcmd1bWVudHNbaV0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBh
cmd2W2QtPm51bVBhcmFtZXRlcnMgKyBpXS5qc1ZhbHVlKCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKQEAgLTE4MCw3ICsxODEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsKICAg
ICAgICAgZC0+aXNTdHJpY3RNb2RlID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCk7CiAgICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUpCi0gICAgICAgICAgICBjb3B5UmVn
aXN0ZXJzKCk7CisgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE5vUGFyYW1ldGVyc1R5cGUpCkBAIC0xOTUsMTUgKzE5NiwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IDA7CiAgICAgICAgIGQtPm51
bUFyZ3VtZW50cyA9IG51bUFyZ3VtZW50czsKIAotICAgICAgICBSZWdpc3RlciogZXh0cmFBcmd1
bWVudHM7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogZXh0cmFBcmd1bWVudHM7CiAg
ICAgICAgIGlmIChudW1Bcmd1bWVudHMgPiBzaXplb2YoZC0+ZXh0cmFBcmd1bWVudHNGaXhlZEJ1
ZmZlcikgLyBzaXplb2YoUmVnaXN0ZXIpKQotICAgICAgICAgICAgZXh0cmFBcmd1bWVudHMgPSBu
ZXcgUmVnaXN0ZXJbbnVtQXJndW1lbnRzXTsKKyAgICAgICAgICAgIGV4dHJhQXJndW1lbnRzID0g
bmV3IFdyaXRlQmFycmllcjxVbmtub3duPltudW1Bcmd1bWVudHNdOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBleHRyYUFyZ3VtZW50cyA9IGQtPmV4dHJhQXJndW1lbnRzRml4ZWRCdWZmZXI7
CiAKICAgICAgICAgUmVnaXN0ZXIqIGFyZ3YgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gbnVtQXJndW1lbnRzIC0gMTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3VtZW50czsgKytpKQotICAgICAgICAg
ICAgZXh0cmFBcmd1bWVudHNbaV0gPSBhcmd2W2ldOworICAgICAgICAgICAgZXh0cmFBcmd1bWVu
dHNbaV0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBhcmd2W2ldLmpzVmFsdWUo
KSk7CiAKICAgICAgICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKIApAQCAt
MjEzLDEwICsyMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGQtPm92ZXJyb2RlQ2Fs
bGVyID0gZmFsc2U7CiAgICAgICAgIGQtPmlzU3RyaWN0TW9kZSA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpOwogICAgICAgICBpZiAoZC0+aXNTdHJpY3RNb2RlKQotICAg
ICAgICAgICAgY29weVJlZ2lzdGVycygpOworICAgICAgICAgICAgY29weVJlZ2lzdGVycyhjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgQXJndW1lbnRz
Ojpjb3B5UmVnaXN0ZXJzKCkKKyAgICBpbmxpbmUgdm9pZCBBcmd1bWVudHM6OmNvcHlSZWdpc3Rl
cnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1Rv
cm5PZmYoKSk7CiAKQEAgLTIyNiwxNCArMjI3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSBkLT5udW1QYXJhbWV0ZXJzICsgUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplOwogICAgICAgICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemUgPSBk
LT5udW1QYXJhbWV0ZXJzOwogCi0gICAgICAgIE93bkFycmF5UHRyPFJlZ2lzdGVyPiByZWdpc3Rl
ckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgUmVnaXN0ZXJbcmVnaXN0ZXJBcnJheVNpemVdKTsK
LSAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPnJlZ2lzdGVycyAtIHJlZ2lz
dGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSAqIHNpemVvZihSZWdpc3RlcikpOworICAgICAg
ICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRv
cHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0ZXJBcnJheVNpemU7IGkrKykK
KyAgICAgICAgICAgIHJlZ2lzdGVyQXJyYXlbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIGQtPnJl
Z2lzdGVyc1tpIC0gcmVnaXN0ZXJPZmZzZXRdLmdldCgpKTsKICAgICAgICAgZC0+cmVnaXN0ZXJz
ID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgICAgICBkLT5yZWdp
c3RlckFycmF5ID0gcmVnaXN0ZXJBcnJheS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgLy8gVGhp
cyBKU0FjdGl2YXRpb24gZnVuY3Rpb24gaXMgZGVmaW5lZCBoZXJlIHNvIGl0IGNhbiBnZXQgYXQg
QXJndW1lbnRzOjpzZXRSZWdpc3RlcnMuCi0gICAgaW5saW5lIHZvaWQgSlNBY3RpdmF0aW9uOjpj
b3B5UmVnaXN0ZXJzKCkKKyAgICBpbmxpbmUgdm9pZCBKU0FjdGl2YXRpb246OmNvcHlSZWdpc3Rl
cnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFkKCkt
PnJlZ2lzdGVyQXJyYXkpOwogCkBAIC0yNDcsOCArMjQ5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IG51bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdp
c3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgICAgIHNpemVfdCByZWdpc3RlckFy
cmF5U2l6ZSA9IG51bUxvY2FscyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsK
IAotICAgICAgICBPd25BcnJheVB0cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdp
c3RlckFycmF5KGQoKS0+cmVnaXN0ZXJzIC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlT
aXplKTsKLSAgICAgICAgUmVnaXN0ZXIqIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkg
KyByZWdpc3Rlck9mZnNldDsKKyAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25v
d24+ID4gcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KGdsb2JhbERhdGEsIGQoKS0+
cmVnaXN0ZXJzIC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsg
cmVnaXN0ZXJPZmZzZXQ7CiAgICAgICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVy
QXJyYXkucmVsZWFzZSgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDc4M2Y5Y2UwNjRlOTM1OWZlYzk3ZmQ5ODQwZmEz
YWJlYWU0OGJlNmMuLmViOWM3YzE1OTA1YzcwOGFiMDI4Njg2NTI2MDMwZjE5MGNmN2I3NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAt
NTUsMTkgKzU1LDE5IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKICAgICAv
LyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBS
ZWdpc3RlckZpbGUuCi0gICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBkKCktPnJlZ2lzdGVy
QXJyYXkuZ2V0KCk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0g
ZCgpLT5yZWdpc3RlckFycmF5LmdldCgpOwogICAgIGlmICghcmVnaXN0ZXJBcnJheSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgc2l6ZV90IG51bVBhcmFtZXRlcnNNaW51c1RoaXMgPSBkKCktPmZ1
bmN0aW9uRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsKIAogICAgIHNpemVfdCBjb3VudCA9
IG51bVBhcmFtZXRlcnNNaW51c1RoaXM7Ci0gICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmRW
YWx1ZXMocmVnaXN0ZXJBcnJheSwgY291bnQpOworICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMo
cmVnaXN0ZXJBcnJheSwgY291bnQpOwogCiAgICAgc2l6ZV90IG51bVZhcnMgPSBkKCktPmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCk7CiAKICAgICAvLyBTa2lwIHRo
ZSBjYWxsIGZyYW1lLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlIHBhcmFtZXRlcnMgYW5kIHZhcnMu
Ci0gICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSArIGNv
dW50ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBudW1WYXJzLCBNYXlDb250
YWluTnVsbFZhbHVlcyk7CisgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5
ICsgY291bnQgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUsIG51bVZhcnMsIE1h
eUNvbnRhaW5OdWxsVmFsdWVzKTsKIH0KIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKQEAgLTc1LDEzICs3NSwxMyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydAogICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5h
bWUuaW1wbCgpKTsKICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChl
bnRyeS5nZXRJbmRleCgpIDwgc3RhdGljX2Nhc3Q8aW50PihkKCktPmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpKTsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZShyZWdp
c3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmpzVmFsdWUoKSk7CisgICAgICAgIHNsb3Quc2V0VmFs
dWUocmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlKQoraW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAtOTEsNyArOTEsNyBAQCBp
bmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIEFTU0VSVChlbnRyeS5nZXRJbmRleCgpIDwgc3RhdGljX2Nh
c3Q8aW50PihkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkp
KTsKLSAgICByZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpID0gdmFsdWU7CisgICAgcmVnaXN0
ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246
OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGUKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK2lubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKIHsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFs
dWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIApAQCAtMTE5LDcgKzExOSw3IEBAIGlubGlu
ZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0CiAgICAgaWYgKGVudHJ5LmdldEluZGV4KCkgPj0gc3RhdGljX2Nh
c3Q8aW50PihkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1
dGVzKTsKLSAgICByZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpID0gdmFsdWU7CisgICAgcmVn
aXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBKU0FjdGl2YXRp
b246OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZQogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBpZiAoc3ltYm9sVGFibGVQdXQocHJv
cGVydHlOYW1lLCB2YWx1ZSkpCisgICAgaWYgKHN5bWJvbFRhYmxlUHV0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdl
IGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNlIF9fcHJvdG9fXyBhbmQgZ2V0
dGVyL3NldHRlciAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0V2l0
aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eQog
ewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0g
SGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBpZiAoc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRl
cyhwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKKyAgICBpZiAoc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCBjYWxsIHRo
cm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSBfX3Byb3RvX18gYW5kIGdldHRlci9zZXR0ZXIgCkBA
IC0yMDIsNyArMjAyLDcgQEAgYm9vbCBKU0FjdGl2YXRpb246OmlzRHluYW1pY1Njb3BlKGJvb2wm
IHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3QKIEpTVmFsdWUgSlNBY3RpdmF0aW9uOjphcmd1
bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCiB7CiAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHNsb3RC
YXNlKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGFjdGl2
YXRpb24tPmQoKS0+cmVnaXN0ZXJzKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IENhbGxG
cmFtZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPihhY3RpdmF0aW9uLT5kKCkt
PnJlZ2lzdGVycykpOwogICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9IGFjdGl2YXRpb24tPmQo
KS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZSgpLmFyZ3VtZW50c1JlZ2lz
dGVyKCk7CiAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBhcmd1bWVudHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IGUw
MGMzMDNjZWM0ZjU1MjlmM2FlMTIxODQwZTg5ZDQ0YmI1NGEzNjIuLjZlMDQwNDE2MjgwY2I3ZDA3
NGUyZjdhYmEwMGRkOTQyNjhmNTMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CiAKLSAgICAgICAgdm9pZCBjb3B5UmVnaXN0ZXJzKCk7CisgICAgICAgIHZvaWQgY29weVJl
Z2lzdGVycyhKU0dsb2JhbERhdGEmKTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCkBAIC05Miw4ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7Ci0gICAgICAgIGJv
b2wgc3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpOwotICAgICAgICBi
b29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoY29uc3QgSWRlbnRpZmllciYsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0KEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKyAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZp
ZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgSlNW
YWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0
QXJndW1lbnRzR2V0dGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDBjZTNlNWJiY2RjNTQzZDU1ZTE2ZmUzNzUxYTBkN2My
ZTE1MzZhNy4uYjc2MzcwM2NmYTcxYTcyN2Y0MTE5NWFkYzMxOTY4Yjg2YTc4NTNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1CiB7CiAgICAgQVNTRVJUKCFI
ZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMp
KTsKIAotICAgIGlmIChzeW1ib2xUYWJsZVB1dChwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKKyAgICBp
ZiAoc3ltYm9sVGFibGVQdXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTVmFyaWFibGVPYmplY3Q6OnB1dChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcgogewogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBpZiAoc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKKyAgICBp
ZiAoc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBKU1Zh
bHVlIHZhbHVlQmVmb3JlID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CkBAIC0zNjcsMTIgKzM2
NywxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCiAgICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBPdXRzaWRl
IHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUgdG9y
biBvZmYsCiAgICAgICAgIC8vIHdlIGNhbiBtYXJrIHRoZSB0b3JuLW9mZiBhcnJheS4KLSAgICAg
ICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmRWYWx1ZXMoZCgpLT5yZWdpc3RlckFycmF5Lmdl
dCgpLCBkKCktPnJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZh
bHVlcyhkKCktPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQoKS0+cmVnaXN0ZXJBcnJheVNpemUpOwog
ICAgIH0gZWxzZSBpZiAoZCgpLT5yZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1
dGlvbiBvZiBnbG9iYWwgY29kZSwgd2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0
ZXIgZmlsZSwKICAgICAgICAgLy8gdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2
YXJpYWJsZXMgdGhlcmUgYXJlLCBhbmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3
aGVyZSB0aGV5IGVuZCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2lu
LgotICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZFZhbHVlcyhkKCktPnJlZ2lzdGVy
cyAtIHN5bWJvbFRhYmxlKCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAg
IG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoZCgpLT5yZWdpc3RlcnMgLSBzeW1ib2xUYWJsZSgpLnNp
emUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOwogICAgIH0KIH0KIApAQCAtMzk3LDggKzM5Nyw4
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzRnJvbShSZWdpc3RlckZpbGUmIHJl
Z2lzdGVyRmlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93bkFycmF5UHRyPFJl
Z2lzdGVyPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkocmVnaXN0ZXJGaWxlLmxh
c3RHbG9iYWwoKSwgbnVtR2xvYmFscyk7Ci0gICAgUmVnaXN0ZXIqIHJlZ2lzdGVycyA9IHJlZ2lz
dGVyQXJyYXkuZ2V0KCkgKyBudW1HbG9iYWxzOworICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmll
cjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRh
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJGaWxl
Lmxhc3RHbG9iYWwoKSksIG51bUdsb2JhbHMpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIG51bUdsb2JhbHM7CiAgICAgc2V0UmVn
aXN0ZXJzKHJlZ2lzdGVycywgcmVnaXN0ZXJBcnJheS5yZWxlYXNlKCksIG51bUdsb2JhbHMpOwog
fQogCkBAIC00MTIsOCArNDEyLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y29weUdsb2JhbHNU
byhSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSkKICAgICByZWdpc3RlckZpbGUuc2V0TnVtR2xv
YmFscyhzeW1ib2xUYWJsZSgpLnNpemUoKSk7CiAKICAgICBpZiAoZCgpLT5yZWdpc3RlckFycmF5
KSB7CisgICAgICAgIC8vIFRoZSByZWdpc3RlciBmaWxlIGlzIGFsd2F5cyBhIGdjIHJvb3Qgc28g
bm8gYmFycmllciBpcyBuZWVkZWQgaGVyZQogICAgICAgICBtZW1jcHkocmVnaXN0ZXJGaWxlLnN0
YXJ0KCkgLSBkKCktPnJlZ2lzdGVyQXJyYXlTaXplLCBkKCktPnJlZ2lzdGVyQXJyYXkuZ2V0KCks
IGQoKS0+cmVnaXN0ZXJBcnJheVNpemUgKiBzaXplb2YoUmVnaXN0ZXIpKTsKLSAgICAgICAgc2V0
UmVnaXN0ZXJzKHJlZ2lzdGVyRmlsZS5zdGFydCgpLCAwLCAwKTsKKyAgICAgICAgc2V0UmVnaXN0
ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJGaWxl
LnN0YXJ0KCkpLCAwLCAwKTsKICAgICB9CiB9CiAKQEAgLTQyMywxMSArNDI0LDExIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2l6ZVJlZ2lzdGVycyhpbnQgb2xkU2l6ZSwgaW50IG5ld1NpemUp
CiAgICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VS
VChuZXdTaXplICYmIG5ld1NpemUgPiBvbGRTaXplKTsKLQogICAgIGlmIChkKCktPnJlZ2lzdGVy
QXJyYXkgfHwgIWQoKS0+cmVnaXN0ZXJzKSB7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxz
aXplX3Q+KG9sZFNpemUpID09IGQoKS0+cmVnaXN0ZXJBcnJheVNpemUpOwotICAgICAgICBSZWdp
c3RlciogcmVnaXN0ZXJBcnJheSA9IG5ldyBSZWdpc3RlcltuZXdTaXplXTsKLSAgICAgICAgbWVt
Y3B5KHJlZ2lzdGVyQXJyYXkgKyBuZXdTaXplIC0gb2xkU2l6ZSwgZCgpLT5yZWdpc3RlckFycmF5
LmdldCgpLCBvbGRTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiogcmVnaXN0ZXJBcnJheSA9IG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbmV3
U2l6ZV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2xkU2l6ZTsgaSsrKQorICAgICAg
ICAgICAgcmVnaXN0ZXJBcnJheVtuZXdTaXplIC0gb2xkU2l6ZSArIGldLnNldChnbG9iYWxEYXRh
KCksIHRoaXMsIGQoKS0+cmVnaXN0ZXJBcnJheVtpXS5nZXQoKSk7CiAgICAgICAgIHNldFJlZ2lz
dGVycyhyZWdpc3RlckFycmF5ICsgbmV3U2l6ZSwgcmVnaXN0ZXJBcnJheSwgbmV3U2l6ZSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4obmV3U2l6ZSkg
PCBnbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLm1heEdsb2JhbHMoKSk7
CkBAIC00MzUsNyArNDM2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzaXplUmVnaXN0ZXJz
KGludCBvbGRTaXplLCBpbnQgbmV3U2l6ZSkKICAgICB9CiAKICAgICBmb3IgKGludCBpID0gLW5l
d1NpemU7IGkgPCAtb2xkU2l6ZTsgKytpKQotICAgICAgICBkKCktPnJlZ2lzdGVyc1tpXSA9IGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIGQoKS0+cmVnaXN0ZXJzW2ldLnNldFVuZGVmaW5lZCgpOwog
fQogCiB2b2lkKiBKU0dsb2JhbE9iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZWJiZWQ0Y2E2Y2M1ZDA3MmJlNjMxMDc5NGZkNTRhY2M2
YTJiMjMyLi5jOGJkODY1OTFlYTFjNmYwZDUzZWFhMmM4Y2M2NWFhNDljNDVhNDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5NSw3
ICsyOTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0
aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKIAotICAg
ICAgICB2b2lkIHNldFJlZ2lzdGVycyhSZWdpc3RlciogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQ
dHI8UmVnaXN0ZXI+IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7CisgICAgICAgIHZvaWQg
c2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50
KTsKIAogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTsgLy8gY2FuIG9ubHkgYmUg
YWxsb2NhdGVkIHdpdGggSlNHbG9iYWxEYXRhCiAgICAgfTsKQEAgLTMwOCw3ICszMDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oYXNPYmplY3QodmFsdWUpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBKU0dsb2JhbE9i
amVjdDo6c2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxS
ZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KQorICAgIGlubGluZSB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
cnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdp
c3RlcnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5KTsKICAgICAgICAgZCgpLT5yZWdpc3RlckFy
cmF5U2l6ZSA9IGNvdW50OwpAQCAtMzE4LDkgKzMxOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgICAgIHNpemVfdCBvbGRTaXplID0gZCgpLT5yZWdpc3RlckFycmF5U2l6ZTsKICAg
ICAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICsgY291bnQ7Ci0gICAgICAgIFJlZ2lzdGVy
KiByZWdpc3RlckFycmF5ID0gbmV3IFJlZ2lzdGVyW25ld1NpemVdOwotICAgICAgICBpZiAoZCgp
LT5yZWdpc3RlckFycmF5KQorICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
QXJyYXkgPSBuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W25ld1NpemVdOworICAgICAgICBpZiAo
ZCgpLT5yZWdpc3RlckFycmF5KSB7CisgICAgICAgICAgICAvLyBtZW1jcHkgaXMgc2FmZSBoZXJl
IGFzIHdlJ3JlIGNvcHlpbmcgYmFycmllcnMgd2UgYWxyZWFkeSBvd24gZnJvbSB0aGUgZXhpc3Rp
bmcgYXJyYXkKICAgICAgICAgICAgIG1lbWNweShyZWdpc3RlckFycmF5ICsgY291bnQsIGQoKS0+
cmVnaXN0ZXJBcnJheS5nZXQoKSwgb2xkU2l6ZSAqIHNpemVvZihSZWdpc3RlcikpOworICAgICAg
ICB9CisKICAgICAgICAgc2V0UmVnaXN0ZXJzKHJlZ2lzdGVyQXJyYXkgKyBuZXdTaXplLCByZWdp
c3RlckFycmF5LCBuZXdTaXplKTsKIAogICAgICAgICBmb3IgKGludCBpID0gMCwgaW5kZXggPSAt
c3RhdGljX2Nhc3Q8aW50PihvbGRTaXplKSAtIDE7IGkgPCBjb3VudDsgKytpLCAtLWluZGV4KSB7
CkBAIC0zMjgsNyArMzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsLmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKTsKICAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgbmV3RW50cnkoaW5kZXgsIGdsb2JhbC5hdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIHN5
bWJvbFRhYmxlKCkuYWRkKGdsb2JhbC5pZGVudGlmaWVyLmltcGwoKSwgbmV3RW50cnkpOwotICAg
ICAgICAgICAgcmVnaXN0ZXJBdChpbmRleCkgPSBnbG9iYWwudmFsdWU7CisgICAgICAgICAgICBy
ZWdpc3RlckF0KGluZGV4KS5zZXQoZ2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWwudmFsdWUpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCmluZGV4IDgwYjA0OGUwYTMwODQ2NDU1OGE3OTY3
ZDIwYmJkNzQ3ZmViN2U5NjguLjcwZjczOTNkNTczODhhNjIzMGJlYmIwZjQ5Yzk2YjNlNWVkZmEx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuY3BwCkBAIC00NywxNyArNDcsMTcgQEAgSlNWYWx1ZSBKU1N0YXRpY1Njb3Bl
T2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKICAgICByZXR1cm4g
anNOdWxsKCk7CiB9CiAKLXZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKQogewotICAgIGlmIChzeW1ib2xUYWJsZVB1dChwcm9wZXJ0eU5hbWUsIHZhbHVlKSkK
KyAgICBpZiAoc3ltYm9sVGFibGVQdXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0V2l0aEF0dHJp
YnV0ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgaWYgKHN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcykpCisgICAg
aWYgKHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcAppbmRleCA4MWQwNWJhMmUxMTQ0NGFkOGU1NzAyYWM1
MzIzZjc5M2NlNjExZWNlLi5hYmU5YmJiYzJmNWQ2Mjk1M2ZlNTljNDE3YjM2YzcyOWVhYTgyYTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRh
YmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZQogewogICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0
eU5hbWUuaW1wbCgpKTsKICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7Ci0gICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihyZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmpzVmFsdWUo
KSwgZW50cnkuZ2V0QXR0cmlidXRlcygpIHwgRG9udERlbGV0ZSk7CisgICAgICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcihyZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpLCBlbnRy
eS5nZXRBdHRyaWJ1dGVzKCkgfCBEb250RGVsZXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAppbmRleCBhZWM4M2ExMjVmYzg2NmQ4MjY0NTMxYTYzNGYw
YmYxNjk4ZmU5ZjNmLi5mMmYxOTUzNjM4NTM0MmZhNmVlMzA0NWI0YjY0ZTAzN2YzNjQxZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWlj
U2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdCA9IDA7CiAKLSAgICAgICAg
UmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3Rl
cnNbaW5kZXhdOyB9CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgcmVnaXN0ZXJBdChp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lzdGVyc1tpbmRleF07IH0KIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICAgewpAQCAtNjksMTQgKzY5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdHJ1Y3QgSlNWYXJpYWJsZU9iamVjdERhdGEgewogICAgICAgICAgICAgSlNWYXJp
YWJsZU9iamVjdERhdGEoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBSZWdpc3RlciogcmVnaXN0
ZXJzKQogICAgICAgICAgICAgICAgIDogc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCi0gICAgICAg
ICAgICAgICAgLCByZWdpc3RlcnMocmVnaXN0ZXJzKQorICAgICAgICAgICAgICAgICwgcmVnaXN0
ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJzKSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGUpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGU7IC8vIE1h
cHMgbmFtZSAtPiBvZmZzZXQgZnJvbSAiciIgaW4gcmVnaXN0ZXIgZmlsZS4KLSAgICAgICAgICAg
IFJlZ2lzdGVyKiByZWdpc3RlcnM7IC8vICJyIiBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KLSAgICAg
ICAgICAgIE93bkFycmF5UHRyPFJlZ2lzdGVyPiByZWdpc3RlckFycmF5OyAvLyBJbmRlcGVuZGVu
dCBjb3B5IG9mIHJlZ2lzdGVycywgdXNlZCB3aGVuIGEgdmFyaWFibGUgb2JqZWN0IGNvcGllcyBp
dHMgcmVnaXN0ZXJzIG91dCBvZiB0aGUgcmVnaXN0ZXIgZmlsZS4KKyAgICAgICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzOyAvLyAiciIgaW4gdGhlIHJlZ2lzdGVyIGZpbGUu
CisgICAgICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3Rl
ckFycmF5OyAvLyBJbmRlcGVuZGVudCBjb3B5IG9mIHJlZ2lzdGVycywgdXNlZCB3aGVuIGEgdmFy
aWFibGUgb2JqZWN0IGNvcGllcyBpdHMgcmVnaXN0ZXJzIG91dCBvZiB0aGUgcmVnaXN0ZXIgZmls
ZS4KIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgSlNWYXJpYWJsZU9iamVjdERhdGEo
Y29uc3QgSlNWYXJpYWJsZU9iamVjdERhdGEmKTsKQEAgLTg5LDE0ICs4OSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGFzc093bkFycmF5UHRy
PFJlZ2lzdGVyPiBjb3B5UmVnaXN0ZXJBcnJheShSZWdpc3Rlciogc3JjLCBzaXplX3QgY291bnQp
OwotICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhSZWdpc3RlciogcmVnaXN0ZXJzLCBQYXNzT3du
QXJyYXlQdHI8UmVnaXN0ZXI+IHJlZ2lzdGVyQXJyYXkpOworICAgICAgICBQYXNzT3duQXJyYXlQ
dHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRh
JiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCk7CisgICAgICAgIHZv
aWQgc2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3du
QXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSk7CiAKICAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFibGUpOwotICAgICAgICBib29s
IHN5bWJvbFRhYmxlUHV0KGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKLSAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSk7CisgICAgICAgIGJvb2wgc3lt
Ym9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgSlNWYXJpYWJsZU9i
amVjdERhdGEqIGQ7CiAgICAgfTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmlu
bGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgaWYgKCFlbnRyeS5pc051bGwo
KSkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShyZWdpc3RlckF0KGVudHJ5LmdldEluZGV4
KCkpLmpzVmFsdWUoKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHJlZ2lzdGVyQXQoZW50
cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDE0ICsxMTUsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFi
bGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlmICghZW50cnku
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUocmVnaXN0ZXJBdChlbnRyeS5n
ZXRJbmRleCgpKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShyZWdpc3Rl
ckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKICAgICAgICAgICAgIHNsb3RJc1dyaXRlYWJs
ZSA9ICFlbnRyeS5pc1JlYWRPbmx5KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNW
YXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5
bWJvbFRhYmxlUHV0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFw
OjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsK
IApAQCAtMTMxLDExICsxMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKSA9IHZhbHVl
OworICAgICAgICByZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCB0
aGlzLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlubGluZSBi
b29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQorICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09
IEhlYXA6OmhlYXAodGhpcykpOwogCkBAIC0xNDUsMjAgKzE0NSwyMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAg
ICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOwotICAgICAgICByZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpID0gdmFs
dWU7CisgICAgICAgIHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEs
IHRoaXMsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5l
IFBhc3NPd25BcnJheVB0cjxSZWdpc3Rlcj4gSlNWYXJpYWJsZU9iamVjdDo6Y29weVJlZ2lzdGVy
QXJyYXkoUmVnaXN0ZXIqIHNyYywgc2l6ZV90IGNvdW50KQorICAgIGlubGluZSBQYXNzT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gSlNWYXJpYWJsZU9iamVjdDo6Y29weVJlZ2lz
dGVyQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHNyYywgc2l6ZV90IGNvdW50KQogICAgIHsKLSAgICAgICAgT3duQXJyYXlQdHI8UmVnaXN0ZXI+
IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBSZWdpc3Rlcltjb3VudF0pOwotICAg
ICAgICBtZW1jcHkocmVnaXN0ZXJBcnJheS5nZXQoKSwgc3JjLCBjb3VudCAqIHNpemVvZihSZWdp
c3RlcikpOworICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdp
c3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W2NvdW50
XSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAg
ICAgIHJlZ2lzdGVyQXJyYXlbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHNyY1tpXS5nZXQoKSk7
CiAKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpOwogICAgIH0KIAotICAg
IGlubGluZSB2b2lkIEpTVmFyaWFibGVPYmplY3Q6OnNldFJlZ2lzdGVycyhSZWdpc3RlciogcmVn
aXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8UmVnaXN0ZXI+IHJlZ2lzdGVyQXJyYXkpCisgICAgaW5s
aW5lIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSkKICAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigqcmVn
aXN0ZXJzKSA9PSBzaXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9Xcml0ZUJhcnJpZXJfbXVzdF9i
ZV9pZGVudGljYWwpOwogICAgICAgICBBU1NFUlQocmVnaXN0ZXJBcnJheSAhPSBkLT5yZWdpc3Rl
ckFycmF5KTsKICAgICAgICAgZC0+cmVnaXN0ZXJBcnJheSA9IHJlZ2lzdGVyQXJyYXk7CiAgICAg
ICAgIGQtPnJlZ2lzdGVycyA9IHJlZ2lzdGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZDk3OGRiNDBlY2Ez
NmIwODdhMzg4OWU1YzNkMWNmMDA0ZGFiMGY0Li40OGEzMWZlNzc4ZWIyODhmODMwMzEyNWViNzk0
M2I2YmMxZDZmY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDMgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0IG5lZWRzIHRvIHVzZSBXcml0
ZUJhcnJpZXIgZm9yIHN5bWJvbHRhYmxlIHByb3BlcnR5IHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1Njk4CisKKyAgICAgICAgVXBkYXRl
IHRvIHBhc3MgSlNHbG9iYWxEYXRhIGZvciB0aGUgc3ltYm9sIHRhYmxlIHdyaXRlIHVzZWQKKyAg
ICAgICAgdG8gc2V0IHRoZSBkb2N1bWVudCBwcm9wZXJ0eS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OnVwZGF0ZURvY3VtZW50KToKKwogMjAxMS0wMy0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGNlNWI3
YmNjNDE4MTQxYzQwMDdkNjVhMzU0MTRiNTg0Y2RjNjI2ZTkuLmRmMDFmNzcyMDlkMmI1ZDdlZDVh
M2RiN2NkYmNjYjRhZjVhODVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIEpTRE9NV2luZG93QmFz
ZTo6dXBkYXRlRG9jdW1lbnQoKQogewogICAgIEFTU0VSVChkKCktPmltcGwtPmRvY3VtZW50KCkp
OwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKElkZW50aWZpZXIoZXhlYywgImRvY3VtZW50IiksIHRvSlMoZXhlYywg
dGhpcywgZCgpLT5pbXBsLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCAiZG9jdW1lbnQiKSwgdG9KUyhleGVjLCB0aGlzLCBkKCktPmltcGwtPmRvY3Vt
ZW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAo=
</data>
<flag name="review"
          id="76612"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>