<?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>95739</bug_id>
          
          <creation_ts>2012-09-04 05:44:05 -0700</creation_ts>
          <short_desc>Web Inspector: NMI: replace ObjectType enum with static const char* string identifiers.</short_desc>
          <delta_ts>2012-09-05 11:25:42 -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>Web Inspector (Deprecated)</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711021</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-04 05:44:05 -0700</bug_when>
    <thetext>When we go deeper into different parts of browser like skia, chromium itself etc.
we can&apos;t use a single enum for all reported object types.
We need a code that allows us to register object types on the fly.
On the next step we will make string identifiers hierarchical like DOM, DOM.Bindings, DOM.Other etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711031</commentid>
    <comment_count>1</comment_count>
      <attachid>162024</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-04 05:51:45 -0700</bug_when>
    <thetext>Created attachment 162024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711050</commentid>
    <comment_count>2</comment_count>
      <attachid>162024</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-04 06:23:59 -0700</bug_when>
    <thetext>Comment on attachment 162024
Patch

Attachment 162024 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13743484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711081</commentid>
    <comment_count>3</comment_count>
      <attachid>162024</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-04 06:53:36 -0700</bug_when>
    <thetext>Comment on attachment 162024
Patch

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

&gt; Source/WebCore/inspector/MemoryInstrumentationImpl.cpp:40
&gt; +Vector&lt;String&gt; WebCoreMemoryTypesImpl::registerObjectTypes(unsigned firstFreeId)

I&apos;d rather use strings instead of numbers for identifying object type. We could switch to the scheme with the type registration later if there is a noticeable performance impact. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711092</commentid>
    <comment_count>4</comment_count>
      <attachid>162024</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-04 07:11:53 -0700</bug_when>
    <thetext>Comment on attachment 162024
Patch

Attachment 162024 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13757216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711113</commentid>
    <comment_count>5</comment_count>
      <attachid>162024</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-04 07:43:12 -0700</bug_when>
    <thetext>Comment on attachment 162024
Patch

Attachment 162024 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13757228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711114</commentid>
    <comment_count>6</comment_count>
      <attachid>162024</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-04 07:45:58 -0700</bug_when>
    <thetext>Comment on attachment 162024
Patch

Attachment 162024 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13745476</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711127</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-04 08:12:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162024 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162024&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/MemoryInstrumentationImpl.cpp:40
&gt; &gt; +Vector&lt;String&gt; WebCoreMemoryTypesImpl::registerObjectTypes(unsigned firstFreeId)
&gt; 
&gt; I&apos;d rather use strings instead of numbers for identifying object type. We could switch to the scheme with the type registration later if there is a noticeable performance impact. WDYT?

Looks like the version which uses char* as ObjectType is 30% slower than current implementation. 990ms vs 750ms on 10m insertions with disabled visited check.
I think we could use this approach as the solution because we will have simpler business logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711133</commentid>
    <comment_count>8</comment_count>
      <attachid>162046</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-04 08:21:38 -0700</bug_when>
    <thetext>Created attachment 162046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711848</commentid>
    <comment_count>9</comment_count>
      <attachid>162046</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-05 02:00:30 -0700</bug_when>
    <thetext>Comment on attachment 162046
Patch

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:53
&gt; +    static const char* Other;

const char* -&gt; ObjectType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711857</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-05 02:19:28 -0700</bug_when>
    <thetext>Committed r127571: &lt;http://trac.webkit.org/changeset/127571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712359</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-05 11:25:42 -0700</bug_when>
    <thetext>The &quot;speedTest&quot; unit test takes over 20 seconds to run on my extremely fast desktop.  That&apos;s waaaaaaaaaaaaaaaaay too long for a unit test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162024</attachid>
            <date>2012-09-04 05:51:45 -0700</date>
            <delta_ts>2012-09-04 08:21:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95739-20120904165127.patch</filename>
            <type>text/plain</type>
            <size>17522</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA3MTllYTZlZjVjMTNi
MTEwNzcxMGQwMzM0MTMzNDg1NzA3ZmIxNS4uZDdhOWI0ZmMxNDA0MDE1YjRiMGZkNjFmN2VhMjZi
YjI0NTZlMDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGltcGxlbWVudCBpbml0aWFsIHZlcnNpb24gZm9yIHJ1bi10aW1lIE9iamVjdFR5
cGUgbmFtZXMgcmVnaXN0cmF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIHdlIGdvIGRlZXBlciBpbnRvIGRpZmZlcmVudCBwYXJ0cyBvZiBi
cm93c2VyIGxpa2Ugc2tpYSwgY2hyb21pdW0gaXRzZWxmIGV0YworICAgICAgICB3ZSBjYW4ndCB1
c2UgYSBzaW5nbGUgZW51bSBmb3IgYWxsIHRoZSByZXBvcnRlZCBvYmplY3QgdHlwZXMuCisgICAg
ICAgIFdlIG5lZWQgYSBjb2RlIHRoYXQgYWxsb3dzIHVzIHRvIHJlZ2lzdGVyIG9iamVjdCB0eXBl
cyBvbiB0aGUgZmx5LgorICAgICAgICBPbiB0aGUgbmV4dCBzdGVwcyB3ZSB3aWxsIG1ha2Ugc3Ry
aW5nIGlkZW50aWZpZXJzIGhpZXJhcmNoaWNhbCBsaWtlIERPTSwgRE9NLkJpbmRpbmdzLCBET00u
T3RoZXIgZXRjLgorICAgICAgICBBbmQgZWxpbWluYXRlIGVudW0gaW4gTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLgorCisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlTWVtb3J5VHlwZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJs
b2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RE
b21UcmVlSW5mbyk6CisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU1lbW9yeVR5cGVzSW1wbDo6cmVnaXN0
ZXJPYmplY3RUeXBlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGw6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6YnVpbGRPYmplY3RGb3Ip
OgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmVNZW1vcnlUeXBlc0ltcGwpOgorICAgICAg
ICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsOjp0b3RhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uSW1wbDo6b2JqZWN0VHlwZU5hbWUpOgorCiAyMDEyLTA5LTA0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQnVnZml4OiB3cm9uZyB0ZXh0dXJlIGJpbmRpbmcgdGFyZ2V0IGluIHJlcGxh
eSBmb3IgM0QgdGV4dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggZjkyNGM4NzZkYzIzNWQxMTZhZDFhOGUyMTYzMjBkYjgxNWNmMjk4Mi4u
MWY4MTFiNTc5ZjEwZTgwYWMxMGQxOGM1ZGZhNjQ0ZjdlMWJlYWQ1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordW5zaWduZWQgV2ViQ29yZU1lbW9yeVR5cGVzOjpET01U
cmVlT3RoZXIgPSAwOwordW5zaWduZWQgV2ViQ29yZU1lbW9yeVR5cGVzOjpET01UcmVlRE9NID0g
MDsKK3Vuc2lnbmVkIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NVHJlZUNTUyA9IDA7Cit1bnNpZ25l
ZCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTVRyZWVCaW5kaW5nID0gMDsKK3Vuc2lnbmVkIFdlYkNv
cmVNZW1vcnlUeXBlczo6RE9NVHJlZUxvYWRlciA9IDA7Cit1bnNpZ25lZCBXZWJDb3JlTWVtb3J5
VHlwZXM6Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyA9IDA7Cit1bnNpZ25lZCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNhY2hlZFJlc291cmNlID0gMDsKK3Vuc2lnbmVkIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q2FjaGVkQ3NzU3R5bGVTaGVldHMgPSAwOwordW5zaWduZWQgV2ViQ29yZU1lbW9yeVR5cGVzOjpD
YWNoZWRGb250cyA9IDA7Cit1bnNpZ25lZCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZEltYWdl
cyA9IDA7Cit1bnNpZ25lZCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFNjcmlwdHMgPSAwOwor
dW5zaWduZWQgV2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRTVkdHcmFwaGljcyA9IDA7Cit1bnNp
Z25lZCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFNoYWRlcnMgPSAwOwordW5zaWduZWQgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpDYWNoZWRYU0xUID0gMDsKKwogdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgU3RyaW5nKiBjb25zdCYgc3Ry
aW5nLCBPYmplY3RUeXBlIG9iamVjdFR5cGUsIE93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAg
ICBpZiAoIXN0cmluZyB8fCB2aXNpdGVkKHN0cmluZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMzVjYjZjYjdhZjA1YzNlMTgwYmVkNjkzN2VjMjAw
OGYyZWQ3MTUzMy4uYzBjYzZkZmQ3OTI3YzkyYjQ4MDBlMjYwYTEyOTllZGZjMThlMTQwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtNDQsNiArNDQs
MjQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWY7CiBjbGFzcyBLVVJMOwog
Y2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIAorY2xhc3MgV2ViQ29yZU1lbW9yeVR5cGVzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgdW5zaWduZWQgRE9NVHJlZU90aGVyOworICAgIHN0YXRpYyB1bnNp
Z25lZCBET01UcmVlRE9NOworICAgIHN0YXRpYyB1bnNpZ25lZCBET01UcmVlQ1NTOworICAgIHN0
YXRpYyB1bnNpZ25lZCBET01UcmVlQmluZGluZzsKKyAgICBzdGF0aWMgdW5zaWduZWQgRE9NVHJl
ZUxvYWRlcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOworICAg
IHN0YXRpYyB1bnNpZ25lZCBDYWNoZWRSZXNvdXJjZTsKKyAgICBzdGF0aWMgdW5zaWduZWQgQ2Fj
aGVkQ3NzU3R5bGVTaGVldHM7CisgICAgc3RhdGljIHVuc2lnbmVkIENhY2hlZEZvbnRzOworICAg
IHN0YXRpYyB1bnNpZ25lZCBDYWNoZWRJbWFnZXM7CisgICAgc3RhdGljIHVuc2lnbmVkIENhY2hl
ZFNjcmlwdHM7CisgICAgc3RhdGljIHVuc2lnbmVkIENhY2hlZFNWR0dyYXBoaWNzOworICAgIHN0
YXRpYyB1bnNpZ25lZCBDYWNoZWRTaGFkZXJzOworICAgIHN0YXRpYyB1bnNpZ25lZCBDYWNoZWRY
U0xUOworfTsKKwogY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5NZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IGE1YmQyMTA2MWUyNzgy
M2ZiMGRkZjA0MmEwYzYxOTFiODc3M2RlZGEuLmNjY2Q2NzMyYzgxMDBhMWU1MTQ2OWI1NDk2YTVi
MDk3NzM0MWQwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcApAQCAtNzMsNiArNzMsNyBAQCB0eXBlZGVmIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgTWVtb3J5QmxvY2tOYW1lIHsKKwogc3RhdGljIGNv
bnN0IGNoYXIganNIZWFwQWxsb2NhdGVkW10gPSAiSlNIZWFwQWxsb2NhdGVkIjsKIHN0YXRpYyBj
b25zdCBjaGFyIGpzSGVhcFVzZWRbXSA9ICJKU0hlYXBVc2VkIjsKIHN0YXRpYyBjb25zdCBjaGFy
IGpzRXh0ZXJuYWxSZXNvdXJjZXNbXSA9ICJKU0V4dGVybmFsUmVzb3VyY2VzIjsKQEAgLTg0LDI4
ICs4NSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciBpbnNwZWN0b3JKU0hlYXBEYXRhW10gPSAiSW5z
cGVjdG9ySlNIZWFwRGF0YSI7CiBzdGF0aWMgY29uc3QgY2hhciBwcm9jZXNzUHJpdmF0ZU1lbW9y
eVtdID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKIAogc3RhdGljIGNvbnN0IGNoYXIgbWVtb3J5
Q2FjaGVbXSA9ICJNZW1vcnlDYWNoZSI7Ci1zdGF0aWMgY29uc3QgY2hhciBtZW1vcnlDYWNoZVN0
cnVjdHVyZXNbXSA9ICJNZW1vcnlDYWNoZVN0cnVjdHVyZXMiOwotc3RhdGljIGNvbnN0IGNoYXIg
Y2FjaGVkUmVzb3VyY2VbXSA9ICJDYWNoZWRSZXNvdXJjZSI7Ci1zdGF0aWMgY29uc3QgY2hhciBj
YWNoZWRSZXNvdXJjZUltYWdlW10gPSAiQ2FjaGVkSW1hZ2VzIjsKLXN0YXRpYyBjb25zdCBjaGFy
IGNhY2hlZFJlc291cmNlQ1NTW10gPSAiQ2FjaGVkQ3NzU3R5bGVTaGVldHMiOwotc3RhdGljIGNv
bnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VTY3JpcHRbXSA9ICJDYWNoZWRTY3JpcHRzIjsKLXN0YXRp
YyBjb25zdCBjaGFyIGNhY2hlZFJlc291cmNlWFNMW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMi
Owotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VGb250W10gPSAiQ2FjaGVkRm9udHMi
Owotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VTVkdbXSA9ICJDYWNoZWRTVkdHcmFw
aGljcyI7Ci1zdGF0aWMgY29uc3QgY2hhciBjYWNoZWRSZXNvdXJjZVNoYWRlcltdID0gIkNhY2hl
ZFNoYWRlcnMiOwotc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkUmVzb3VyY2VYU0xUW10gPSAiQ2Fj
aGVkU2hhZGVyc1hTTFQiOwogCiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNlZFtdID0g
IlJlbmRlclRyZWVVc2VkIjsKIHN0YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxvY2F0ZWRb
XSA9ICJSZW5kZXJUcmVlQWxsb2NhdGVkIjsKIAogc3RhdGljIGNvbnN0IGNoYXIgZG9tW10gPSAi
RE9NIjsKLXN0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVPdGhlcltdID0gIkRPTVRyZWVPdGhlciI7
Ci1zdGF0aWMgY29uc3QgY2hhciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBkb21UcmVlQ1NTW10gPSAiRE9NVHJlZUNTUyI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBkb21UcmVlQmluZGluZ1tdID0gIkRPTVRyZWVCaW5kaW5nIjsKLXN0YXRpYyBjb25zdCBjaGFy
IGRvbVRyZWVMb2FkZXJbXSA9ICJET01UcmVlTG9hZGVyIjsKIAogc3RhdGljIGNvbnN0IGNoYXIg
ZG9tU3RvcmFnZUNhY2hlW10gPSAiRE9NU3RvcmFnZUNhY2hlIjsKKwogfQogCiBuYW1lc3BhY2Ug
ewpAQCAtNDgwLDU0ICs0NjcsMTcgQEAgcHVibGljOgogICAgICAgICBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUNhY2hlKCkpOwogICAgIH0KIAotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJ1aWxkT2JqZWN0Rm9yTWVtb3J5Q2FjaGUoKSBj
b25zdAorICAgIHZvaWQgZHVtcFN0YXRpc3RpY3MoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiogY2hpbGRyZW4sIEluc3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JE
YXRhKQogICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CisgICAgICAgIGNoaWxk
cmVuLT5hZGRJdGVtKG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmJ1aWxkT2JqZWN0Rm9yKE1lbW9y
eUJsb2NrTmFtZTo6ZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlcykpOwog
CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVF
bnRyeSA9PSBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCArIDEsIG9i
amVjdF90eXBlX2VudW1fd2FzX2NoYW5nZWRfcGxlYXNlX2ZpeF90aGVfaW1wbGVtZW50YXRpb24p
OwotICAgICAgICBmb3IgKGludCBpID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNo
ZVN0cnVjdHVyZXM7IGkgPCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okxhc3RUeXBlRW50cnk7ICsr
aSkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3Rh
bFNpemUoc3RhdGljX2Nhc3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7
Ci0KLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46
OmNyZWF0ZSgpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVt
b3J5Q2FjaGVTdHJ1Y3R1cmVzKSwgTWVtb3J5QmxvY2tOYW1lOjptZW1vcnlDYWNoZVN0cnVjdHVy
ZXMpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2UpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFs
U2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTKSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRSZXNvdXJjZUNTUyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZUZvbnQpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZFJlc291cmNlRm9udCk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgp
LCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDYWNoZWRSZXNvdXJjZUltYWdlKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUlt
YWdlKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlU2NyaXB0KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNjcmlwdCk7Ci0g
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNW
RyksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VTVkcpOwotICAgICAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxT
aXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIpLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZFJlc291cmNlU2hhZGVyKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlWFNMVCksIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkUmVzb3VyY2VYU0xUKTsKLQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGJsb2NrID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5
QmxvY2tOYW1lOjptZW1vcnlDYWNoZSk7Ci0gICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6
ZSk7Ci0gICAgICAgIGJsb2NrLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwotICAg
ICAgICByZXR1cm4gYmxvY2sucmVsZWFzZSgpOwotICAgIH0KKyAgICAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0obV9tZW1vcnlJbnN0cnVtZW50YXRpb24uYnVpbGRPYmplY3RGb3IoTWVtb3J5QmxvY2tO
YW1lOjptZW1vcnlDYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlD
YWNoZVN0cnVjdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TGFzdFR5cGVF
bnRyeSkpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmpl
Y3RGb3JET00oKSBjb25zdAotICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Ci0g
ICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyOyBpIDwgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXM7ICsraSkKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSArPSBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoc3RhdGlj
X2Nhc3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7Ci0KLSAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGls
ZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgp
OwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpLCBN
ZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVPdGhlcik7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGRvbUNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOwot
ICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJbnN0
cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKSwgTWVtb3J5
QmxvY2tOYW1lOjpkb21UcmVlQ1NTKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hp
bGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0
cnVtZW50YXRpb246OkJpbmRpbmcpLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVCaW5kaW5nKTsK
LSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkxvYWRlciksIE1l
bW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUxvYWRlcik7Ci0KLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFt
ZShNZW1vcnlCbG9ja05hbWU6OmRvbSk7Ci0gICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUp
OwotICAgICAgICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7Ci0gICAg
ICAgIHJldHVybiBkb20ucmVsZWFzZSgpOwotICAgIH0KLQotICAgIHZvaWQgZHVtcFN0YXRpc3Rp
Y3MoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogY2hpbGRyZW4sIElu
c3BlY3RvckRhdGFDb3VudGVyKiBpbnNwZWN0b3JEYXRhKQotICAgIHsKLSAgICAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JNZW1vcnlDYWNoZSgpKTsKLSAgICAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JET00oKSk7CiAgICAgICAgIGluc3BlY3RvckRhdGEt
PmFkZENvbXBvbmVudChNZW1vcnlCbG9ja05hbWU6Omluc3BlY3RvckRPTURhdGEsIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLnNlbGZTaXplKCkpOwogICAgIH0KIApAQCAtNTQwLDcgKzQ5MCw5IEBA
IHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIGNvbGxlY3REb21UcmVlSW5mbyhQYWdlKiBwYWdlLCBW
aXNpdGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMsIFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4qIGNoaWxkcmVuLCBJbnNwZWN0b3JEYXRhQ291bnRlciogaW5zcGVjdG9y
RGF0YSkKIHsKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1lbW9yeUluc3RydW1lbnRh
dGlvbih2aXNpdGVkT2JqZWN0cyk7CisgICAgV2ViQ29yZU1lbW9yeVR5cGVzSW1wbCB3ZWJDb3Jl
TWVtb3J5VHlwZXM7CisgICAgVmVjdG9yPFN0cmluZz4gb2JqZWN0VHlwZXNOYW1lcyA9IHdlYkNv
cmVNZW1vcnlUeXBlcy5yZWdpc3Rlck9iamVjdFR5cGVzKDApOworICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKHZpc2l0ZWRPYmplY3RzLCBvYmplY3RU
eXBlc05hbWVzKTsKICAgICBET01UcmVlc0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSwg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKIAogICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5vZGVX
cmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKaW5kZXggMzQ3ZjcyZDVmOGEw
YzhlYTI1NmQ3MGViZmJkOTYwMTcxZGViMzlkYy4uOGViMDU1YTkyYjdhMDlkODdlNzI2MjA0ZmY2
MGZkMzNkOWU5ZGNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9y
eUluc3RydW1lbnRhdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9N
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApAQCAtMzMsMTQgKzMzLDUzIEBACiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbChWaXNp
dGVkT2JqZWN0cyYgdmlzaXRlZE9iamVjdHMpCi0gICAgOiBtX3Zpc2l0ZWRPYmplY3RzKHZpc2l0
ZWRPYmplY3RzKQorVmVjdG9yPFN0cmluZz4gV2ViQ29yZU1lbW9yeVR5cGVzSW1wbDo6cmVnaXN0
ZXJPYmplY3RUeXBlcyh1bnNpZ25lZCBmaXJzdEZyZWVJZCkKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiBuYW1lczsKKworCisgICAgLy8gRklYTUU6IEl0IGhhcyB0byBiZSBpbiBzeW5jIHdpdGggTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIGVudW0gYXQgdGhlIG1vbWVudC4KKyAgICBE
T01UcmVlT3RoZXIgPSBmaXJzdEZyZWVJZCsrOworICAgIG5hbWVzLmFwcGVuZCgiRE9NVHJlZU90
aGVyIik7CisgICAgRE9NVHJlZURPTSA9IGZpcnN0RnJlZUlkKys7CisgICAgbmFtZXMuYXBwZW5k
KCJET01UcmVlRE9NIik7CisgICAgRE9NVHJlZUNTUyA9IGZpcnN0RnJlZUlkKys7CisgICAgbmFt
ZXMuYXBwZW5kKCJET01UcmVlQ1NTIik7CisgICAgRE9NVHJlZUJpbmRpbmcgPSBmaXJzdEZyZWVJ
ZCsrOworICAgIG5hbWVzLmFwcGVuZCgiRE9NVHJlZUJpbmRpbmciKTsKKyAgICBET01UcmVlTG9h
ZGVyID0gZmlyc3RGcmVlSWQrKzsKKyAgICBuYW1lcy5hcHBlbmQoIkRPTVRyZWVMb2FkZXIiKTsK
KyAgICBNZW1vcnlDYWNoZVN0cnVjdHVyZXMgPSBmaXJzdEZyZWVJZCsrOworICAgIG5hbWVzLmFw
cGVuZCgiTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzIik7CisgICAgQ2FjaGVkUmVzb3VyY2UgPSBmaXJz
dEZyZWVJZCsrOworICAgIG5hbWVzLmFwcGVuZCgiQ2FjaGVkUmVzb3VyY2UiKTsKKyAgICBDYWNo
ZWRDc3NTdHlsZVNoZWV0cyA9IGZpcnN0RnJlZUlkKys7CisgICAgbmFtZXMuYXBwZW5kKCJDYWNo
ZWRDc3NTdHlsZVNoZWV0cyIpOworICAgIENhY2hlZEZvbnRzID0gZmlyc3RGcmVlSWQrKzsKKyAg
ICBuYW1lcy5hcHBlbmQoIkNhY2hlZEZvbnRzIik7CisgICAgQ2FjaGVkSW1hZ2VzID0gZmlyc3RG
cmVlSWQrKzsKKyAgICBuYW1lcy5hcHBlbmQoIkNhY2hlZEltYWdlcyIpOworICAgIENhY2hlZFNj
cmlwdHMgPSBmaXJzdEZyZWVJZCsrOworICAgIG5hbWVzLmFwcGVuZCgiQ2FjaGVkU2NyaXB0cyIp
OworICAgIENhY2hlZFNWR0dyYXBoaWNzID0gZmlyc3RGcmVlSWQrKzsKKyAgICBuYW1lcy5hcHBl
bmQoIkNhY2hlZFNWR0dyYXBoaWNzIik7CisgICAgQ2FjaGVkU2hhZGVycyA9IGZpcnN0RnJlZUlk
Kys7CisgICAgbmFtZXMuYXBwZW5kKCJDYWNoZWRTaGFkZXJzIik7CisgICAgQ2FjaGVkWFNMVCA9
IGZpcnN0RnJlZUlkKys7CisgICAgbmFtZXMuYXBwZW5kKCJDYWNoZWRYU0xUIik7CisKKyAgICBy
ZXR1cm4gbmFtZXM7Cit9CisKK01lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwoVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3RzLCBWZWN0b3I8U3Ry
aW5nPiYgb2JqZWN0VHlwZXNOYW1lcykKKyAgICA6IG1fdG90YWxTaXplcyhvYmplY3RUeXBlc05h
bWVzLnNpemUoKSwgMCkKKyAgICAsIG1fdmlzaXRlZE9iamVjdHModmlzaXRlZE9iamVjdHMpCisg
ICAgLCBtX29iamVjdFR5cGVzTmFtZXMob2JqZWN0VHlwZXNOYW1lcykKIHsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKLSAgICAgICAgbV90b3RhbFNpemVzW2ld
ID0gMDsKIH0KIAogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCkBAIC03Myw2ICsxMTIsMjYgQEAgc2l6ZV90IE1lbW9y
eUluc3RydW1lbnRhdGlvbkltcGw6OnNlbGZTaXplKCkgY29uc3QKICAgICByZXR1cm4gY2FsY3Vs
YXRlQ29udGFpbmVyU2l6ZShtX3Zpc2l0ZWRPYmplY3RzKSArIGNhbGN1bGF0ZUNvbnRhaW5lclNp
emUobV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzKTsKIH0KIAorUGFzc1JlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmJ1aWxkT2JqZWN0
Rm9yKGNvbnN0IGNoYXIqIGJsb2NrTmFtZSwgdW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkg
Y29uc3QKK3sKKyAgICBzaXplX3QgdG90YWxCbG9ja1NpemUgPSAwOworICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IGJlZ2luOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUgPSBzdGF0aWNfY2FzdDxNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFs
U2l6ZShvYmplY3RUeXBlKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBy
ZXN1bHQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShvYmplY3RUeXBl
TmFtZShvYmplY3RUeXBlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaXpl
KHNpemUpOworICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZXN1bHQpOworICAgICAgICB0b3Rh
bEJsb2NrU2l6ZSArPSBzaXplOworICAgIH0KKworICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShibG9j
a05hbWUpOworICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsQmxvY2tTaXplKTsKKyAgICBibG9jay0+
c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gYmxvY2sucmVsZWFz
ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmgKaW5kZXggNzYyZjE5MGEyYjg4ZWJlYWIwMjBhMDU2MjkyYWQ2OTE1Njg0
Yzg0MS4uMmFkZTI4N2VhNTQ2M2VjOGFjYzFjMjRkZDE0NzVlNDlhN2U2ZWE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CkBAIC0zMSwyNiArMzEsMzAgQEAKICNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbF9o
CiAjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGxfaAogCisjaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKIAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVk
ZWYgSGFzaFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7CiAKKy8vIFVzZSBhIHR5cGUg
YWxpYXMgaW5zdGVhZCBvZiAndXNpbmcnIGhlcmUgd2hpY2ggd291bGQgY2F1c2UgYSBjb25mbGlj
dCBvbiBNYWMuCit0eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJs
b2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOworCitjbGFzcyBXZWJDb3JlTWVtb3J5VHlwZXNJbXBs
IDogcHVibGljIFdlYkNvcmVNZW1vcnlUeXBlcyB7CitwdWJsaWM6CisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVnaXN0ZXJPYmplY3RUeXBlcyh1bnNpZ25lZCBmaXJzdEZyZWVJZCk7Cit9OworCiBjbGFz
cyBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIDogcHVibGljIE1lbW9yeUluc3RydW1lbnRhdGlv
biB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbChWaXNp
dGVkT2JqZWN0cyYpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwoVmlzaXRlZE9iamVj
dHMmLCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0VHlwZXNOYW1lcyk7CiAKICAgICBzaXplX3Qgc2Vs
ZlNpemUoKSBjb25zdDsKLSAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlw
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0
VHlwZSA8IExhc3RUeXBlRW50cnkpOwotICAgICAgICByZXR1cm4gbV90b3RhbFNpemVzW29iamVj
dFR5cGVdOwotICAgIH0KLQogICAgIHNpemVfdCByZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpIGNv
bnN0CiAgICAgewogICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CkBAIC01OSwxNSArNjMsMjkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9iamVjdEZvcihjb25zdCBjaGFyKiBibG9ja05hbWUs
IHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRl
ZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEZWZlcnJl
ZEluc3RydW1lbnRlZFBvaW50ZXJzKCkgT1ZFUlJJREU7CiAKLSAgICBzaXplX3QgbV90b3RhbFNp
emVzW0xhc3RUeXBlRW50cnldOworICAgIHNpemVfdCB0b3RhbFNpemUoT2JqZWN0VHlwZSBvYmpl
Y3RUeXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBv
YmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CisgICAgICAgIHJldHVybiBtX3RvdGFsU2l6ZXNb
b2JqZWN0VHlwZV07CisgICAgfQorCisgICAgU3RyaW5nJiBvYmplY3RUeXBlTmFtZShPYmplY3RU
eXBlIG9iamVjdFR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3RUeXBl
c05hbWVzW29iamVjdFR5cGVdOworICAgIH0KKworICAgIFZlY3RvcjxzaXplX3Q+IG1fdG90YWxT
aXplczsKICAgICBWaXNpdGVkT2JqZWN0cyYgbV92aXNpdGVkT2JqZWN0czsKICAgICBWZWN0b3I8
T3duUHRyPEluc3RydW1lbnRlZFBvaW50ZXJCYXNlPiA+IG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQ
b2ludGVyczsKKyAgICBWZWN0b3I8U3RyaW5nPiYgbV9vYmplY3RUeXBlc05hbWVzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162046</attachid>
            <date>2012-09-04 08:21:38 -0700</date>
            <delta_ts>2012-09-05 02:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95739-20120904192120.patch</filename>
            <type>text/plain</type>
            <size>16012</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA3MTllYTZlZjVjMTNi
MTEwNzcxMGQwMzM0MTMzNDg1NzA3ZmIxNS4uYzJiNGM5Y2Y3NmFmNjY0MjRlZmFkMjc2Y2EzMDdj
ZWJjMzQ5YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA5LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IHJlcGxhY2UgT2JqZWN0VHlwZSBlbnVtIHdpdGggc3RhdGljIGNvbnN0IGNoYXIq
IHN0cmluZyBpZGVudGlmaWVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiB3ZSBnbyBkZWVwZXIgaW50byBkaWZmZXJlbnQgcGFydHMgb2YgYnJv
d3NlciBsaWtlIHNraWEsIGNocm9taXVtIGl0c2VsZiBldGMuCisgICAgICAgIHdlIGNhbid0IHVz
ZSBhIHNpbmdsZSBlbnVtIGZvciBhbGwgcmVwb3J0ZWQgb2JqZWN0IHR5cGVzLgorICAgICAgICBU
aGUgY3VycmVudCBpZGVhIGlzIHRvIHVzZSBwbGFpbiBzaW1wbGUgc3RyaW5ncyBhcyBPYmplY3RU
eXBlIGlkZW50aWZpZXJzLgorICAgICAgICBJbiB0aGUgZnV0dXJlIHBhdGNoZXMgd2Ugd2lsbCBl
eHRyYWN0IHRoZXNlIGlkZW50aWZpZXJzIGludG8gc2VwYXJhdGUgY2xhc3Mgb3IgbmFtZXNwYWNl
CisgICAgICAgIGFuZCBhbmQgc3BsaXQgaXQgYmV0d2VlbiBjb21wb25lbnRzLgorCisgICAgICAg
ICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChNZW1vcnlJbnN0
cnVtZW50YXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpNZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bkltcGw6OmNvdW50T2JqZWN0U2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bkltcGw6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b25JbXBsOjpyZXBvcnRlZFNpemVGb3JBbGxUeXBlcyk6CisgICAgICAgIChNZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsKToKKwogMjAxMi0wOS0wNCAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbV2ViR0xdIEJ1Z2ZpeDogd3Jv
bmcgdGV4dHVyZSBiaW5kaW5nIHRhcmdldCBpbiByZXBsYXkgZm9yIDNEIHRleHR1cmVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1Yjg2ZmY0MmY1
NDg5MTZlYzkuLjMwZmIyMWRjZTBiODM2MDczMTdmOGU5NGE5ODA2ODRjOGRjMmY2ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDktMDQgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE5NSTogcmVwbGFjZSBPYmplY3RUeXBlIGVudW0gd2l0aCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nIGlkZW50aWZpZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU3MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIHdlIGdvIGRlZXBlciBpbnRvIGRpZmZlcmVudCBwYXJ0cyBvZiBicm93
c2VyIGxpa2Ugc2tpYSwgY2hyb21pdW0gaXRzZWxmIGV0Yy4KKyAgICAgICAgd2UgY2FuJ3QgdXNl
IGEgc2luZ2xlIGVudW0gZm9yIGFsbCByZXBvcnRlZCBvYmplY3QgdHlwZXMuCisgICAgICAgIFRo
ZSBjdXJyZW50IGlkZWEgaXMgdG8gdXNlIHBsYWluIHNpbXBsZSBzdHJpbmdzIGFzIE9iamVjdFR5
cGUgaWRlbnRpZmllcnMuCisgICAgICAgIEluIHRoZSBmdXR1cmUgcGF0Y2hlcyB3ZSB3aWxsIGV4
dHJhY3QgdGhlc2UgaWRlbnRpZmllcnMgaW50byBzZXBhcmF0ZSBjbGFzcyBvciBuYW1lc3BhY2UK
KyAgICAgICAgYW5kIGFuZCBzcGxpdCBpdCBiZXR3ZWVuIGNvbXBvbmVudHMuCisKKyAgICAgICAg
KiB0ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDktMDMgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBBTkRST0lEX0dEQlNFUlZFUiBk
ZWZpbml0aW9uIGZvciBBbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggZjkyNGM4NzZkYzIzNWQxMTZhZDFhOGUyMTYzMjBkYjgxNWNmMjk4Mi4u
NzkwYWNlNTY5NzBjZDVjMjg2ODU4YjdmZmQ2NzdmYTkxY2U0MGRmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgY2hhciogTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPdGhlciA9ICJPdGhlciI7Citjb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSA9ICJET00iOworY29uc3QgY2hhciogTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MgPSAiQ1NT
IjsKK2NvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyA9ICJCaW5kaW5n
IjsKK2NvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6TG9hZGVyID0gIkxvYWRlciI7
Citjb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJl
cyA9ICJNZW1vcnlDYWNoZVN0cnVjdHVyZXMiOworY29uc3QgY2hhciogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDYWNoZWRSZXNvdXJjZSA9ICJDYWNoZWRSZXNvdXJjZSI7Citjb25zdCBjaGFyKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlQ1NTID0gIkNhY2hlZFJlc291cmNl
Q1NTIjsKK2NvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VG
b250ID0gIkNhY2hlZFJlc291cmNlRm9udCI7Citjb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNhY2hlZFJlc291cmNlSW1hZ2UgPSAiQ2FjaGVkUmVzb3VyY2VJbWFnZSI7Citjb25z
dCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU2NyaXB0ID0gIkNh
Y2hlZFJlc291cmNlU2NyaXB0IjsKK2NvbnN0IGNoYXIqIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q2FjaGVkUmVzb3VyY2VTVkcgPSAiQ2FjaGVkUmVzb3VyY2VTVkciOworY29uc3QgY2hhciogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZVNoYWRlciA9ICJDYWNoZWRSZXNvdXJj
ZVNoYWRlciI7Citjb25zdCBjaGFyKiBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291
cmNlWFNMVCA9ICJDYWNoZWRSZXNvdXJjZVhTTFQiOworCiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChjb25zdCBTdHJpbmcqIGNvbnN0JiBzdHJp
bmcsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgT3duaW5nVHlwZSBvd25pbmdUeXBlKQogewogICAg
IGlmICghc3RyaW5nIHx8IHZpc2l0ZWQoc3RyaW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAzNWNiNmNiN2FmMDVjM2UxODBiZWQ2OTM3ZWMyMDA4
ZjJlZDcxNTMzLi4wNzk2MzUwNDFkN2NlMWNiZDIzN2MxMzE5MzhmMmExYjliZDRlNTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC00OCwyMyArNDgs
MjIgQEAgY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5NZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IH0KIAotICAgIGVudW0gT2JqZWN0VHlwZSB7Ci0g
ICAgICAgIE90aGVyLAotICAgICAgICBET00sCi0gICAgICAgIENTUywKLSAgICAgICAgQmluZGlu
ZywKLSAgICAgICAgTG9hZGVyLAotICAgICAgICBNZW1vcnlDYWNoZVN0cnVjdHVyZXMsCi0gICAg
ICAgIENhY2hlZFJlc291cmNlLAotICAgICAgICBDYWNoZWRSZXNvdXJjZUNTUywKLSAgICAgICAg
Q2FjaGVkUmVzb3VyY2VGb250LAotICAgICAgICBDYWNoZWRSZXNvdXJjZUltYWdlLAotICAgICAg
ICBDYWNoZWRSZXNvdXJjZVNjcmlwdCwKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VTVkcsCi0gICAg
ICAgIENhY2hlZFJlc291cmNlU2hhZGVyLAotICAgICAgICBDYWNoZWRSZXNvdXJjZVhTTFQsCi0g
ICAgICAgIExhc3RUeXBlRW50cnkKLSAgICB9OworICAgIHR5cGVkZWYgY29uc3QgY2hhciogT2Jq
ZWN0VHlwZTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBPdGhlcjsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogRE9NOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDU1M7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIEJpbmRpbmc7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIExvYWRlcjsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBDYWNoZWRSZXNvdXJjZTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVz
b3VyY2VDU1M7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIENhY2hlZFJlc291cmNlRm9udDsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VJbWFnZTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogQ2FjaGVkUmVzb3VyY2VTY3JpcHQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIENh
Y2hlZFJlc291cmNlU1ZHOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBDYWNoZWRSZXNvdXJjZVNo
YWRlcjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogQ2FjaGVkUmVzb3VyY2VYU0xUOwogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkUm9vdE9iamVjdChjb25zdCBUJiB0KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCmluZGV4IGE1YmQyMTA2MWUyNzgyM2ZiMGRkZjA0MmEwYzYxOTFiODc3M2RlZGEuLjg1MTg2
YzcxMGQ1NzAwN2IwNTQzM2FjNjg4Mjc3YjUyNWZhMDJmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDQwLDExICs0NDAs
MTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlbmRlclRyZWVJ
bmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHJlbmRlclRyZWVBbGxvY2F0ZWQucmVsZWFzZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5h
bWUpCitzdGF0aWMgc2l6ZV90IGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFt
ZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3BlY3Rv
ck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKG5hbWUpOwogICAgIHJlc3VsdC0+c2V0U2l6
ZShzaXplKTsKICAgICBhcnJheS0+YWRkSXRlbShyZXN1bHQpOworICAgIHJldHVybiBzaXplOwog
fQogCiBuYW1lc3BhY2UgewpAQCAtNDg0LDIwICs0ODUsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpMYXN0VHlwZUVudHJ5ID09IE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q2FjaGVkUmVzb3VyY2VYU0xUICsgMSwgb2JqZWN0X3R5cGVfZW51bV93YXNfY2hhbmdlZF9w
bGVhc2VfZml4X3RoZV9pbXBsZW1lbnRhdGlvbik7Ci0gICAgICAgIGZvciAoaW50IGkgPSBNZW1v
cnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNhY2hlU3RydWN0dXJlczsgaSA8IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6TGFzdFR5cGVFbnRyeTsgKytpKQotICAgICAgICAgICAgdG90YWxTaXplICs9
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShzdGF0aWNfY2FzdDxNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok9iamVjdFR5cGU+KGkpKTsKLQogICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNp
emUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpLCBNZW1vcnlC
bG9ja05hbWU6Om1lbW9yeUNhY2hlU3RydWN0dXJlcyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDYWNoZWRSZXNvdXJjZSksIE1lbW9yeUJsb2NrTmFtZTo6Y2Fj
aGVkUmVzb3VyY2UpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q2FjaGVkUmVzb3VyY2VDU1MpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlQ1NTKTsK
LSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNl
Rm9udCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VGb250KTsKLSAgICAgICAgYWRk
TWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRv
dGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlSW1hZ2UpLCBNZW1v
cnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlSW1hZ2UpOwotICAgICAgICBhZGRNZW1vcnlCbG9j
a0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVzb3VyY2VTY3JpcHQpLCBNZW1vcnlCbG9ja05h
bWU6OmNhY2hlZFJlc291cmNlU2NyaXB0KTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNhY2hlZFJlc291cmNlU1ZHKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRS
ZXNvdXJjZVNWRyk7Ci0gICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpD
YWNoZWRSZXNvdXJjZVNoYWRlciksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VTaGFk
ZXIpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2VYU0xUKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVhTTFQpOworICAgICAg
ICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbW9yeUNh
Y2hlU3RydWN0dXJlcyksIE1lbW9yeUJsb2NrTmFtZTo6bWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzKTsK
KyAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpD
YWNoZWRSZXNvdXJjZSksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2UpOworICAgICAg
ICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlQ1NTKSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUNTUyk7CisgICAgICAg
IHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q2FjaGVkUmVz
b3VyY2VGb250KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZUZvbnQpOworICAgICAg
ICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hlZFJl
c291cmNlSW1hZ2UpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlSW1hZ2UpOworICAg
ICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIG1fbWVt
b3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNhY2hl
ZFJlc291cmNlU2NyaXB0KSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRSZXNvdXJjZVNjcmlwdCk7
CisgICAgICAgIHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q2FjaGVkUmVzb3VyY2VTVkcpLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFJlc291cmNlU1ZHKTsK
KyAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpD
YWNoZWRSZXNvdXJjZVNoYWRlciksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VTaGFk
ZXIpOworICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNhY2hlZFJlc291cmNlWFNMVCksIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkUmVzb3VyY2VY
U0xUKTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5z
cGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjptZW1v
cnlDYWNoZSk7CiAgICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6ZSk7CkBAIC01MDgsMTUg
KzUwNSwxMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
YnVpbGRPYmplY3RGb3JET00oKSBjb25zdAogICAgIHsKICAgICAgICAgc2l6ZV90IHRvdGFsU2l6
ZSA9IDA7Ci0gICAgICAgIGZvciAoaW50IGkgPSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVy
OyBpIDwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXM7ICsraSkK
LSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNp
emUoc3RhdGljX2Nhc3Q8TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlPihpKSk7CiAK
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
PiBkb21DaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46
OmNyZWF0ZSgpOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T3RoZXIpLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVPdGhlcik7Ci0gICAgICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3Rh
bFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRy
ZWVET00pOwotICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NT
KSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlQ1NTKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tG
b3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVC
aW5kaW5nKTsKLSAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246Okxv
YWRlciksIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUxvYWRlcik7CisgICAgICAgIHRvdGFsU2l6
ZSArPSBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24udG90YWxTaXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpLCBNZW1vcnlC
bG9ja05hbWU6OmRvbVRyZWVPdGhlcik7CisgICAgICAgIHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlC
bG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24udG90YWxT
aXplKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVl
RE9NKTsKKyAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVu
LmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlvbi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVDU1MpOworICAgICAgICB0b3Rh
bFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLnRvdGFsU2l6ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpLCBN
ZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVCaW5kaW5nKTsKKyAgICAgICAgdG90YWxTaXplICs9IGFk
ZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi50b3RhbFNpemUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMb2FkZXIpLCBNZW1vcnlCbG9ja05h
bWU6OmRvbVRyZWVMb2FkZXIpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gZG9tID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5Qmxv
Y2tOYW1lOjpkb20pOwogICAgICAgICBkb20tPnNldFNpemUodG90YWxTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNw
cAppbmRleCAzNDdmNzJkNWY4YTBjOGVhMjU2ZDcwZWJmYmQ5NjAxNzFkZWIzOWRjLi40MDhmNmYx
NTk1YjA2OTliM2RhZDZhNjg4ODhiZGQ1YTJiYTlhMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0zOSw4
ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwoVmlzaXRlZE9iamVjdHMmIHZpc2l0ZWRPYmplY3Rz
KQogICAgIDogbV92aXNpdGVkT2JqZWN0cyh2aXNpdGVkT2JqZWN0cykKIHsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKLSAgICAgICAgbV90b3RhbFNpemVzW2ld
ID0gMDsKIH0KIAogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCkBAIC01NCw4ICs1Miw5IEBAIHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbDo6cHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMoKQog
CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6OmNvdW50T2JqZWN0U2l6ZShPYmplY3RU
eXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogewotICAgIEFTU0VSVChvYmplY3RUeXBlID49
IDAgJiYgb2JqZWN0VHlwZSA8IExhc3RUeXBlRW50cnkpOwotICAgIG1fdG90YWxTaXplc1tvYmpl
Y3RUeXBlXSArPSBzaXplOworICAgIFR5cGVUb1NpemVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X3RvdGFsU2l6ZXMuYWRkKG9iamVjdFR5cGUsIHNpemUpOworICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9IHNpemU7CiB9CiAKIHZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6ZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBh
c3NPd25QdHI8SW5zdHJ1bWVudGVkUG9pbnRlckJhc2U+IHBvaW50ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAppbmRleCA3
NjJmMTkwYTJiODhlYmVhYjAyMGEwNTYyOTJhZDY5MTU2ODRjODQxLi45ZjNlZWM4YmQwYjczNWE0
NjczN2ZkYmEzNmQ5NWRiZTM0NWVkMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNDcsMTUgKzQ4LDE1IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2VsZlNpemUoKSBjb25z
dDsKICAgICBzaXplX3QgdG90YWxTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0VHlwZSA8IExhc3RU
eXBlRW50cnkpOwotICAgICAgICByZXR1cm4gbV90b3RhbFNpemVzW29iamVjdFR5cGVdOworICAg
ICAgICBUeXBlVG9TaXplTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV90b3RhbFNpemVzLmZpbmQo
b2JqZWN0VHlwZSk7CisgICAgICAgIHJldHVybiBpID09IG1fdG90YWxTaXplcy5lbmQoKSA/IDAg
OiBpLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgc2l6ZV90IHJlcG9ydGVkU2l6ZUZvckFsbFR5cGVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHNpemVfdCBzaXplID0gMDsKLSAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCi0gICAgICAgICAgICBzaXplICs9IG1f
dG90YWxTaXplc1tpXTsKKyAgICAgICAgZm9yIChUeXBlVG9TaXplTWFwOjpjb25zdF9pdGVyYXRv
ciBpID0gbV90b3RhbFNpemVzLmJlZ2luKCk7IGkgIT0gbV90b3RhbFNpemVzLmVuZCgpOyArK2kp
CisgICAgICAgICAgICBzaXplICs9IGktPnNlY29uZDsKICAgICAgICAgcmV0dXJuIHNpemU7CiAg
ICAgfQogCkBAIC02NSw3ICs2Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHZpc2l0
ZWQoY29uc3Qgdm9pZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJy
ZWRJbnN0cnVtZW50ZWRQb2ludGVycygpIE9WRVJSSURFOwogCi0gICAgc2l6ZV90IG1fdG90YWxT
aXplc1tMYXN0VHlwZUVudHJ5XTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8T2JqZWN0VHlwZSwgc2l6
ZV90PiBUeXBlVG9TaXplTWFwOworICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwogICAg
IFZpc2l0ZWRPYmplY3RzJiBtX3Zpc2l0ZWRPYmplY3RzOwogICAgIFZlY3RvcjxPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+ID4gbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJzOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IGI1YjUwYmY3ZDdkMTdlMzk3MzQ3M2U3ZjkyZjFm
MjM0MzhhOTMzZWUuLjBhYjU1NjdhZGM3NDc2ZWQyNDlhNDE2ZWZkMmVjYzE2ODFmYmQwNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0
cnVtZW50YXRpb25UZXN0LmNwcApAQCAtMjU1LDUgKzI1NSwxNiBAQCBURVNUKE1lbW9yeUluc3Ry
dW1lbnRhdGlvblRlc3QsIHZpc2l0U3RyaW5ncykKICAgICB9CiB9CiAKK1RFU1QoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVGVzdCwgc3BlZWRUZXN0KQoreworICAgIFZpc2l0ZWRPYmplY3RzIHZpc2l0
ZWRPYmplY3RzOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgaW1wbCh2aXNpdGVkT2Jq
ZWN0cyk7CisgICAgTm9uVmlydHVhbEluc3RydW1lbnRlZCBub25WaXJ0dWFsSW5zdHJ1bWVudGVk
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgICAg
IGltcGwuYWRkUm9vdE9iamVjdCgmbm9uVmlydHVhbEluc3RydW1lbnRlZCk7CisgICAgICAgIHZp
c2l0ZWRPYmplY3RzLmNsZWFyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZQogCg==
</data>
<flag name="review"
          id="173038"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>