<?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>99309</bug_id>
          
          <creation_ts>2012-10-15 04:49:35 -0700</creation_ts>
          <short_desc>Web Inspector: convert manual size calculation of different WebKit things into MemoryInstrumentation.</short_desc>
          <delta_ts>2012-10-15 10:35:18 -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>0</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>caseq</cc>
    
    <cc>giles_joplin</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741952</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-15 04:49:35 -0700</bug_when>
    <thetext>MemoryInstrumentation is our primary method for WebCore internal classes.
But due to historical reasons sizes for some objects  were calculated manually.
I think we could fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741961</commentid>
    <comment_count>1</comment_count>
      <attachid>168684</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-15 05:20:14 -0700</bug_when>
    <thetext>Created attachment 168684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741964</commentid>
    <comment_count>2</comment_count>
      <attachid>168685</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-15 05:26:04 -0700</bug_when>
    <thetext>Created attachment 168685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741980</commentid>
    <comment_count>3</comment_count>
      <attachid>168685</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-15 05:58:13 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

Attachment 168685 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14300666</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741985</commentid>
    <comment_count>4</comment_count>
      <attachid>168685</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-15 06:06:01 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

Attachment 168685 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14289634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741986</commentid>
    <comment_count>5</comment_count>
      <attachid>168685</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-15 06:07:00 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:156
&gt; +static String nodeName(Node* node)

No need to make it static as it is already in anonymous namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741987</commentid>
    <comment_count>6</comment_count>
      <attachid>168685</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-10-15 06:08:01 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

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

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:-479
&gt; -                    unusedSize -= child.children[j].size;

Why do you need this *.Unused record? What&apos;s wrong with calculating it? What&apos;s if *.Unused is not present? It seems that unusedSize will be zero, e.g. for JSHeap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741989</commentid>
    <comment_count>7</comment_count>
      <attachid>168685</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-15 06:08:49 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

Attachment 168685 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14290676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741995</commentid>
    <comment_count>8</comment_count>
      <attachid>168685</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-15 06:13:41 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

Attachment 168685 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14288730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741996</commentid>
    <comment_count>9</comment_count>
      <attachid>168685</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-15 06:15:23 -0700</bug_when>
    <thetext>Comment on attachment 168685
Patch

Attachment 168685 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14292740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742018</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-15 06:52:01 -0700</bug_when>
    <thetext>Committed r131299: &lt;http://trac.webkit.org/changeset/131299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742029</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-15 07:09:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 168685 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168685&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:-479
&gt; &gt; -                    unusedSize -= child.children[j].size;
&gt; 
&gt; Why do you need this *.Unused record? What&apos;s wrong with calculating it? What&apos;s if *.Unused is not present? It seems that unusedSize will be zero, e.g. for JSHeap.

This patch flips the code from manual block building to the automatic builder.
The builder builds parent MemoryBlocks on the fly and calculates their sizes.
As a result when I use automatic builder code for JSHeap I need to add two blocks, JSHeap.Used and JSHeap.Unused. The builder makes parent JSHeap block automatically and assigns the right size to it. Latter, on the front end size, we use JSHeap size as the allocated size and JSHeap.Unused as unused size for JSHeap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742160</commentid>
    <comment_count>12</comment_count>
      <attachid>168737</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-15 10:33:00 -0700</bug_when>
    <thetext>Created attachment 168737
[please ignore]

Added FloatRect::extend() to simplify writing loops that accumulate the bounding box for a sequence of vertices.  For example:

FloatRect box(vertices[0], FloatSize(0,0));
for (unsigned i = 1; i &lt; vertices.length; i++)
    box.extend(vertices[i]);

ExclusionShape and ExclusionPolygon now use FloatRect::extend().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742164</commentid>
    <comment_count>13</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-15 10:35:18 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=168737) [details]

My apologies for accidentally attaching this patch/comment to the wrong bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168684</attachid>
            <date>2012-10-15 05:20:14 -0700</date>
            <delta_ts>2012-10-15 05:25:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99309-20121015161904.patch</filename>
            <type>text/plain</type>
            <size>43944</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ0NjEyY2I0ZTZmNDZmYjRmNGU1NmQy
ZjUxOWJiMWFhMzliMjYyMmEuLjI2MzllNWE2ZmIyYTZhZTVjNTYyMjc5NzE1MDQ0MjRmNTcwNTJl
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMTUgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgbWFu
dWFsIHNpemUgY2FsY3VsYXRpb24gb2YgZGlmZmVyZW50IFdlYktpdCB0aGluZ3MgaW50byBNZW1v
cnlJbnN0cnVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEpTSGVhcCwgRE9NU3RvcmFnZSBhbmQgSGVhcFByb2ZpbGVyIGRhdGEgd2VyZSBj
b3VudGVkIG1hbnVhbGx5LgorICAgICAgICBOb3cgd2UgY291bnQgdGhlIHNpemVzIG1vcmUgZ2Vu
ZXJpYyB3YXkuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6IGNhbGN1
bGF0ZUNvbnRhaW5lclNpemUgd2VyZSByZW1vdmVkLgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TZXF1ZW5jZS5oOiBlbXB0eSBpbnN0cnVtZW50YXRpb25zIHdlcmUgYWRkZWQg
Zm9yICdjb25zdCBjaGFyKicgYW5kICdjb25zdCB2b2lkKicgc2VxdWVuY2VzLgorCiAyMDEyLTEw
LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBRRGF0YVN0cmVhbSBmdW5jdGlvbnMgaW50byBIaXN0b3J5SXRlbVF0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDYxMjdjMzViODU4MWE5YTFhZGZhYThkZjk1NWExOGQ3NWFkZGNkM2EuLjRkNDY1OGZiMDYz
NzJiYzJhZjAwYzg4NjhiZDY5ZmExODFmNzZhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBA
QAorMjAxMi0xMC0xNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udmVydCBtYW51YWwgc2l6ZSBjYWxjdWxhdGlvbiBv
ZiBkaWZmZXJlbnQgV2ViS2l0IHRoaW5ncyBpbnRvIE1lbW9yeUluc3RydW1lbnRhdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlNIZWFwLCBET01T
dG9yYWdlIGFuZCBIZWFwUHJvZmlsZXIgZGF0YSB3ZXJlIGNvdW50ZWQgbWFudWFsbHkuCisgICAg
ICAgIE5vdyB3ZSBjb3VudCB0aGUgc2l6ZXMgbW9yZSBnZW5lcmljIHdheS4KKworICAgICAgICAq
IGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBkb20vV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZU1lbW9yeVR5cGVz
KTogbmV3IHN0cmluZyBpZGVudGlmaWVycyB3ZXJlIGFkZGVkIGZvciBJbnNwZWN0b3IncyBkYXRh
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlOjpJbnNwZWN0b3JCYXNlQWdlbnRJ
bnRlcmZhY2UpOiBjb21tb24gZGF0YSBtZW1iZXJzIHdlcmUgbW92ZWQgZnJvbSB0ZW1wbGF0ZSB0
byBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJm
YWNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50YXRpb24gd2FzIGFkZGVkIHRv
IHRoZSBiYXNlIHRlbXBsYXRlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSk6IGRpdHRvCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYXNlQWdlbnQ6Okluc3BlY3RvckJhc2VBZ2VudCk6IGRp
dHRvCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBOTUkg
aW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBOTUkgaW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRl
ZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50YXRpb24gd2FzIGFkZGVkIHRvIHRoZSBjbGFz
cy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlcG9ydEpTSGVhcEluZm8pOiB0aGVzZSBtZXRob2RzIG5vdyB1c2UgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uIGZvciByZXBvcnRpbmcgdGhlIHNpemUgb2YgdW5kZXJseWluZyBkYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6cmVwb3J0UmVuZGVyVHJlZUluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sbGVjdERvbVRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50
YXRpb24gd2FzIGFkZGVkIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOiBOTUkgaW5zdHJ1bWVudGF0
aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUlu
c3RydW1lbnRhdGlvbkltcGwuY3BwOiBhbGxvY2F0ZWRPYmplY3RzIG1hcCB3YXMgY29udmVydGVk
IGZyb20gSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24g
bG9jYWwgdmFyaWFibGUgdG8gbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y2hlY2tDb3VudGVkT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydE1lbW9y
eVVzYWdlKTogTk1JIGluc3RydW1lbnRhdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGNsYXNzLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cmVwb3J0TWVtb3J5VXNh
Z2UpOiBOTUkgaW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAg
ICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xp
ZW50SW1wbDo6YWxsb2NhdGVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnRJbXBsOjpjaGVja0luc3RydW1lbnRlZE9iamVjdHMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeUJhckNoYXJ0LnByb3RvdHlwZS5f
dXBkYXRlVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKTogTk1JIGluc3RydW1lbnRhdGlvbiB3YXMgYWRkZWQg
dG8gdGhlIGNsYXNzLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDEyLTEwLTEyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUkgcmVtb3ZlIGhhbmQgbWFkZSBvYmplY3QgYnVpbGRlcnMgd2l0aCBhdXRvbWF0aWMg
YnVpbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMzY3ZTJi
YzZjMzI1MDJkY2MyY2QwZDhiZjk5MmYyZmNjMDRjMWY1OC4uMGI3YzIxNzMxZDQzZTExYzFjNTYw
ZDQ3NWEwM2EwMjgxNjU1MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTEwMiw4ICsxMDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
dGFpbmVyPiBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29udGFp
bmVyJiwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLQogcHJvdGVjdGVkOgogICAgIGNsYXNz
IEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6CkBAIC0yNjAsMTIgKzI1OCw2
IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25zdCBMaXN0
SGFzaFNldFR5cGUmIGhhc2hTZXQsIE1lbW9yCiAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4KLXNpemVf
dCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29u
dGFpbmVyJiBjb250YWluZXIsIGJvb2wgY29udGVudE9ubHkpCi17Ci0gICAgcmV0dXJuIChjb250
ZW50T25seSA/IDAgOiBzaXplb2YoY29udGFpbmVyKSkgKyBjb250YWluZXIuY2FwYWNpdHkoKSAq
IHNpemVvZih0eXBlbmFtZSBDb250YWluZXI6OlZhbHVlVHlwZSk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRl
cjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlv
bikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblNl
cXVlbmNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TZXF1ZW5jZS5o
CmluZGV4IDY0ZTg4OTg3YThiNjMxNWYwMTAzMzgyYmFmMzA1NTkxNDg0M2UyYTEuLmJiZjIwNGM0
Nzg1Njk3ODYzMzRkZWUxNTVmNmU2ZTMzYjQwMTBjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblNlcXVlbmNlLmgKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uU2VxdWVuY2UuaApAQCAtNTksNiArNTksMTQgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgU2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8Y2hhcio+IHsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgST4gc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
SSwgSSwgTWVtb3J5Q2xhc3NJbmZvJikgeyB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBTZXF1
ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBjaGFyKj4geworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJPiBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShJLCBJLCBNZW1v
cnlDbGFzc0luZm8mKSB7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNlcXVlbmNlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IHZvaWQqPiB7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEk+IHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKEksIEksIE1lbW9yeUNsYXNzSW5m
byYpIHsgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBJPiB2
b2lkIHJlcG9ydFNlcXVlbmNlTWVtb3J5VXNhZ2UoSSBiZWdpbiwgSSBlbmQsIE1lbW9yeUNsYXNz
SW5mbyYgaW5mbykKIHsKICAgICAvLyBDaGVjayBpZiB0eXBlIGlzIGNvbnZlcnRpYmxlIHRvIGlu
dGVnZXIgdG8gaGFuZGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGVudW0gdmFsdWVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDZlZGM1Mzk3OThkMjUxMWY1MjlkOTNiYWFjYzJiMmEzM2Q5MWM5MTkuLmNkNDY5ODA3MDRkZmE3
ZGU5NDBiZmFjMzZlYTQ2NjZmMGViODM2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBl
czo6UGFnZSA9ICJQYWdlIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpE
T00gPSAiUGFnZS5ET00iOwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNT
UyA9ICJQYWdlLkNTUyI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6Qmlu
ZGluZyA9ICJQYWdlLkJpbmRpbmciOwpAQCAtNTEsNCArNTIsMjEgQEAgTWVtb3J5T2JqZWN0VHlw
ZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlWFNMVCA9ICJNZW1vcnlDYWNoZS5Y
U0xUIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbFN0cmlu
Z3MgPSAiSlNFeHRlcm5hbFJlc291cmNlcy5TdHJpbmdzIjsKIE1lbW9yeU9iamVjdFR5cGUgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbEFycmF5cyA9ICJKU0V4dGVybmFsUmVzb3VyY2VzLkFy
cmF5cyI7CiAKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3Ig
PSAiV2ViSW5zcGVjdG9yIjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJ
bnNwZWN0b3JDb250cm9sbGVyID0gIldlYkluc3BlY3Rvci5Db250cm9sbGVyIjsKK01lbW9yeU9i
amVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JNZW1vcnlBZ2VudCA9ICJXZWJJ
bnNwZWN0b3IuTWVtb3J5QWdlbnQiOworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlw
ZXM6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9ICJXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUFn
ZW50IjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2VzID0gIldlYkluc3BlY3Rvci5ET01TdG9yYWdlQWdlbnQuUmVzb3VyY2Vz
IjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50ID0gIldlYkluc3BlY3Rvci5Qcm9maWxlckFnZW50IjsKKworTWVtb3J5T2JqZWN0VHlw
ZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVzZWQgPSAiSlNIZWFwLlVzZWQiOworTWVtb3J5
T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVudXNlZCA9ICJKU0hlYXAuVW51
c2VkIjsKKworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTVN0b3JhZ2VD
YWNoZSA9ICJET01TdG9yYWdlQ2FjaGUiOworCitNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1v
cnlUeXBlczo6UmVuZGVyVHJlZVVzZWQgPSAiUmVuZGVyVHJlZS5Vc2VkIjsKK01lbW9yeU9iamVj
dFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2VkID0gIlJlbmRlclRyZWUu
VW51c2VkIjsKKworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OlByb2Nlc3NQ
cml2YXRlTWVtb3J5ID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggMGJjZjA5ZGRlOTVhZmEyZWRiYzk0NWU0YzRkN2Y4ZWU0ZDAxYTA1Yi4u
ODBkM2NhYmRiNjcyYzQxMDQ0ZGExYjFhYmJkZTA1NDJmOTZiOTlhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC00MSw2ICs0
MSw3IEBAIHVzaW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKIAogY2xhc3MgV2ViQ29yZU1lbW9y
eVR5cGVzIDogcHVibGljIFBsYXRmb3JtTWVtb3J5VHlwZXMgewogcHVibGljOgorICAgIHN0YXRp
YyBNZW1vcnlPYmplY3RUeXBlIFBhZ2U7CiAgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRE9N
OwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENTUzsKICAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBCaW5kaW5nOwpAQCAtNTgsNiArNTksMjMgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgRXh0ZXJuYWxTdHJpbmdzOwogICAgIHN0YXRpYyBNZW1vcnlPYmpl
Y3RUeXBlIEV4dGVybmFsQXJyYXlzOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5z
cGVjdG9yOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEluc3BlY3RvckNvbnRyb2xsZXI7
CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yTWVtb3J5QWdlbnQ7CisgICAg
c3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZXM7CisgICAg
c3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKKworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIEpTSGVhcFVzZWQ7CisgICAgc3RhdGljIE1lbW9yeU9iamVj
dFR5cGUgSlNIZWFwVW51c2VkOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRE9NU3Rv
cmFnZUNhY2hlOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgUmVuZGVyVHJlZVVzZWQ7
CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgUmVuZGVyVHJlZVVudXNlZDsKKworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIFByb2Nlc3NQcml2YXRlTWVtb3J5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFzZUFnZW50LmNwcAppbmRleCBmM2ZkOTJiM2FmM2Y4ZWU1NDFkYzgxM2RlMGUwZWMzYTQyYzM5
NmRjLi5mZmE5NTU1ZDRhMmJhOWU3N2U4MmM3NTZiNGNiYWRhNjM2NmFiYjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmNwcApAQCAtMzQsMTAg
KzM0LDE0IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKIAorI2luY2x1ZGUg
IldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U6Okluc3BlY3RvckJhc2VBZ2VudEludGVyZmFj
ZShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKK0luc3BlY3RvckJhc2VB
Z2VudEludGVyZmFjZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIGluc3BlY3RvclN0YXRlKQorICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgLCBtX3N0YXRlKGluc3BlY3RvclN0YXRlKQorICAgICwgbV9u
YW1lKG5hbWUpCiB7CiB9CiAKQEAgLTQ1LDYgKzQ5LDE0IEBAIEluc3BlY3RvckJhc2VBZ2VudElu
dGVyZmFjZTo6fkluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSgpCiB7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsK
KyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9p
bnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1fc3RhdGUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCmluZGV4
IDgwMGY5NjczNmE4Zjg2OGI3NDIyZGU1Y2YwMDA5YjQwYTJjMTAyZjEuLjg0OTc2M2ZhNWNlMzEx
OTNhNzZjYzI0YWViNWNjZWNhZjAyZTZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgSW5zcGVj
dG9yQmFzZUFnZW50X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIAogY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2UoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICBJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2UoY29uc3QgU3Ry
aW5nJiwgSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKSB7IH0KQEAgLTUzLDYgKzU0LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CiAKICAgICBTdHJpbmcgbmFt
ZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEluc3RydW1l
bnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBJbnNwZWN0b3JTdGF0ZSog
bV9zdGF0ZTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKQEAgLTY5LDE0ICs3
Nyw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25z
dCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JCYXNl
QWdlbnRJbnRlcmZhY2UobmFtZSkKLSAgICAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5z
dHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgLCBtX3N0YXRlKGluc3BlY3RvclN0YXRlKQorICAg
ICAgICA6IEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZShuYW1lLCBpbnN0cnVtZW50aW5nQWdl
bnRzLCBpbnNwZWN0b3JTdGF0ZSkKICAgICB7CiAgICAgfQotCi0gICAgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwotICAgIEluc3BlY3RvclN0YXRlKiBtX3N0YXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDYwOTU1MTlhM2JiYjMzMTA4Mjli
MDVlNGE0MzE3NWZhZDJjOGFlYTguLjhiYWQ3Y2MwYzZiN2RkNzBhMzg5NjIzYzZlNTBiOTVkNDc2
NjcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTcxLDYgKzcxLDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRh
dGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTQsNyArMTE2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAg
ICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgp
LCBtX3N0YXRlLmdldCgpKSk7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9y
YWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxlYXNlKCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgaW5z
cGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UsIGRvbVN0b3JhZ2VBZ2VudCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdldCgpLCBtX3Bh
Z2UpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX3N0YXRlLmdldCgpLCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLAogICAgICAgIGluc3BlY3RvckNs
aWVudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBh
Z2VBZ2VudCkpOwpAQCAtMzgwLDYgKzM4MiwzMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQgbWF4aW11bVJlcwog
ICAgIG1fcmVzb3VyY2VBZ2VudC0+c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJu
YWxzKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpJbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3Rv
ckFnZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3RydW1lbnRpbmdBZ2VudHMpOworICAg
IGluZm8uYWRkTWVtYmVyKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX3N0YXRlKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX292ZXJsYXkpOworCisgICAgaW5m
by5hZGRNZW1iZXIobV9pbnNwZWN0b3JBZ2VudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kb21B
Z2VudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZUFnZW50KTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX3BhZ2VBZ2VudCk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisg
ICAgaW5mby5hZGRNZW1iZXIobV9kZWJ1Z2dlckFnZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X3Byb2ZpbGVyQWdlbnQpOworI2VuZGlmCisKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckZyb250ZW5kKTsKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1faW5zcGVjdG9y
Q2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2FnZW50cyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MmEyNjM4YzZlODdj
ZmM5NDk5MTNhZjFhY2U4MTM0ZGVhMzczYzllLi4yZTg5MDkyZTIwYmM3NDA5YmE3MTEyYTJkZTVj
ZGQyNGQ3M2M0ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTExNCw2ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsg
fQogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlQWdlbnQ7IH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIElu
c3BlY3RvckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGMzMmVhMjk4NzZkZDllZTE3YmMyZTYx
ZTBkN2U2ODcwNmExMjUzNzcuLjQxYzI3ODFjMWNiYTQzNjBmYTVmNzk5NzJlNWQxMDZkYzNiNmI2
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZS5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC0yMTQsMTUgKzIxNSwxNCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogICAgIG1fcmVzb3VyY2VzLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Om1lbW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNh
Y2hlKCkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIHNp
emVfdCBzaXplID0gMDsKLSAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7
ICsraXQpCi0gICAgICAgIHNpemUgKz0gaXQtPnZhbHVlLT5zdG9yYWdlQXJlYSgpLT5tZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCk7Ci0gICAgcmV0dXJuIHNpemU7CisgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOworICAgIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBp
bmZvLmFkZE1lbWJlcihtX3Jlc291cmNlcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9mcm9udGVu
ZCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaAppbmRleCBhNGY4N2IwZTZmODVkZmU0NWU2ZjYxMDI5ZmE1ZDJkZjZkMTIz
ODJhLi4xODIyYzZhYjA5NGU3Zjk0NzkwNTFhMTNmMjNhYThiMTU1YjhmMGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBA
IC03OCw4ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFVzZURPTVN0b3JhZ2UoU3RvcmFn
ZUFyZWEqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwogICAgIHZvaWQgZGlkRGlzcGF0
Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbios
IFBhZ2UqKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvck1lbW9yeUFnZW50Ci0gICAg
c2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNhY2hlKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklE
RTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4IGY3YTgzNjhm
ZDgyYjY3NjNlOTllYmY5Nzg5MzA4Zjc4NTg3OWZiYTMuLjAyOWUzOTIyOGVlMGYxNWU0ZGNlMDcw
M2M0ZTBmMWIzZDljOTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBAIC04NSw2ICs4NSwxNiBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6dW5iaW5kKCkKICAgICBtX2Zyb250ZW5k
ID0gMDsKIH0KIAordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3N0b3JhZ2VBcmVhKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX2Zyb250ZW5kKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2lkKTsKKyAgICBp
bmZvLmFkZFByaXZhdGVCdWZmZXIobV9zdG9yYWdlQXJlYS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNo
ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuaAppbmRleCBhYzA1OWNiYThkYzNlZWRiZmEzMzE1OTQ4YjE5Mjg1
N2QwYzk1NWFkLi4xMGQ0NmQ3NTBmYWE3NjY2Y2FjNjRmMmQyNjhlNTY3ZWQyNGJiNzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlQXJlYSogc3Rv
cmFnZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhLmdldCgpOyB9CiAgICAgRnJh
bWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQogCisgICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSwgRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNDFhZDg0M2I0MjRlNDk3N2NmY2NlMDlkZDgxNjEw
MDMyYTQ2MzFlNS4uYzlkMjFjNzQ3NmM2MmNhYzJlZjc4YzJlOWFhYjlmODE0MzdlMjg3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CkBAIC03NSwyMCArNzUsNiBAQCB0eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBNZW1vcnlCbG9ja05hbWUgewotc3RhdGljIGNvbnN0IGNo
YXIganNIZWFwQWxsb2NhdGVkW10gPSAiSlNIZWFwQWxsb2NhdGVkIjsKLXN0YXRpYyBjb25zdCBj
aGFyIGpzSGVhcFVzZWRbXSA9ICJKU0hlYXBVc2VkIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBjb25zdCBj
aGFyIHByb2Nlc3NQcml2YXRlTWVtb3J5W10gPSAiUHJvY2Vzc1ByaXZhdGVNZW1vcnkiOwotCi1z
dGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNlZFtdID0gIlJlbmRlclRyZWVVc2VkIjsKLXN0
YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxvY2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxsb2Nh
dGVkIjsKLQotc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUNhY2hlW10gPSAiRE9NU3RvcmFn
ZUNhY2hlIjsKLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3MgTWVtb3J5VXNhZ2VTdGF0c0dlbmVy
YXRvciB7CkBAIC0xMzQsMTAgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdHlw
ZU5hbWUgPSBvYmplY3RUeXBlc1tpbmRleF07CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZSh0
eXBlTmFtZSk7CiAgICAgICAgIGJsb2NrLT5zZXRTaXplKG1fc2l6ZXNNYXAuZ2V0KHR5cGVOYW1l
KSk7CisgICAgICAgIFN0cmluZyBwcmVmaXggPSB0eXBlTmFtZTsKKyAgICAgICAgcHJlZml4LmFw
cGVuZCgnLicpOwogICAgICAgICBhcnJheS0+YWRkSXRlbShibG9jayk7CiAgICAgICAgICsraW5k
ZXg7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuOwotICAg
ICAgICB3aGlsZSAoaW5kZXggPCBvYmplY3RUeXBlcy5zaXplKCkgJiYgb2JqZWN0VHlwZXNbaW5k
ZXhdLnN0YXJ0c1dpdGgodHlwZU5hbWUpKSB7CisgICAgICAgIHdoaWxlIChpbmRleCA8IG9iamVj
dFR5cGVzLnNpemUoKSAmJiBvYmplY3RUeXBlc1tpbmRleF0uc3RhcnRzV2l0aChwcmVmaXgpKSB7
CiAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAgICAgICAgIGNoaWxkcmVuID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2tzOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGluZGV4ID0gYnVp
bGRPYmplY3RGb3JJbmRleChpbmRleCwgb2JqZWN0VHlwZXMsIGNoaWxkcmVuLmdldCgpKTsKQEAg
LTE2NSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFR5cGVOYW1lVG9TaXplTWFwIG1fc2l6ZXNN
YXA7CiB9OwogCi1TdHJpbmcgbm9kZU5hbWUoTm9kZSogbm9kZSkKK3N0YXRpYyBTdHJpbmcgbm9k
ZU5hbWUoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS0+aXNYSFRNTERv
Y3VtZW50KCkpCiAgICAgICAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKTsKQEAgLTQyMCwzOCAr
NDA4LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE1lbW9yeUNsYXNzSW5mbyogbV9tZW1vcnlD
bGFzc0luZm87CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhQ291bnRlciB7Ci1wdWJsaWM6Ci0g
ICAgdm9pZCBhZGRDb21wb25lbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBzaXplX3Qgc2l6ZSkKLSAg
ICB7Ci0gICAgICAgIG1fY29tcG9uZW50cy5hcHBlbmQoQ29tcG9uZW50SW5mbyhuYW1lLCBzaXpl
KSk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0
YXRpc3RpY3MoKQotICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6Omluc3BlY3RvckRhdGEpOwotICAg
ICAgICBmb3IgKFZlY3RvcjxDb21wb25lbnRJbmZvPjo6aXRlcmF0b3IgaXQgPSBtX2NvbXBvbmVu
dHMuYmVnaW4oKTsgaXQgIT0gbV9jb21wb25lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5zcGVjdG9yTWVtb3J5Qmxv
Y2s6OmNyZWF0ZSgpLnNldE5hbWUoaXQtPm1fbmFtZSk7Ci0gICAgICAgICAgICBibG9jay0+c2V0
U2l6ZShpdC0+bV9zaXplKTsKLSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBpdC0+bV9zaXplOwot
ICAgICAgICB9Ci0gICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6ZSk7Ci0gICAgICAgIHJl
dHVybiBibG9jazsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ29tcG9uZW50SW5mbyB7
Ci0gICAgcHVibGljOgotICAgICAgICBDb21wb25lbnRJbmZvKGNvbnN0IFN0cmluZyYgbmFtZSwg
c2l6ZV90IHNpemUpIDogbV9uYW1lKG5hbWUpLCBtX3NpemUoc2l6ZSkgeyB9Ci0KLSAgICAgICAg
Y29uc3QgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgc2l6ZV90IG1fc2l6ZTsKLSAgICB9OwotCi0g
ICAgVmVjdG9yPENvbXBvbmVudEluZm8+IG1fY29tcG9uZW50czsKLX07Ci0KIH0gLy8gbmFtZXNw
YWNlCiAKIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKQpAQCAt
NDc1LDQ0ICs0MzEsMjggQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNv
dW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnIKICAgICBzdHJpbmdzID0g
Y291bnRlclZpc2l0b3Iuc3RyaW5ncygpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4ganNIZWFwSW5mbygpCitzdGF0aWMgdm9pZCByZXBvcnRKU0hlYXBJbmZv
KFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50JiBtZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnQpCiB7CiAgICAgSGVhcEluZm8gaW5mbzsKICAgICBTY3JpcHRHQ0V2ZW50OjpnZXRIZWFw
U2l6ZShpbmZvKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNIZWFwQWxs
b2NhdGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5Qmxv
Y2tOYW1lOjpqc0hlYXBBbGxvY2F0ZWQpOwotICAgIGpzSGVhcEFsbG9jYXRlZC0+c2V0U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGluZm8udG90YWxKU0hlYXBTaXplKSk7Ci0KLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gSW5zcGVj
dG9yTWVtb3J5QmxvY2tzOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGpzSGVhcFVzZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShN
ZW1vcnlCbG9ja05hbWU6OmpzSGVhcFVzZWQpOwotICAgIGpzSGVhcFVzZWQtPnNldFNpemUoc3Rh
dGljX2Nhc3Q8aW50PihpbmZvLnVzZWRKU0hlYXBTaXplKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0
ZW0oanNIZWFwVXNlZCk7Ci0KLSAgICBqc0hlYXBBbGxvY2F0ZWQtPnNldENoaWxkcmVuKGNoaWxk
cmVuKTsKLSAgICByZXR1cm4ganNIZWFwQWxsb2NhdGVkLnJlbGVhc2UoKTsKKyAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKFdlYkNvcmVNZW1vcnlUeXBlczo6
SlNIZWFwVXNlZCwgaW5mby51c2VkSlNIZWFwU2l6ZSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVudXNl
ZCwgaW5mby50b3RhbEpTSGVhcFNpemUgLSBpbmZvLnVzZWRKU0hlYXBTaXplKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlbmRlclRyZWVJbmZvKFBhZ2Uq
IHBhZ2UpCitzdGF0aWMgdm9pZCByZXBvcnRSZW5kZXJUcmVlSW5mbyhXVEY6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbkNsaWVudCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LCBQYWdlKiBwYWdl
KQogewogICAgIEFyZW5hU2l6ZSBhcmVuYVNpemUgPSBwYWdlLT5yZW5kZXJUcmVlU2l6ZSgpOwog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVlQWxsb2NhdGVkID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpy
ZW5kZXJUcmVlQWxsb2NhdGVkKTsKLSAgICByZW5kZXJUcmVlQWxsb2NhdGVkLT5zZXRTaXplKGFy
ZW5hU2l6ZS5hbGxvY2F0ZWQpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4g
Y2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZVVzZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OnJlbmRlclRyZWVVc2VkKTsKLSAg
ICByZW5kZXJUcmVlVXNlZC0+c2V0U2l6ZShhcmVuYVNpemUudHJlZVNpemUpOwotICAgIGNoaWxk
cmVuLT5hZGRJdGVtKHJlbmRlclRyZWVVc2VkKTsKLQotICAgIHJlbmRlclRyZWVBbGxvY2F0ZWQt
PnNldENoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5y
ZWxlYXNlKCk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6
ZShXZWJDb3JlTWVtb3J5VHlwZXM6OlJlbmRlclRyZWVVc2VkLCBhcmVuYVNpemUudHJlZVNpemUp
OworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29y
ZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2VkLCBhcmVuYVNpemUuYWxsb2NhdGVkIC0gYXJl
bmFTaXplLnRyZWVTaXplKTsKIH0KIAogbmFtZXNwYWNlIHsKIAogY2xhc3MgRE9NVHJlZXNJdGVy
YXRvciA6IHB1YmxpYyBOb2RlV3JhcHBlclZpc2l0b3IgewogcHVibGljOgotICAgIERPTVRyZWVz
SXRlcmF0b3IoUGFnZSogcGFnZSwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCYgbWVtb3J5SW5z
dHJ1bWVudGF0aW9uKQorICAgIERPTVRyZWVzSXRlcmF0b3IoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFn
ZShwYWdlKQogICAgICAgICAsIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1l
bnRhdGlvbikKICAgICB7CkBAIC01NDksNyArNDg5LDcgQEAgcHJpdmF0ZToKIAogfQogCi1zdGF0
aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8oUGFnZSogcGFnZSwgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorc3RhdGljIHZvaWQgY29sbGVjdERvbVRy
ZWVJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwmIG1lbW9yeUluc3RydW1lbnRhdGlvbiwg
UGFnZSogcGFnZSkKIHsKICAgICBFeHRlcm5hbFN0cmluZ3NSb290IHN0cmluZ3NSb290OwogICAg
IG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KHN0cmluZ3NSb290KTsKQEAgLTU1
Nyw3ICs0OTcsNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8oUGFnZSogcGFnZSwg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCYgbWVtb3J5SW5zdAogICAgIEV4dGVybmFsQXJyYXlz
Um9vdCBhcnJheXNSb290OwogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0
KGFycmF5c1Jvb3QpOwogCi0gICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBh
Z2UsIG1lbW9yeUluc3RydW1lbnRhdGlvbik7CisgICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVl
c0l0ZXJhdG9yKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgcGFnZSk7CiAKICAgICBTY3JpcHRQcm9m
aWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOwogCkBAIC01ODQsMzUg
KzUyNCwyNyBAQCBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbgogICAgIH0KIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBET01TdG9yYWdlQ2FjaGUoc2l6ZV90
IGNhY2hlU2l6ZSkKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVN0b3Jh
Z2VDYWNoZSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJs
b2NrTmFtZTo6ZG9tU3RvcmFnZUNhY2hlKTsKLSAgICBkb21TdG9yYWdlQ2FjaGUtPnNldFNpemUo
Y2FjaGVTaXplKTsKLSAgICByZXR1cm4gZG9tU3RvcmFnZUNhY2hlOwotfQotCiB2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKLSAgICBw
cm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVt
b3J5QmxvY2tOYW1lOjpwcm9jZXNzUHJpdmF0ZU1lbW9yeSk7Ci0KLSAgICBJbnNwZWN0b3JEYXRh
Q291bnRlciBpbnNwZWN0b3JEYXRhOwotICAgIGluc3BlY3RvckRhdGEuYWRkQ29tcG9uZW50KE1l
bW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9ySlNIZWFwRGF0YSwgU2NyaXB0UHJvZmlsZXI6OnByb2Zp
bGVyU25hcHNob3RzU2l6ZSgpKTsKLQotICAgIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IGFsbG9jYXRl
ZE9iamVjdHM7Ci0gICAgbV9pbnNwZWN0b3JDbGllbnQtPmdldEFsbG9jYXRlZE9iamVjdHMoYWxs
b2NhdGVkT2JqZWN0cyk7Ci0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCBtZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQoYWxsb2NhdGVkT2JqZWN0cy5pc0VtcHR5KCkgPyAwIDog
JmFsbG9jYXRlZE9iamVjdHMpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50OworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5nZXRB
bGxvY2F0ZWRPYmplY3RzKG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5hbGxvY2F0ZWRPYmpl
Y3RzKCkpOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uKCZtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOwogCisgICAgcmVwb3J0SlNIZWFwSW5m
byhtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOworICAgIHJlcG9ydFJlbmRlclRyZWVJbmZv
KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCwgbV9wYWdlKTsKKyAgICBjb2xsZWN0RG9tVHJl
ZUluZm8obWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBtX3BhZ2UpOyAvLyBGSVhNRTogY29sbGVjdCBm
b3IgYWxsIHBhZ2VzPworCiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRy
ZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwotICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGpzSGVhcEluZm8oKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8o
bV9wYWdlKSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/Ci0gICAgY29sbGVjdERv
bVRyZWVJbmZvKG1fcGFnZSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsgLy8gRklYTUU6IGNvbGxl
Y3QgZm9yIGFsbCBwYWdlcz8KLSAgICBjaGlsZHJlbi0+YWRkSXRlbShkdW1wRE9NU3RvcmFnZUNh
Y2hlKG1fZG9tU3RvcmFnZUFnZW50LT5tZW1vcnlCeXRlc1VzZWRCeVN0b3JhZ2VDYWNoZSgpKSk7
CiAgICAgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhjaGlsZHJlbik7CisKKyAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdCh0aGlzKTsKKyAgICBtZW1vcnlJbnN0cnVtZW50
YXRpb24uYWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb24pOworICAgIG1lbW9yeUlu
c3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7
CisKICAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yIHN0YXRzR2VuZXJhdG9yKCZtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQpOwogICAgIHN0YXRzR2VuZXJhdG9yLmR1bXAoY2hpbGRyZW4u
Z2V0KCkpOwotICAgIGluc3BlY3RvckRhdGEuYWRkQ29tcG9uZW50KE1lbW9yeUJsb2NrTmFtZTo6
aW5zcGVjdG9yRE9NRGF0YSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LnNlbGZTaXplKCkg
KyBtZW1vcnlJbnN0cnVtZW50YXRpb24uc2VsZlNpemUoKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0
ZW0oaW5zcGVjdG9yRGF0YS5kdW1wU3RhdGlzdGljcygpKTsKKworICAgIHByb2Nlc3NNZW1vcnkg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlw
ZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CiAKICAgICBzaXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKQEAgLTYyMSwxMSAr
NTUzLDE4IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgcHJvY2Vzc01lbW9yeS0+c2V0
U2l6ZShwcml2YXRlQnl0ZXMpOwogfQogCi1JbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCit2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsKKyAgICBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckNsaWVudCk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9wYWdlKTsKK30KKworSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Oklu
c3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2Uq
IHBhZ2UpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KCJN
ZW1vcnkiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKICAgICAsIG1faW5zcGVjdG9yQ2xp
ZW50KGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQotICAgICwgbV9kb21TdG9yYWdlQWdlbnQo
ZG9tU3RvcmFnZUFnZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDMxZDViYzRlZDZhMmM3NzgzNDdiM2UzN2ExZjY1
ZWE3MDdkODVlODcuLjYxZjExNTgwYzA3MWViYjUzNWU4NzA3MWQ0N2VmYzcxZTJlYWI3MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBA
IC01MiwyMSArNTIsMjIgQEAgY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PiwgcHUKIHB1YmxpYzoKICAgICB0
eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPiA+IEluc3Bl
Y3RvckFnZW50czsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlLCBQYWdlKiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIHN0YXRl
LCBwYWdlLCBkb21TdG9yYWdlQWdlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIHN0YXRlLCBw
YWdlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3JvdXBz
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmluZ3Mp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrPiYgcHJvY2Vzc01l
bW9yeSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgotICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2Uq
LCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBQ
YWdlKik7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIFBh
Z2UqIG1fcGFnZTsKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFn
ZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDY0YjM2MmU4Y2Iz
MDZkMDhmMjY4OWEyOGIyZTJhYmRjMjBkMzhlMGEuLmJlZDQxY2Q0NGE4YTM4ODA5MDBjMDE3Nzhl
MmU3NzkwMWMwMjE0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KQEAgLTQ4Miw2ICs0
ODMsMTkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAqaGVhcFNuYXBzaG90T2JqZWN0
SWQgPSBTdHJpbmc6Om51bWJlcihpZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQpOworICAgIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxlckFnZW50Pjo6cmVwb3J0TWVtb3J5VXNhZ2Uo
bWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jb25zb2xlQWdlbnQpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2Zyb250ZW5kKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Byb2ZpbGVzKTsKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX3NuYXBzaG90cyk7CisKKyAgICBpbmZvLmFkZFByaXZhdGVCdWZm
ZXIoU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVyU25hcHNob3RzU2l6ZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCBkNTQ4YmJmYTQ5YzViZDkxYzM1Yzg5NzNmZmE5
NjBkNDMxN2Y4YWZlLi44MjNiN2U2ZjBiODVjM2EzNDk5ZWE3ZWE0MTk1ZWM2YTY0YjI2MjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVj
dEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RP
YmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhl
YXBTbmFwc2hvdE9iamVjdElkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBJ
bnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogICAg
IHZpcnR1YWwgdm9pZCBzdGFydFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbC5jcHAKaW5kZXggMTRkYWJlYTJlNTZjYmFhNjZjYzJmZWNhYzgxZjFhZjExZjJiNWZkMC4u
Yjc5OTlmMDg4YmE5YjVhOWQ2MzE4ODQ4ZmRjMjY5MGNiODljNTNmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApA
QCAtMzMsNyArMzMsMTQgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIgorCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTcxLDcgKzc4LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnRJbXBsOjpjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCogb2JqZWN0KQogewog
ICAgIGlmICghY2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIW1fYWxsb2NhdGVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgeworICAgIGlmICgh
bV9hbGxvY2F0ZWRPYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgKyttX3RvdGFs
T2JqZWN0c05vdEluQWxsb2NhdGVkU2V0OwogI2lmIDAKICAgICAgICAgcHJpbnRmKCJGb3VuZCB1
bmtub3duIG9iamVjdCByZWZlcmVuY2VkIGJ5IHBvaW50ZXI6ICVwXG4iLCBvYmplY3QpOwpAQCAt
ODAsNiArODcsMTQgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpjaGVj
a0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCogb2JqZWN0KQogICAgIH0KIH0KIAordm9pZCBNZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdG90YWxTaXplcyk7CisgICAgaW5m
by5hZGRNZW1iZXIobV92aXNpdGVkT2JqZWN0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9hbGxv
Y2F0ZWRPYmplY3RzKTsKK30KKwogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9j
ZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCiB7CiAgICAgd2hpbGUgKCFtX2RlZmVy
cmVkSW5zdHJ1bWVudGVkUG9pbnRlcnMuaXNFbXB0eSgpKSB7CkBAIC05NCwxMSArMTA5LDEzIEBA
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6ZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVy
KFBhc3NPd25QdHI8SW5zdHJ1bWVudGVkCiAgICAgbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50
ZXJzLmFwcGVuZChwb2ludGVyKTsKIH0KIAotc2l6ZV90IE1lbW9yeUluc3RydW1lbnRhdGlvbklt
cGw6OnNlbGZTaXplKCkgY29uc3QKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKLSAgICByZXR1cm4gY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShtX2RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMpOworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycyk7CiB9CiAKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CmluZGV4IDQwZTI1ZTc3NTFiYzdmMzlkODAzNzhhZjIyZTBmZGU5MzI0YTAxODMuLjhhZjhkNjBj
NWQ3ZDIzNTYxZDIxMTkzY2QzZTc3YmExOTU2ZDgwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaApAQCAtNDgsOSArNDgs
OCBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IFR5cGVOYW1lVG9TaXplTWFwOwog
CiBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsIDogcHVibGljIFdURjo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsKFZpc2l0ZWRPYmplY3RzKiBhbGxvY2F0ZWRPYmplY3Rz
KQotICAgICAgICA6IG1fYWxsb2NhdGVkT2JqZWN0cyhhbGxvY2F0ZWRPYmplY3RzKQotICAgICAg
ICAsIG1fdG90YWxDb3VudGVkT2JqZWN0cygwKQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNs
aWVudEltcGwoKQorICAgICAgICA6IG1fdG90YWxDb3VudGVkT2JqZWN0cygwKQogICAgICAgICAs
IG1fdG90YWxPYmplY3RzTm90SW5BbGxvY2F0ZWRTZXQoMCkKICAgICB7IH0KIApAQCAtNjgsMTUg
KzY3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfQogCi0gICAgc2l6
ZV90IHNlbGZTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Zpc2l0ZWRPYmpl
Y3RzLmNhcGFjaXR5KCkgKiBzaXplb2YoVmlzaXRlZE9iamVjdHM6OlZhbHVlVHlwZSkgKwotICAg
ICAgICAgICAgbV90b3RhbFNpemVzLmNhcGFjaXR5KCkgKiBzaXplb2YoVHlwZVRvU2l6ZU1hcDo6
VmFsdWVUeXBlKTsKLSAgICB9Ci0KICAgICBUeXBlTmFtZVRvU2l6ZU1hcCBzaXplc01hcCgpIGNv
bnN0OworICAgIFZpc2l0ZWRPYmplY3RzJiBhbGxvY2F0ZWRPYmplY3RzKCkgeyByZXR1cm4gbV9h
bGxvY2F0ZWRPYmplY3RzOyB9CiAKLSAgICBib29sIGNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkT2JqZWN0czsgfQorICAgIGJvb2wgY2hlY2tJbnN0
cnVtZW50ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gIW1fYWxsb2NhdGVkT2JqZWN0cy5pc0Vt
cHR5KCk7IH0KICAgICBzaXplX3QgdmlzaXRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Zp
c2l0ZWRPYmplY3RzLnNpemUoKTsgfQogICAgIHNpemVfdCB0b3RhbENvdW50ZWRPYmplY3RzKCkg
Y29uc3QgeyByZXR1cm4gbV90b3RhbENvdW50ZWRPYmplY3RzOyB9CiAgICAgc2l6ZV90IHRvdGFs
T2JqZWN0c05vdEluQWxsb2NhdGVkU2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE9iamVjdHNO
b3RJbkFsbG9jYXRlZFNldDsgfQpAQCAtODUsMTEgKzc5LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB0eXBlZGVmIEhhc2hNYXA8TWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90PiBUeXBlVG9TaXplTWFw
OwogICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwogICAgIFZpc2l0ZWRPYmplY3RzIG1f
dmlzaXRlZE9iamVjdHM7Ci0gICAgY29uc3QgVmlzaXRlZE9iamVjdHMqIG1fYWxsb2NhdGVkT2Jq
ZWN0czsKKyAgICBWaXNpdGVkT2JqZWN0cyBtX2FsbG9jYXRlZE9iamVjdHM7CiAgICAgc2l6ZV90
IG1fdG90YWxDb3VudGVkT2JqZWN0czsKICAgICBzaXplX3QgbV90b3RhbE9iamVjdHNOb3RJbkFs
bG9jYXRlZFNldDsKIH07CkBAIC0xMDMsNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3Qg
c2VsZlNpemUoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWZlckluc3Ry
dW1lbnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVy
cygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwppbmRleCA1NzgzMzBmNDM3
ZjhmNTNlMjg3NGRlNGM1Y2MxODkxY2Q3ZWI5MDQ3Li4xYzBjYjY3ZmRjOTk5YWE5OWE1ZWRjZmJm
N2U5YjEyNzQ0MzgwY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwpAQCAtMjE5LDE3
ICsyMTksMTcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRp
YWxpemUgPSBmdW5jdGlvbigpCiAgICAgYWRkQmxvY2soImhzbCggIDAsICAwJSwgIDgwJSkiLCAi
T3duZXJzVHlwZVBsYWNlaG9sZGVyIiwgIk93bmVyc1R5cGVQbGFjZWhvbGRlciIpOwogICAgIGFk
ZEJsb2NrKCJoc2woICAwLCAgMCUsICA4MCUpIiwgIk90aGVyIiwgIk90aGVyIik7CiAgICAgYWRk
QmxvY2soImhzbCgzMDAsIDMwJSwgIDgwJSkiLCAiUGFnZSIsICJQYWdlJ3Mgc3RydWN0dXJlcyIp
OwotICAgIGFkZEJsb2NrKCJoc2woIDkwLCA2MCUsICA4MCUpIiwgIkpTSGVhcEFsbG9jYXRlZCIs
ICJKYXZhU2NyaXB0IGhlYXAiKTsKLSAgICBhZGRCbG9jaygiaHNsKCA5MCwgODAlLCAgODAlKSIs
ICJKU0hlYXBVc2VkIiwgIlVzZWQgSmF2YVNjcmlwdCBoZWFwIik7CisgICAgYWRkQmxvY2soImhz
bCggOTAsIDYwJSwgIDgwJSkiLCAiSlNIZWFwIiwgIkphdmFTY3JpcHQgaGVhcCIpOworICAgIGFk
ZEJsb2NrKCJoc2woIDkwLCA4MCUsICA4MCUpIiwgIkpTSGVhcC5Vc2VkIiwgIlVzZWQgSmF2YVNj
cmlwdCBoZWFwIik7CiAgICAgYWRkQmxvY2soImhzbCggOTAsIDMwJSwgIDgwJSkiLCAiSlNFeHRl
cm5hbFJlc291cmNlcyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIpOwogICAgIGFk
ZEJsb2NrKCJoc2woIDkwLCA0MCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxBcnJheXMiLCAiSmF2YVNj
cmlwdCBleHRlcm5hbCBhcnJheXMiKTsKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgNTAlLCAgODAl
KSIsICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHN0cmluZ3MiKTsK
LSAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JEYXRhIiwgIklu
c3BlY3RvciBkYXRhIik7CisgICAgYWRkQmxvY2soImhzbCgyMTAsIDYwJSwgIDgwJSkiLCAiV2Vi
SW5zcGVjdG9yIiwgIkluc3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYw
JSwgIDgwJSkiLCAiTWVtb3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAg
IGFkZEJsb2NrKCJoc2woIDQwLCA2MCUsICA4MCUpIiwgIkdseXBoQ2FjaGUiLCAiR2x5cGggY2Fj
aGUgcmVzb3VyY2VzIik7CiAgICAgYWRkQmxvY2soImhzbCggMzUsIDYwJSwgIDgwJSkiLCAiRE9N
U3RvcmFnZUNhY2hlIiwgIkRPTSBzdG9yYWdlIGNhY2hlIik7Ci0gICAgYWRkQmxvY2soImhzbCgg
NjAsIDYwJSwgIDgwJSkiLCAiUmVuZGVyVHJlZUFsbG9jYXRlZCIsICJSZW5kZXIgdHJlZSIpOwot
ICAgIGFkZEJsb2NrKCJoc2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVVc2VkIiwgIlJl
bmRlciB0cmVlIHVzZWQiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA2MCwgNjAlLCAgODAlKSIsICJS
ZW5kZXJUcmVlIiwgIlJlbmRlciB0cmVlIik7CisgICAgYWRkQmxvY2soImhzbCggNjAsIDYwJSwg
IDgwJSkiLCAiUmVuZGVyVHJlZS5Vc2VkIiwgIlJlbmRlciB0cmVlIHVzZWQiKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2Zvck1lbW9yeUJsb2NrID0gZnVu
Y3Rpb24obWVtb3J5QmxvY2spCkBAIC00NzQsOSArNDc0LDEzIEBAIFdlYkluc3BlY3Rvci5OYXRp
dmVNZW1vcnlCYXJDaGFydC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB2YXIgdW51c2VkU2l6ZSA9IDA7CiAgICAgICAgICAgICBpZiAoISFjaGlsZC5jaGlsZHJlbikg
ewotICAgICAgICAgICAgICAgIHVudXNlZFNpemUgPSBjaGlsZC5zaXplOwotICAgICAgICAgICAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoOyArK2opCi0gICAg
ICAgICAgICAgICAgICAgIHVudXNlZFNpemUgLT0gY2hpbGQuY2hpbGRyZW5bal0uc2l6ZTsKKyAg
ICAgICAgICAgICAgICB2YXIgdW51c2VkTmFtZSA9IG5hbWUgKyAiLlVudXNlZCI7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZC5jaGlsZHJlbi5sZW5ndGg7ICsraikg
eworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW5bal0ubmFtZSA9PT0gdW51
c2VkTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkU2l6ZSA9IGNoaWxkLmNo
aWxkcmVuW2pdLnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHZhciB1bnVzZWRMZW5ndGggPSB1bnVzZWRTaXplICogYmFyTGVuZ3RoU2l6ZVJhdGlvOwog
ICAgICAgICAgICAgdmFyIGJhckxlbmd0aCA9IGNoaWxkLnNpemUgKiBiYXJMZW5ndGhTaXplUmF0
aW87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlY2IwYTJmNTY0YTUwMjY3YmQ0ZmM1MTUwNDkwMzY2
ODkyZmMwY2Q5Li4zZGY3NTg2ZTg2OWEyYjkwOTcyN2ZlZmMzYjg2ZWVmODlmNzQwMmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZvaWRDYWxs
YmFjay5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTEyNjYsNiArMTI2Nyw0OSBAQCB2b2lkIFBhZ2U6
OnJlc2V0U2VlblBsdWdpbnMoKQogICAgIG1fc2VlblBsdWdpbnMuY2xlYXIoKTsKIH0KIAordm9p
ZCBQYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6UGFnZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9j
aHJvbWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZHJhZ0NhcmV0Q29udHJvbGxlcik7CisKKyNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGluZm8uYWRkTWVtYmVyKG1fZHJhZ0NvbnRyb2xs
ZXIpOworI2VuZGlmCisgICAgaW5mby5hZGRNZW1iZXIobV9mb2N1c0NvbnRyb2xsZXIpOworI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIGluZm8uYWRkTWVtYmVyKG1fY29udGV4dE1lbnVD
b250cm9sbGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaW5mby5hZGRN
ZW1iZXIobV9pbnNwZWN0b3JDb250cm9sbGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgaW5mby5hZGRNZW1iZXIobV9wb2ludGVyTG9ja0NvbnRyb2xsZXIpOworI2Vu
ZGlmCisgICAgaW5mby5hZGRNZW1iZXIobV9zY3JvbGxpbmdDb29yZGluYXRvcik7CisgICAgaW5m
by5hZGRNZW1iZXIobV9zZXR0aW5ncyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9wcm9ncmVzcyk7
CisgICAgaW5mby5hZGRNZW1iZXIobV9iYWNrRm9yd2FyZENvbnRyb2xsZXIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fbWFpbkZyYW1lKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BsdWdpbkRhdGEp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fdGhlbWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZWRp
dG9yQ2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZlYXR1cmVPYnNlcnZlcik7CisgICAg
aW5mby5hZGRNZW1iZXIobV9ncm91cE5hbWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnaW5h
dGlvbik7CisgICAgaW5mby5hZGRNZW1iZXIobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fdXNlclN0eWxlU2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2lu
Z2xlUGFnZUdyb3VwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2dyb3VwKTsKKyAgICBpbmZvLmFk
ZFdlYWtQb2ludGVyKG1fZGVidWdnZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2Vzc2lvblN0
b3JhZ2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmpl
Y3RzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbik7CisgICAg
aW5mby5hZGRNZW1iZXIobV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbik7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9hbHRlcm5hdGl2ZVRleHRDbGllbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2Vl
blBsdWdpbnMpOworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgIDog
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KDApCiAgICAgLCBjaHJvbWVDbGllbnQoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggZGU2OGRhYjAyODgyNTA3YmJmZTNlOWRiN2YzZjgyZTUxOWQzZjNjZi4uNzZkOWFj
N2VkMmU1NjZlNzU2NzI1MzRmOGQwYzU1NGQ2ZTIxZTVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM1
Miw2ICszNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2F3UGx1Z2lu
KGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwogICAgICAgICB2b2lkIHJlc2V0U2VlblBsdWdp
bnMoKTsKIAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168685</attachid>
            <date>2012-10-15 05:26:04 -0700</date>
            <delta_ts>2012-10-15 10:33:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99309-20121015162454.patch</filename>
            <type>text/plain</type>
            <size>43884</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ0NjEyY2I0ZTZmNDZmYjRmNGU1NmQy
ZjUxOWJiMWFhMzliMjYyMmEuLjI2MzllNWE2ZmIyYTZhZTVjNTYyMjc5NzE1MDQ0MjRmNTcwNTJl
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMTUgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgbWFu
dWFsIHNpemUgY2FsY3VsYXRpb24gb2YgZGlmZmVyZW50IFdlYktpdCB0aGluZ3MgaW50byBNZW1v
cnlJbnN0cnVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEpTSGVhcCwgRE9NU3RvcmFnZSBhbmQgSGVhcFByb2ZpbGVyIGRhdGEgd2VyZSBj
b3VudGVkIG1hbnVhbGx5LgorICAgICAgICBOb3cgd2UgY291bnQgdGhlIHNpemVzIG1vcmUgZ2Vu
ZXJpYyB3YXkuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6IGNhbGN1
bGF0ZUNvbnRhaW5lclNpemUgd2VyZSByZW1vdmVkLgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TZXF1ZW5jZS5oOiBlbXB0eSBpbnN0cnVtZW50YXRpb25zIHdlcmUgYWRkZWQg
Zm9yICdjb25zdCBjaGFyKicgYW5kICdjb25zdCB2b2lkKicgc2VxdWVuY2VzLgorCiAyMDEyLTEw
LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBRRGF0YVN0cmVhbSBmdW5jdGlvbnMgaW50byBIaXN0b3J5SXRlbVF0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDYxMjdjMzViODU4MWE5YTFhZGZhYThkZjk1NWExOGQ3NWFkZGNkM2EuLjRkNDY1OGZiMDYz
NzJiYzJhZjAwYzg4NjhiZDY5ZmExODFmNzZhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBA
QAorMjAxMi0xMC0xNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udmVydCBtYW51YWwgc2l6ZSBjYWxjdWxhdGlvbiBv
ZiBkaWZmZXJlbnQgV2ViS2l0IHRoaW5ncyBpbnRvIE1lbW9yeUluc3RydW1lbnRhdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlNIZWFwLCBET01T
dG9yYWdlIGFuZCBIZWFwUHJvZmlsZXIgZGF0YSB3ZXJlIGNvdW50ZWQgbWFudWFsbHkuCisgICAg
ICAgIE5vdyB3ZSBjb3VudCB0aGUgc2l6ZXMgbW9yZSBnZW5lcmljIHdheS4KKworICAgICAgICAq
IGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBkb20vV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZU1lbW9yeVR5cGVz
KTogbmV3IHN0cmluZyBpZGVudGlmaWVycyB3ZXJlIGFkZGVkIGZvciBJbnNwZWN0b3IncyBkYXRh
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlOjpJbnNwZWN0b3JCYXNlQWdlbnRJ
bnRlcmZhY2UpOiBjb21tb24gZGF0YSBtZW1iZXJzIHdlcmUgbW92ZWQgZnJvbSB0ZW1wbGF0ZSB0
byBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJm
YWNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50YXRpb24gd2FzIGFkZGVkIHRv
IHRoZSBiYXNlIHRlbXBsYXRlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSk6IGRpdHRvCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYXNlQWdlbnQ6Okluc3BlY3RvckJhc2VBZ2VudCk6IGRp
dHRvCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBOTUkg
aW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBOTUkgaW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRl
ZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50YXRpb24gd2FzIGFkZGVkIHRvIHRoZSBjbGFz
cy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlcG9ydEpTSGVhcEluZm8pOiB0aGVzZSBtZXRob2RzIG5vdyB1c2UgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uIGZvciByZXBvcnRpbmcgdGhlIHNpemUgb2YgdW5kZXJseWluZyBkYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6cmVwb3J0UmVuZGVyVHJlZUluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sbGVjdERvbVRyZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6IE5NSSBpbnN0cnVtZW50
YXRpb24gd2FzIGFkZGVkIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOiBOTUkgaW5zdHJ1bWVudGF0
aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUlu
c3RydW1lbnRhdGlvbkltcGwuY3BwOiBhbGxvY2F0ZWRPYmplY3RzIG1hcCB3YXMgY29udmVydGVk
IGZyb20gSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24g
bG9jYWwgdmFyaWFibGUgdG8gbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y2hlY2tDb3VudGVkT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydE1lbW9y
eVVzYWdlKTogTk1JIGluc3RydW1lbnRhdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGNsYXNzLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cmVwb3J0TWVtb3J5VXNh
Z2UpOiBOTUkgaW5zdHJ1bWVudGF0aW9uIHdhcyBhZGRlZCB0byB0aGUgY2xhc3MuCisgICAgICAg
ICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6Ok1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xp
ZW50SW1wbDo6YWxsb2NhdGVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnRJbXBsOjpjaGVja0luc3RydW1lbnRlZE9iamVjdHMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeUJhckNoYXJ0LnByb3RvdHlwZS5f
dXBkYXRlVmlldyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKTogTk1JIGluc3RydW1lbnRhdGlvbiB3YXMgYWRkZWQg
dG8gdGhlIGNsYXNzLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDEyLTEwLTEyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUkgcmVtb3ZlIGhhbmQgbWFkZSBvYmplY3QgYnVpbGRlcnMgd2l0aCBhdXRvbWF0aWMg
YnVpbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMzY3ZTJi
YzZjMzI1MDJkY2MyY2QwZDhiZjk5MmYyZmNjMDRjMWY1OC4uMGI3YzIxNzMxZDQzZTExYzFjNTYw
ZDQ3NWEwM2EwMjgxNjU1MWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTEwMiw4ICsxMDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHByb2Nlc3NEZWZlcnJlZElu
c3RydW1lbnRlZFBvaW50ZXJzKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
dGFpbmVyPiBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29udGFp
bmVyJiwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLQogcHJvdGVjdGVkOgogICAgIGNsYXNz
IEluc3RydW1lbnRlZFBvaW50ZXJCYXNlIHsKICAgICBwdWJsaWM6CkBAIC0yNjAsMTIgKzI1OCw2
IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRMaXN0SGFzaFNldChjb25zdCBMaXN0
SGFzaFNldFR5cGUmIGhhc2hTZXQsIE1lbW9yCiAgICAgY291bnRPYmplY3RTaXplKG93bmVyT2Jq
ZWN0VHlwZSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4KLXNpemVf
dCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmNhbGN1bGF0ZUNvbnRhaW5lclNpemUoY29uc3QgQ29u
dGFpbmVyJiBjb250YWluZXIsIGJvb2wgY29udGVudE9ubHkpCi17Ci0gICAgcmV0dXJuIChjb250
ZW50T25seSA/IDAgOiBzaXplb2YoY29udGFpbmVyKSkgKyBjb250YWluZXIuY2FwYWNpdHkoKSAq
IHNpemVvZih0eXBlbmFtZSBDb250YWluZXI6OlZhbHVlVHlwZSk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVudGVkUG9pbnRl
cjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlv
bikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblNl
cXVlbmNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TZXF1ZW5jZS5o
CmluZGV4IDY0ZTg4OTg3YThiNjMxNWYwMTAzMzgyYmFmMzA1NTkxNDg0M2UyYTEuLmJiZjIwNGM0
Nzg1Njk3ODYzMzRkZWUxNTVmNmU2ZTMzYjQwMTBjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblNlcXVlbmNlLmgKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uU2VxdWVuY2UuaApAQCAtNTksNiArNTksMTQgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgU2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8Y2hhcio+IHsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgST4gc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
SSwgSSwgTWVtb3J5Q2xhc3NJbmZvJikgeyB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBTZXF1
ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czxjb25zdCBjaGFyKj4geworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJPiBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShJLCBJLCBNZW1v
cnlDbGFzc0luZm8mKSB7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNlcXVlbmNlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVHJhaXRzPGNvbnN0IHZvaWQqPiB7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEk+IHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKEksIEksIE1lbW9yeUNsYXNzSW5m
byYpIHsgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBJPiB2
b2lkIHJlcG9ydFNlcXVlbmNlTWVtb3J5VXNhZ2UoSSBiZWdpbiwgSSBlbmQsIE1lbW9yeUNsYXNz
SW5mbyYgaW5mbykKIHsKICAgICAvLyBDaGVjayBpZiB0eXBlIGlzIGNvbnZlcnRpYmxlIHRvIGlu
dGVnZXIgdG8gaGFuZGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGVudW0gdmFsdWVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDZlZGM1Mzk3OThkMjUxMWY1MjlkOTNiYWFjYzJiMmEzM2Q5MWM5MTkuLmNkNDY5ODA3MDRkZmE3
ZGU5NDBiZmFjMzZlYTQ2NjZmMGViODM2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBl
czo6UGFnZSA9ICJQYWdlIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpE
T00gPSAiUGFnZS5ET00iOwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNT
UyA9ICJQYWdlLkNTUyI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6Qmlu
ZGluZyA9ICJQYWdlLkJpbmRpbmciOwpAQCAtNTEsNCArNTIsMjEgQEAgTWVtb3J5T2JqZWN0VHlw
ZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlWFNMVCA9ICJNZW1vcnlDYWNoZS5Y
U0xUIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbFN0cmlu
Z3MgPSAiSlNFeHRlcm5hbFJlc291cmNlcy5TdHJpbmdzIjsKIE1lbW9yeU9iamVjdFR5cGUgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbEFycmF5cyA9ICJKU0V4dGVybmFsUmVzb3VyY2VzLkFy
cmF5cyI7CiAKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3Ig
PSAiV2ViSW5zcGVjdG9yIjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJ
bnNwZWN0b3JDb250cm9sbGVyID0gIldlYkluc3BlY3Rvci5Db250cm9sbGVyIjsKK01lbW9yeU9i
amVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JNZW1vcnlBZ2VudCA9ICJXZWJJ
bnNwZWN0b3IuTWVtb3J5QWdlbnQiOworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlw
ZXM6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA9ICJXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUFn
ZW50IjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2VzID0gIldlYkluc3BlY3Rvci5ET01TdG9yYWdlQWdlbnQuUmVzb3VyY2Vz
IjsKK01lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50ID0gIldlYkluc3BlY3Rvci5Qcm9maWxlckFnZW50IjsKKworTWVtb3J5T2JqZWN0VHlw
ZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVzZWQgPSAiSlNIZWFwLlVzZWQiOworTWVtb3J5
T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVudXNlZCA9ICJKU0hlYXAuVW51
c2VkIjsKKworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTVN0b3JhZ2VD
YWNoZSA9ICJET01TdG9yYWdlQ2FjaGUiOworCitNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1v
cnlUeXBlczo6UmVuZGVyVHJlZVVzZWQgPSAiUmVuZGVyVHJlZS5Vc2VkIjsKK01lbW9yeU9iamVj
dFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2VkID0gIlJlbmRlclRyZWUu
VW51c2VkIjsKKworTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OlByb2Nlc3NQ
cml2YXRlTWVtb3J5ID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggMGJjZjA5ZGRlOTVhZmEyZWRiYzk0NWU0YzRkN2Y4ZWU0ZDAxYTA1Yi4u
ODBkM2NhYmRiNjcyYzQxMDQ0ZGExYjFhYmJkZTA1NDJmOTZiOTlhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC00MSw2ICs0
MSw3IEBAIHVzaW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKIAogY2xhc3MgV2ViQ29yZU1lbW9y
eVR5cGVzIDogcHVibGljIFBsYXRmb3JtTWVtb3J5VHlwZXMgewogcHVibGljOgorICAgIHN0YXRp
YyBNZW1vcnlPYmplY3RUeXBlIFBhZ2U7CiAgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRE9N
OwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENTUzsKICAgICBzdGF0aWMgTWVtb3J5T2Jq
ZWN0VHlwZSBCaW5kaW5nOwpAQCAtNTgsNiArNTksMjMgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgRXh0ZXJuYWxTdHJpbmdzOwogICAgIHN0YXRpYyBNZW1vcnlPYmpl
Y3RUeXBlIEV4dGVybmFsQXJyYXlzOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5z
cGVjdG9yOworICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEluc3BlY3RvckNvbnRyb2xsZXI7
CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yTWVtb3J5QWdlbnQ7CisgICAg
c3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZXM7CisgICAg
c3RhdGljIE1lbW9yeU9iamVjdFR5cGUgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKKworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIEpTSGVhcFVzZWQ7CisgICAgc3RhdGljIE1lbW9yeU9iamVj
dFR5cGUgSlNIZWFwVW51c2VkOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRE9NU3Rv
cmFnZUNhY2hlOworCisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgUmVuZGVyVHJlZVVzZWQ7
CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgUmVuZGVyVHJlZVVudXNlZDsKKworICAgIHN0
YXRpYyBNZW1vcnlPYmplY3RUeXBlIFByb2Nlc3NQcml2YXRlTWVtb3J5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFzZUFnZW50LmNwcAppbmRleCBmM2ZkOTJiM2FmM2Y4ZWU1NDFkYzgxM2RlMGUwZWMzYTQyYzM5
NmRjLi5mZmE5NTU1ZDRhMmJhOWU3N2U4MmM3NTZiNGNiYWRhNjM2NmFiYjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmNwcApAQCAtMzQsMTAg
KzM0LDE0IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKIAorI2luY2x1ZGUg
IldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U6Okluc3BlY3RvckJhc2VBZ2VudEludGVyZmFj
ZShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKK0luc3BlY3RvckJhc2VB
Z2VudEludGVyZmFjZTo6SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIGluc3BlY3RvclN0YXRlKQorICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgLCBtX3N0YXRlKGluc3BlY3RvclN0YXRlKQorICAgICwgbV9u
YW1lKG5hbWUpCiB7CiB9CiAKQEAgLTQ1LDYgKzQ5LDE0IEBAIEluc3BlY3RvckJhc2VBZ2VudElu
dGVyZmFjZTo6fkluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZSgpCiB7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsK
KyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9p
bnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1fc3RhdGUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCmluZGV4
IDgwMGY5NjczNmE4Zjg2OGI3NDIyZGU1Y2YwMDA5YjQwYTJjMTAyZjEuLjg0OTc2M2ZhNWNlMzEx
OTNhNzZjYzI0YWViNWNjZWNhZjAyZTZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgSW5zcGVj
dG9yQmFzZUFnZW50X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIAogY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2UoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICBJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2UoY29uc3QgU3Ry
aW5nJiwgSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKSB7IH0KQEAgLTUzLDYgKzU0LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CiAKICAgICBTdHJpbmcgbmFt
ZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEluc3RydW1l
bnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBJbnNwZWN0b3JTdGF0ZSog
bV9zdGF0ZTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKQEAgLTY5LDE0ICs3
Nyw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25z
dCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JCYXNl
QWdlbnRJbnRlcmZhY2UobmFtZSkKLSAgICAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5z
dHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgLCBtX3N0YXRlKGluc3BlY3RvclN0YXRlKQorICAg
ICAgICA6IEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZShuYW1lLCBpbnN0cnVtZW50aW5nQWdl
bnRzLCBpbnNwZWN0b3JTdGF0ZSkKICAgICB7CiAgICAgfQotCi0gICAgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwotICAgIEluc3BlY3RvclN0YXRlKiBtX3N0YXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDYwOTU1MTlhM2JiYjMzMTA4Mjli
MDVlNGE0MzE3NWZhZDJjOGFlYTguLjhiYWQ3Y2MwYzZiN2RkNzBhMzg5NjIzYzZlNTBiOTVkNDc2
NjcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTcxLDYgKzcxLDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRh
dGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTQsNyArMTE2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAg
ICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgp
LCBtX3N0YXRlLmdldCgpKSk7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9y
YWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxlYXNlKCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgaW5z
cGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UsIGRvbVN0b3JhZ2VBZ2VudCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdldCgpLCBtX3Bh
Z2UpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX3N0YXRlLmdldCgpLCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLAogICAgICAgIGluc3BlY3RvckNs
aWVudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBh
Z2VBZ2VudCkpOwpAQCAtMzgwLDYgKzM4MiwzMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhpbnQgbWF4aW11bVJlcwog
ICAgIG1fcmVzb3VyY2VBZ2VudC0+c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJu
YWxzKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpJbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3Rv
ckFnZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3RydW1lbnRpbmdBZ2VudHMpOworICAg
IGluZm8uYWRkTWVtYmVyKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX3N0YXRlKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX292ZXJsYXkpOworCisgICAgaW5m
by5hZGRNZW1iZXIobV9pbnNwZWN0b3JBZ2VudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kb21B
Z2VudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZUFnZW50KTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX3BhZ2VBZ2VudCk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisg
ICAgaW5mby5hZGRNZW1iZXIobV9kZWJ1Z2dlckFnZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X3Byb2ZpbGVyQWdlbnQpOworI2VuZGlmCisKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckZyb250ZW5kKTsKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1faW5zcGVjdG9y
Q2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2FnZW50cyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MmEyNjM4YzZlODdj
ZmM5NDk5MTNhZjFhY2U4MTM0ZGVhMzczYzllLi4yZTg5MDkyZTIwYmM3NDA5YmE3MTEyYTJkZTVj
ZGQyNGQ3M2M0ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTExNCw2ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsg
fQogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlQWdlbnQ7IH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIElu
c3BlY3RvckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGMzMmVhMjk4NzZkZDllZTE3YmMyZTYx
ZTBkN2U2ODcwNmExMjUzNzcuLjQxYzI3ODFjMWNiYTQzNjBmYTVmNzk5NzJlNWQxMDZkYzNiNmI2
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZS5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC0yMTQsMTUgKzIxNSwxNCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogICAgIG1fcmVzb3VyY2VzLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Om1lbW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNh
Y2hlKCkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIHNp
emVfdCBzaXplID0gMDsKLSAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7
ICsraXQpCi0gICAgICAgIHNpemUgKz0gaXQtPnZhbHVlLT5zdG9yYWdlQXJlYSgpLT5tZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCk7Ci0gICAgcmV0dXJuIHNpemU7CisgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOworICAgIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBp
bmZvLmFkZE1lbWJlcihtX3Jlc291cmNlcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9mcm9udGVu
ZCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaAppbmRleCBhNGY4N2IwZTZmODVkZmU0NWU2ZjYxMDI5ZmE1ZDJkZjZkMTIz
ODJhLi4xODIyYzZhYjA5NGU3Zjk0NzkwNTFhMTNmMjNhYThiMTU1YjhmMGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBA
IC03OCw4ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFVzZURPTVN0b3JhZ2UoU3RvcmFn
ZUFyZWEqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwogICAgIHZvaWQgZGlkRGlzcGF0
Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbios
IFBhZ2UqKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvck1lbW9yeUFnZW50Ci0gICAg
c2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNhY2hlKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklE
RTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4IGY3YTgzNjhm
ZDgyYjY3NjNlOTllYmY5Nzg5MzA4Zjc4NTg3OWZiYTMuLjAyOWUzOTIyOGVlMGYxNWU0ZGNlMDcw
M2M0ZTBmMWIzZDljOTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBAIC04NSw2ICs4NSwxNiBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6dW5iaW5kKCkKICAgICBtX2Zyb250ZW5k
ID0gMDsKIH0KIAordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3N0b3JhZ2VBcmVhKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX2Zyb250ZW5kKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2lkKTsKKyAgICBp
bmZvLmFkZFByaXZhdGVCdWZmZXIobV9zdG9yYWdlQXJlYS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNo
ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuaAppbmRleCBhYzA1OWNiYThkYzNlZWRiZmEzMzE1OTQ4YjE5Mjg1
N2QwYzk1NWFkLi4xMGQ0NmQ3NTBmYWE3NjY2Y2FjNjRmMmQyNjhlNTY3ZWQyNGJiNzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlQXJlYSogc3Rv
cmFnZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhLmdldCgpOyB9CiAgICAgRnJh
bWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQogCisgICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSwgRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNDFhZDg0M2I0MjRlNDk3N2NmY2NlMDlkZDgxNjEw
MDMyYTQ2MzFlNS4uYzlkMjFjNzQ3NmM2MmNhYzJlZjc4YzJlOWFhYjlmODE0MzdlMjg3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CkBAIC03NSwyMCArNzUsNiBAQCB0eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBNZW1vcnlCbG9ja05hbWUgewotc3RhdGljIGNvbnN0IGNo
YXIganNIZWFwQWxsb2NhdGVkW10gPSAiSlNIZWFwQWxsb2NhdGVkIjsKLXN0YXRpYyBjb25zdCBj
aGFyIGpzSGVhcFVzZWRbXSA9ICJKU0hlYXBVc2VkIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3BlY3Rv
ckRPTURhdGFbXSA9ICJJbnNwZWN0b3JET01EYXRhIjsKLXN0YXRpYyBjb25zdCBjaGFyIGluc3Bl
Y3RvckpTSGVhcERhdGFbXSA9ICJJbnNwZWN0b3JKU0hlYXBEYXRhIjsKLXN0YXRpYyBjb25zdCBj
aGFyIHByb2Nlc3NQcml2YXRlTWVtb3J5W10gPSAiUHJvY2Vzc1ByaXZhdGVNZW1vcnkiOwotCi1z
dGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNlZFtdID0gIlJlbmRlclRyZWVVc2VkIjsKLXN0
YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxvY2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxsb2Nh
dGVkIjsKLQotc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUNhY2hlW10gPSAiRE9NU3RvcmFn
ZUNhY2hlIjsKLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3MgTWVtb3J5VXNhZ2VTdGF0c0dlbmVy
YXRvciB7CkBAIC0xMzQsMTAgKzEyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdHlw
ZU5hbWUgPSBvYmplY3RUeXBlc1tpbmRleF07CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZSh0
eXBlTmFtZSk7CiAgICAgICAgIGJsb2NrLT5zZXRTaXplKG1fc2l6ZXNNYXAuZ2V0KHR5cGVOYW1l
KSk7CisgICAgICAgIFN0cmluZyBwcmVmaXggPSB0eXBlTmFtZTsKKyAgICAgICAgcHJlZml4LmFw
cGVuZCgnLicpOwogICAgICAgICBhcnJheS0+YWRkSXRlbShibG9jayk7CiAgICAgICAgICsraW5k
ZXg7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuOwotICAg
ICAgICB3aGlsZSAoaW5kZXggPCBvYmplY3RUeXBlcy5zaXplKCkgJiYgb2JqZWN0VHlwZXNbaW5k
ZXhdLnN0YXJ0c1dpdGgodHlwZU5hbWUpKSB7CisgICAgICAgIHdoaWxlIChpbmRleCA8IG9iamVj
dFR5cGVzLnNpemUoKSAmJiBvYmplY3RUeXBlc1tpbmRleF0uc3RhcnRzV2l0aChwcmVmaXgpKSB7
CiAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAgICAgICAgIGNoaWxkcmVuID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2tzOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGluZGV4ID0gYnVp
bGRPYmplY3RGb3JJbmRleChpbmRleCwgb2JqZWN0VHlwZXMsIGNoaWxkcmVuLmdldCgpKTsKQEAg
LTE2NSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFR5cGVOYW1lVG9TaXplTWFwIG1fc2l6ZXNN
YXA7CiB9OwogCi1TdHJpbmcgbm9kZU5hbWUoTm9kZSogbm9kZSkKK3N0YXRpYyBTdHJpbmcgbm9k
ZU5hbWUoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS0+aXNYSFRNTERv
Y3VtZW50KCkpCiAgICAgICAgICByZXR1cm4gbm9kZS0+bm9kZU5hbWUoKTsKQEAgLTQyMCwzOCAr
NDA4LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIE1lbW9yeUNsYXNzSW5mbyogbV9tZW1vcnlD
bGFzc0luZm87CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhQ291bnRlciB7Ci1wdWJsaWM6Ci0g
ICAgdm9pZCBhZGRDb21wb25lbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBzaXplX3Qgc2l6ZSkKLSAg
ICB7Ci0gICAgICAgIG1fY29tcG9uZW50cy5hcHBlbmQoQ29tcG9uZW50SW5mbyhuYW1lLCBzaXpl
KSk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0
YXRpc3RpY3MoKQotICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6Omluc3BlY3RvckRhdGEpOwotICAg
ICAgICBmb3IgKFZlY3RvcjxDb21wb25lbnRJbmZvPjo6aXRlcmF0b3IgaXQgPSBtX2NvbXBvbmVu
dHMuYmVnaW4oKTsgaXQgIT0gbV9jb21wb25lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5zcGVjdG9yTWVtb3J5Qmxv
Y2s6OmNyZWF0ZSgpLnNldE5hbWUoaXQtPm1fbmFtZSk7Ci0gICAgICAgICAgICBibG9jay0+c2V0
U2l6ZShpdC0+bV9zaXplKTsKLSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBpdC0+bV9zaXplOwot
ICAgICAgICB9Ci0gICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFsU2l6ZSk7Ci0gICAgICAgIHJl
dHVybiBibG9jazsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ29tcG9uZW50SW5mbyB7
Ci0gICAgcHVibGljOgotICAgICAgICBDb21wb25lbnRJbmZvKGNvbnN0IFN0cmluZyYgbmFtZSwg
c2l6ZV90IHNpemUpIDogbV9uYW1lKG5hbWUpLCBtX3NpemUoc2l6ZSkgeyB9Ci0KLSAgICAgICAg
Y29uc3QgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgc2l6ZV90IG1fc2l6ZTsKLSAgICB9OwotCi0g
ICAgVmVjdG9yPENvbXBvbmVudEluZm8+IG1fY29tcG9uZW50czsKLX07Ci0KIH0gLy8gbmFtZXNw
YWNlCiAKIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKQpAQCAt
NDc1LDQ0ICs0MzEsMjggQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNv
dW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnIKICAgICBzdHJpbmdzID0g
Y291bnRlclZpc2l0b3Iuc3RyaW5ncygpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4ganNIZWFwSW5mbygpCitzdGF0aWMgdm9pZCByZXBvcnRKU0hlYXBJbmZv
KFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50JiBtZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnQpCiB7CiAgICAgSGVhcEluZm8gaW5mbzsKICAgICBTY3JpcHRHQ0V2ZW50OjpnZXRIZWFw
U2l6ZShpbmZvKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNIZWFwQWxs
b2NhdGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5Qmxv
Y2tOYW1lOjpqc0hlYXBBbGxvY2F0ZWQpOwotICAgIGpzSGVhcEFsbG9jYXRlZC0+c2V0U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGluZm8udG90YWxKU0hlYXBTaXplKSk7Ci0KLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gSW5zcGVj
dG9yTWVtb3J5QmxvY2tzOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGpzSGVhcFVzZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShN
ZW1vcnlCbG9ja05hbWU6OmpzSGVhcFVzZWQpOwotICAgIGpzSGVhcFVzZWQtPnNldFNpemUoc3Rh
dGljX2Nhc3Q8aW50PihpbmZvLnVzZWRKU0hlYXBTaXplKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0
ZW0oanNIZWFwVXNlZCk7Ci0KLSAgICBqc0hlYXBBbGxvY2F0ZWQtPnNldENoaWxkcmVuKGNoaWxk
cmVuKTsKLSAgICByZXR1cm4ganNIZWFwQWxsb2NhdGVkLnJlbGVhc2UoKTsKKyAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQuY291bnRPYmplY3RTaXplKFdlYkNvcmVNZW1vcnlUeXBlczo6
SlNIZWFwVXNlZCwgaW5mby51c2VkSlNIZWFwU2l6ZSk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6ZShXZWJDb3JlTWVtb3J5VHlwZXM6OkpTSGVhcFVudXNl
ZCwgaW5mby50b3RhbEpTSGVhcFNpemUgLSBpbmZvLnVzZWRKU0hlYXBTaXplKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlbmRlclRyZWVJbmZvKFBhZ2Uq
IHBhZ2UpCitzdGF0aWMgdm9pZCByZXBvcnRSZW5kZXJUcmVlSW5mbyhXVEY6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbkNsaWVudCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LCBQYWdlKiBwYWdl
KQogewogICAgIEFyZW5hU2l6ZSBhcmVuYVNpemUgPSBwYWdlLT5yZW5kZXJUcmVlU2l6ZSgpOwog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVlQWxsb2NhdGVkID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpy
ZW5kZXJUcmVlQWxsb2NhdGVkKTsKLSAgICByZW5kZXJUcmVlQWxsb2NhdGVkLT5zZXRTaXplKGFy
ZW5hU2l6ZS5hbGxvY2F0ZWQpOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4g
Y2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZVVzZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OnJlbmRlclRyZWVVc2VkKTsKLSAg
ICByZW5kZXJUcmVlVXNlZC0+c2V0U2l6ZShhcmVuYVNpemUudHJlZVNpemUpOwotICAgIGNoaWxk
cmVuLT5hZGRJdGVtKHJlbmRlclRyZWVVc2VkKTsKLQotICAgIHJlbmRlclRyZWVBbGxvY2F0ZWQt
PnNldENoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5y
ZWxlYXNlKCk7CisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50T2JqZWN0U2l6
ZShXZWJDb3JlTWVtb3J5VHlwZXM6OlJlbmRlclRyZWVVc2VkLCBhcmVuYVNpemUudHJlZVNpemUp
OworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudE9iamVjdFNpemUoV2ViQ29y
ZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2VkLCBhcmVuYVNpemUuYWxsb2NhdGVkIC0gYXJl
bmFTaXplLnRyZWVTaXplKTsKIH0KIAogbmFtZXNwYWNlIHsKIAogY2xhc3MgRE9NVHJlZXNJdGVy
YXRvciA6IHB1YmxpYyBOb2RlV3JhcHBlclZpc2l0b3IgewogcHVibGljOgotICAgIERPTVRyZWVz
SXRlcmF0b3IoUGFnZSogcGFnZSwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCYgbWVtb3J5SW5z
dHJ1bWVudGF0aW9uKQorICAgIERPTVRyZWVzSXRlcmF0b3IoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFn
ZShwYWdlKQogICAgICAgICAsIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1l
bnRhdGlvbikKICAgICB7CkBAIC01NDksNyArNDg5LDcgQEAgcHJpdmF0ZToKIAogfQogCi1zdGF0
aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8oUGFnZSogcGFnZSwgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorc3RhdGljIHZvaWQgY29sbGVjdERvbVRy
ZWVJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwmIG1lbW9yeUluc3RydW1lbnRhdGlvbiwg
UGFnZSogcGFnZSkKIHsKICAgICBFeHRlcm5hbFN0cmluZ3NSb290IHN0cmluZ3NSb290OwogICAg
IG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KHN0cmluZ3NSb290KTsKQEAgLTU1
Nyw3ICs0OTcsNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RG9tVHJlZUluZm8oUGFnZSogcGFnZSwg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCYgbWVtb3J5SW5zdAogICAgIEV4dGVybmFsQXJyYXlz
Um9vdCBhcnJheXNSb290OwogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0
KGFycmF5c1Jvb3QpOwogCi0gICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBh
Z2UsIG1lbW9yeUluc3RydW1lbnRhdGlvbik7CisgICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVl
c0l0ZXJhdG9yKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgcGFnZSk7CiAKICAgICBTY3JpcHRQcm9m
aWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOwogCkBAIC01ODQsMzUg
KzUyNCwyNyBAQCBzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbgogICAgIH0KIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBET01TdG9yYWdlQ2FjaGUoc2l6ZV90
IGNhY2hlU2l6ZSkKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVN0b3Jh
Z2VDYWNoZSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJs
b2NrTmFtZTo6ZG9tU3RvcmFnZUNhY2hlKTsKLSAgICBkb21TdG9yYWdlQ2FjaGUtPnNldFNpemUo
Y2FjaGVTaXplKTsKLSAgICByZXR1cm4gZG9tU3RvcmFnZUNhY2hlOwotfQotCiB2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKLSAgICBw
cm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVt
b3J5QmxvY2tOYW1lOjpwcm9jZXNzUHJpdmF0ZU1lbW9yeSk7Ci0KLSAgICBJbnNwZWN0b3JEYXRh
Q291bnRlciBpbnNwZWN0b3JEYXRhOwotICAgIGluc3BlY3RvckRhdGEuYWRkQ29tcG9uZW50KE1l
bW9yeUJsb2NrTmFtZTo6aW5zcGVjdG9ySlNIZWFwRGF0YSwgU2NyaXB0UHJvZmlsZXI6OnByb2Zp
bGVyU25hcHNob3RzU2l6ZSgpKTsKLQotICAgIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IGFsbG9jYXRl
ZE9iamVjdHM7Ci0gICAgbV9pbnNwZWN0b3JDbGllbnQtPmdldEFsbG9jYXRlZE9iamVjdHMoYWxs
b2NhdGVkT2JqZWN0cyk7Ci0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCBtZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQoYWxsb2NhdGVkT2JqZWN0cy5pc0VtcHR5KCkgPyAwIDog
JmFsbG9jYXRlZE9iamVjdHMpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50OworICAgIG1faW5zcGVjdG9yQ2xpZW50LT5nZXRB
bGxvY2F0ZWRPYmplY3RzKG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5hbGxvY2F0ZWRPYmpl
Y3RzKCkpOwogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgbWVtb3J5SW5zdHJ1bWVudGF0
aW9uKCZtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOwogCisgICAgcmVwb3J0SlNIZWFwSW5m
byhtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQpOworICAgIHJlcG9ydFJlbmRlclRyZWVJbmZv
KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCwgbV9wYWdlKTsKKyAgICBjb2xsZWN0RG9tVHJl
ZUluZm8obWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBtX3BhZ2UpOyAvLyBGSVhNRTogY29sbGVjdCBm
b3IgYWxsIHBhZ2VzPworCiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRy
ZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwotICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGpzSGVhcEluZm8oKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8o
bV9wYWdlKSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/Ci0gICAgY29sbGVjdERv
bVRyZWVJbmZvKG1fcGFnZSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsgLy8gRklYTUU6IGNvbGxl
Y3QgZm9yIGFsbCBwYWdlcz8KLSAgICBjaGlsZHJlbi0+YWRkSXRlbShkdW1wRE9NU3RvcmFnZUNh
Y2hlKG1fZG9tU3RvcmFnZUFnZW50LT5tZW1vcnlCeXRlc1VzZWRCeVN0b3JhZ2VDYWNoZSgpKSk7
CiAgICAgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhjaGlsZHJlbik7CisKKyAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdCh0aGlzKTsKKyAgICBtZW1vcnlJbnN0cnVtZW50
YXRpb24uYWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb24pOworICAgIG1lbW9yeUlu
c3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7
CisKICAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yIHN0YXRzR2VuZXJhdG9yKCZtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQpOwogICAgIHN0YXRzR2VuZXJhdG9yLmR1bXAoY2hpbGRyZW4u
Z2V0KCkpOwotICAgIGluc3BlY3RvckRhdGEuYWRkQ29tcG9uZW50KE1lbW9yeUJsb2NrTmFtZTo6
aW5zcGVjdG9yRE9NRGF0YSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LnNlbGZTaXplKCkg
KyBtZW1vcnlJbnN0cnVtZW50YXRpb24uc2VsZlNpemUoKSk7Ci0gICAgY2hpbGRyZW4tPmFkZEl0
ZW0oaW5zcGVjdG9yRGF0YS5kdW1wU3RhdGlzdGljcygpKTsKKworICAgIHByb2Nlc3NNZW1vcnkg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlw
ZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CiAKICAgICBzaXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKQEAgLTYyMSwxMSAr
NTUzLDE4IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgcHJvY2Vzc01lbW9yeS0+c2V0
U2l6ZShwcml2YXRlQnl0ZXMpOwogfQogCi1JbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCit2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsKKyAgICBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2luc3BlY3RvckNsaWVudCk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9wYWdlKTsKK30KKworSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Oklu
c3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2Uq
IHBhZ2UpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KCJN
ZW1vcnkiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKICAgICAsIG1faW5zcGVjdG9yQ2xp
ZW50KGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQotICAgICwgbV9kb21TdG9yYWdlQWdlbnQo
ZG9tU3RvcmFnZUFnZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDMxZDViYzRlZDZhMmM3NzgzNDdiM2UzN2ExZjY1
ZWE3MDdkODVlODcuLjYxZjExNTgwYzA3MWViYjUzNWU4NzA3MWQ0N2VmYzcxZTJlYWI3MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBA
IC01MiwyMSArNTIsMjIgQEAgY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PiwgcHUKIHB1YmxpYzoKICAgICB0
eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPiA+IEluc3Bl
Y3RvckFnZW50czsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlLCBQYWdlKiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIHN0YXRl
LCBwYWdlLCBkb21TdG9yYWdlQWdlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIHN0YXRlLCBw
YWdlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3JvdXBz
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmluZ3Mp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrPiYgcHJvY2Vzc01l
bW9yeSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgotICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2Uq
LCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBQ
YWdlKik7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIFBh
Z2UqIG1fcGFnZTsKLSAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFn
ZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDY0YjM2MmU4Y2Iz
MDZkMDhmMjY4OWEyOGIyZTJhYmRjMjBkMzhlMGEuLmJlZDQxY2Q0NGE4YTM4ODA5MDBjMDE3Nzhl
MmU3NzkwMWMwMjE0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KQEAgLTQ4Miw2ICs0
ODMsMTkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAqaGVhcFNuYXBzaG90T2JqZWN0
SWQgPSBTdHJpbmc6Om51bWJlcihpZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQpOworICAgIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxlckFnZW50Pjo6cmVwb3J0TWVtb3J5VXNhZ2Uo
bWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jb25zb2xlQWdlbnQpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2Zyb250ZW5kKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Byb2ZpbGVzKTsKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX3NuYXBzaG90cyk7CisKKyAgICBpbmZvLmFkZFByaXZhdGVCdWZm
ZXIoU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVyU25hcHNob3RzU2l6ZSgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCBkNTQ4YmJmYTQ5YzViZDkxYzM1Yzg5NzNmZmE5
NjBkNDMxN2Y4YWZlLi44MjNiN2U2ZjBiODVjM2EzNDk5ZWE3ZWE0MTk1ZWM2YTY0YjI2MjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVj
dEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RP
YmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhl
YXBTbmFwc2hvdE9iamVjdElkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBJ
bnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogICAg
IHZpcnR1YWwgdm9pZCBzdGFydFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbC5jcHAKaW5kZXggMTRkYWJlYTJlNTZjYmFhNjZjYzJmZWNhYzgxZjFhZjExZjJiNWZkMC4u
ZTkzZDY2ZjRmYWNkYzA0YjliOWUwNTYxMGZkOTQwZjBjYTExNmFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApA
QCAtMzMsNyArMzMsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRp
b25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTcxLDcgKzc2LDcgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnRJbXBsOjpjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCogb2JqZWN0KQogewogICAg
IGlmICghY2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAoIW1fYWxsb2NhdGVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgeworICAgIGlmICghbV9h
bGxvY2F0ZWRPYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgKyttX3RvdGFsT2Jq
ZWN0c05vdEluQWxsb2NhdGVkU2V0OwogI2lmIDAKICAgICAgICAgcHJpbnRmKCJGb3VuZCB1bmtu
b3duIG9iamVjdCByZWZlcmVuY2VkIGJ5IHBvaW50ZXI6ICVwXG4iLCBvYmplY3QpOwpAQCAtODAs
NiArODUsMTQgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpjaGVja0Nv
dW50ZWRPYmplY3QoY29uc3Qgdm9pZCogb2JqZWN0KQogICAgIH0KIH0KIAordm9pZCBNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVt
b3J5QWdlbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdG90YWxTaXplcyk7CisgICAgaW5mby5h
ZGRNZW1iZXIobV92aXNpdGVkT2JqZWN0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9hbGxvY2F0
ZWRPYmplY3RzKTsKK30KKwogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsOjpwcm9jZXNz
RGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygpCiB7CiAgICAgd2hpbGUgKCFtX2RlZmVycmVk
SW5zdHJ1bWVudGVkUG9pbnRlcnMuaXNFbXB0eSgpKSB7CkBAIC05NCwxMSArMTA3LDEzIEBAIHZv
aWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6ZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBh
c3NPd25QdHI8SW5zdHJ1bWVudGVkCiAgICAgbV9kZWZlcnJlZEluc3RydW1lbnRlZFBvaW50ZXJz
LmFwcGVuZChwb2ludGVyKTsKIH0KIAotc2l6ZV90IE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGw6
OnNlbGZTaXplKCkgY29uc3QKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbDo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
LSAgICByZXR1cm4gY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShtX2RlZmVycmVkSW5zdHJ1bWVudGVk
UG9pbnRlcnMpOworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fZGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycyk7CiB9CiAKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCmlu
ZGV4IDQwZTI1ZTc3NTFiYzdmMzlkODAzNzhhZjIyZTBmZGU5MzI0YTAxODMuLjhhZjhkNjBjNWQ3
ZDIzNTYxZDIxMTkzY2QzZTc3YmExOTU2ZDgwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaApAQCAtNDgsOSArNDgsOCBA
QCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IFR5cGVOYW1lVG9TaXplTWFwOwogCiBj
bGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsIDogcHVibGljIFdURjo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnRJbXBsKFZpc2l0ZWRPYmplY3RzKiBhbGxvY2F0ZWRPYmplY3RzKQot
ICAgICAgICA6IG1fYWxsb2NhdGVkT2JqZWN0cyhhbGxvY2F0ZWRPYmplY3RzKQotICAgICAgICAs
IG1fdG90YWxDb3VudGVkT2JqZWN0cygwKQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVu
dEltcGwoKQorICAgICAgICA6IG1fdG90YWxDb3VudGVkT2JqZWN0cygwKQogICAgICAgICAsIG1f
dG90YWxPYmplY3RzTm90SW5BbGxvY2F0ZWRTZXQoMCkKICAgICB7IH0KIApAQCAtNjgsMTUgKzY3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfQogCi0gICAgc2l6ZV90
IHNlbGZTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Zpc2l0ZWRPYmplY3Rz
LmNhcGFjaXR5KCkgKiBzaXplb2YoVmlzaXRlZE9iamVjdHM6OlZhbHVlVHlwZSkgKwotICAgICAg
ICAgICAgbV90b3RhbFNpemVzLmNhcGFjaXR5KCkgKiBzaXplb2YoVHlwZVRvU2l6ZU1hcDo6VmFs
dWVUeXBlKTsKLSAgICB9Ci0KICAgICBUeXBlTmFtZVRvU2l6ZU1hcCBzaXplc01hcCgpIGNvbnN0
OworICAgIFZpc2l0ZWRPYmplY3RzJiBhbGxvY2F0ZWRPYmplY3RzKCkgeyByZXR1cm4gbV9hbGxv
Y2F0ZWRPYmplY3RzOyB9CiAKLSAgICBib29sIGNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkT2JqZWN0czsgfQorICAgIGJvb2wgY2hlY2tJbnN0cnVt
ZW50ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gIW1fYWxsb2NhdGVkT2JqZWN0cy5pc0VtcHR5
KCk7IH0KICAgICBzaXplX3QgdmlzaXRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0
ZWRPYmplY3RzLnNpemUoKTsgfQogICAgIHNpemVfdCB0b3RhbENvdW50ZWRPYmplY3RzKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbENvdW50ZWRPYmplY3RzOyB9CiAgICAgc2l6ZV90IHRvdGFsT2Jq
ZWN0c05vdEluQWxsb2NhdGVkU2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE9iamVjdHNOb3RJ
bkFsbG9jYXRlZFNldDsgfQpAQCAtODUsMTEgKzc5LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNo
ZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8TWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90PiBUeXBlVG9TaXplTWFwOwog
ICAgIFR5cGVUb1NpemVNYXAgbV90b3RhbFNpemVzOwogICAgIFZpc2l0ZWRPYmplY3RzIG1fdmlz
aXRlZE9iamVjdHM7Ci0gICAgY29uc3QgVmlzaXRlZE9iamVjdHMqIG1fYWxsb2NhdGVkT2JqZWN0
czsKKyAgICBWaXNpdGVkT2JqZWN0cyBtX2FsbG9jYXRlZE9iamVjdHM7CiAgICAgc2l6ZV90IG1f
dG90YWxDb3VudGVkT2JqZWN0czsKICAgICBzaXplX3QgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9j
YXRlZFNldDsKIH07CkBAIC0xMDMsNiArOTksOCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3Qgc2Vs
ZlNpemUoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZWZlckluc3RydW1l
bnRlZFBvaW50ZXIoUGFzc093blB0cjxJbnN0cnVtZW50ZWRQb2ludGVyQmFzZT4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGVmZXJyZWRJbnN0cnVtZW50ZWRQb2ludGVycygp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwppbmRleCA1NzgzMzBmNDM3Zjhm
NTNlMjg3NGRlNGM1Y2MxODkxY2Q3ZWI5MDQ3Li4xYzBjYjY3ZmRjOTk5YWE5OWE1ZWRjZmJmN2U5
YjEyNzQ0MzgwY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwpAQCAtMjE5LDE3ICsy
MTksMTcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxp
emUgPSBmdW5jdGlvbigpCiAgICAgYWRkQmxvY2soImhzbCggIDAsICAwJSwgIDgwJSkiLCAiT3du
ZXJzVHlwZVBsYWNlaG9sZGVyIiwgIk93bmVyc1R5cGVQbGFjZWhvbGRlciIpOwogICAgIGFkZEJs
b2NrKCJoc2woICAwLCAgMCUsICA4MCUpIiwgIk90aGVyIiwgIk90aGVyIik7CiAgICAgYWRkQmxv
Y2soImhzbCgzMDAsIDMwJSwgIDgwJSkiLCAiUGFnZSIsICJQYWdlJ3Mgc3RydWN0dXJlcyIpOwot
ICAgIGFkZEJsb2NrKCJoc2woIDkwLCA2MCUsICA4MCUpIiwgIkpTSGVhcEFsbG9jYXRlZCIsICJK
YXZhU2NyaXB0IGhlYXAiKTsKLSAgICBhZGRCbG9jaygiaHNsKCA5MCwgODAlLCAgODAlKSIsICJK
U0hlYXBVc2VkIiwgIlVzZWQgSmF2YVNjcmlwdCBoZWFwIik7CisgICAgYWRkQmxvY2soImhzbCgg
OTAsIDYwJSwgIDgwJSkiLCAiSlNIZWFwIiwgIkphdmFTY3JpcHQgaGVhcCIpOworICAgIGFkZEJs
b2NrKCJoc2woIDkwLCA4MCUsICA4MCUpIiwgIkpTSGVhcC5Vc2VkIiwgIlVzZWQgSmF2YVNjcmlw
dCBoZWFwIik7CiAgICAgYWRkQmxvY2soImhzbCggOTAsIDMwJSwgIDgwJSkiLCAiSlNFeHRlcm5h
bFJlc291cmNlcyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIpOwogICAgIGFkZEJs
b2NrKCJoc2woIDkwLCA0MCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxBcnJheXMiLCAiSmF2YVNjcmlw
dCBleHRlcm5hbCBhcnJheXMiKTsKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgNTAlLCAgODAlKSIs
ICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHN0cmluZ3MiKTsKLSAg
ICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JEYXRhIiwgIkluc3Bl
Y3RvciBkYXRhIik7CisgICAgYWRkQmxvY2soImhzbCgyMTAsIDYwJSwgIDgwJSkiLCAiV2ViSW5z
cGVjdG9yIiwgIkluc3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwg
IDgwJSkiLCAiTWVtb3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAgIGFk
ZEJsb2NrKCJoc2woIDQwLCA2MCUsICA4MCUpIiwgIkdseXBoQ2FjaGUiLCAiR2x5cGggY2FjaGUg
cmVzb3VyY2VzIik7CiAgICAgYWRkQmxvY2soImhzbCggMzUsIDYwJSwgIDgwJSkiLCAiRE9NU3Rv
cmFnZUNhY2hlIiwgIkRPTSBzdG9yYWdlIGNhY2hlIik7Ci0gICAgYWRkQmxvY2soImhzbCggNjAs
IDYwJSwgIDgwJSkiLCAiUmVuZGVyVHJlZUFsbG9jYXRlZCIsICJSZW5kZXIgdHJlZSIpOwotICAg
IGFkZEJsb2NrKCJoc2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVVc2VkIiwgIlJlbmRl
ciB0cmVlIHVzZWQiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA2MCwgNjAlLCAgODAlKSIsICJSZW5k
ZXJUcmVlIiwgIlJlbmRlciB0cmVlIik7CisgICAgYWRkQmxvY2soImhzbCggNjAsIDYwJSwgIDgw
JSkiLCAiUmVuZGVyVHJlZS5Vc2VkIiwgIlJlbmRlciB0cmVlIHVzZWQiKTsKIH0KIAogV2ViSW5z
cGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2Zvck1lbW9yeUJsb2NrID0gZnVuY3Rp
b24obWVtb3J5QmxvY2spCkBAIC00NzQsOSArNDc0LDEzIEBAIFdlYkluc3BlY3Rvci5OYXRpdmVN
ZW1vcnlCYXJDaGFydC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2
YXIgdW51c2VkU2l6ZSA9IDA7CiAgICAgICAgICAgICBpZiAoISFjaGlsZC5jaGlsZHJlbikgewot
ICAgICAgICAgICAgICAgIHVudXNlZFNpemUgPSBjaGlsZC5zaXplOwotICAgICAgICAgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoOyArK2opCi0gICAgICAg
ICAgICAgICAgICAgIHVudXNlZFNpemUgLT0gY2hpbGQuY2hpbGRyZW5bal0uc2l6ZTsKKyAgICAg
ICAgICAgICAgICB2YXIgdW51c2VkTmFtZSA9IG5hbWUgKyAiLlVudXNlZCI7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZC5jaGlsZHJlbi5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW5bal0ubmFtZSA9PT0gdW51c2Vk
TmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkU2l6ZSA9IGNoaWxkLmNoaWxk
cmVuW2pdLnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHZhciB1bnVzZWRMZW5ndGggPSB1bnVzZWRTaXplICogYmFyTGVuZ3RoU2l6ZVJhdGlvOwogICAg
ICAgICAgICAgdmFyIGJhckxlbmd0aCA9IGNoaWxkLnNpemUgKiBiYXJMZW5ndGhTaXplUmF0aW87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBlY2IwYTJmNTY0YTUwMjY3YmQ0ZmM1MTUwNDkwMzY2ODky
ZmMwY2Q5Li4zZGY3NTg2ZTg2OWEyYjkwOTcyN2ZlZmMzYjg2ZWVmODlmNzQwMmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTEyNjYsNiArMTI2Nyw0OSBAQCB2b2lkIFBhZ2U6OnJl
c2V0U2VlblBsdWdpbnMoKQogICAgIG1fc2VlblBsdWdpbnMuY2xlYXIoKTsKIH0KIAordm9pZCBQ
YWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6UGFnZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jaHJv
bWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZHJhZ0NhcmV0Q29udHJvbGxlcik7CisKKyNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGluZm8uYWRkTWVtYmVyKG1fZHJhZ0NvbnRyb2xsZXIp
OworI2VuZGlmCisgICAgaW5mby5hZGRNZW1iZXIobV9mb2N1c0NvbnRyb2xsZXIpOworI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQorICAgIGluZm8uYWRkTWVtYmVyKG1fY29udGV4dE1lbnVDb250
cm9sbGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaW5mby5hZGRNZW1i
ZXIobV9pbnNwZWN0b3JDb250cm9sbGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgaW5mby5hZGRNZW1iZXIobV9wb2ludGVyTG9ja0NvbnRyb2xsZXIpOworI2VuZGlm
CisgICAgaW5mby5hZGRNZW1iZXIobV9zY3JvbGxpbmdDb29yZGluYXRvcik7CisgICAgaW5mby5h
ZGRNZW1iZXIobV9zZXR0aW5ncyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9wcm9ncmVzcyk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9iYWNrRm9yd2FyZENvbnRyb2xsZXIpOworICAgIGluZm8uYWRk
TWVtYmVyKG1fbWFpbkZyYW1lKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BsdWdpbkRhdGEpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fdGhlbWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZWRpdG9y
Q2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ZlYXR1cmVPYnNlcnZlcik7CisgICAgaW5m
by5hZGRNZW1iZXIobV9ncm91cE5hbWUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnaW5hdGlv
bik7CisgICAgaW5mby5hZGRNZW1iZXIobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fdXNlclN0eWxlU2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2luZ2xl
UGFnZUdyb3VwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2dyb3VwKTsKKyAgICBpbmZvLmFkZFdl
YWtQb2ludGVyKG1fZGVidWdnZXIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2Vzc2lvblN0b3Jh
Z2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3Rz
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbik7CisgICAgaW5m
by5hZGRNZW1iZXIobV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbik7CisgICAgaW5mby5hZGRNZW1i
ZXIobV9hbHRlcm5hdGl2ZVRleHRDbGllbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc2VlblBs
dWdpbnMpOworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgIDogYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KDApCiAgICAgLCBjaHJvbWVDbGllbnQoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggZGU2OGRhYjAyODgyNTA3YmJmZTNlOWRiN2YzZjgyZTUxOWQzZjNjZi4uNzZkOWFjN2Vk
MmU1NjZlNzU2NzI1MzRmOGQwYzU1NGQ2ZTIxZTVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM1Miw2
ICszNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2F3UGx1Z2luKGNv
bnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwogICAgICAgICB2b2lkIHJlc2V0U2VlblBsdWdpbnMo
KTsKIAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAK
</data>
<flag name="commit-queue"
          id="181749"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>168737</attachid>
            <date>2012-10-15 10:33:00 -0700</date>
            <delta_ts>2012-10-15 10:37:15 -0700</delta_ts>
            <desc>[please ignore]</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>6259</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCmluZGV4
IGYzMWM2Y2MuLjdjZWQ5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSZWN0LmNwcApAQCAtMTM0LDYgKzEzNCwxNiBAQCB2b2lkIEZsb2F0UmVjdDo6dW5p
dGVJZk5vblplcm8oY29uc3QgRmxvYXRSZWN0JiBvdGhlcikKICAgICB1bml0ZUV2ZW5JZkVtcHR5
KG90aGVyKTsKIH0KIAordm9pZCBGbG9hdFJlY3Q6OmV4dGVuZChjb25zdCBGbG9hdFBvaW50JiBw
KQoreworICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBwLngoKSk7CisgICAgZmxvYXQgbWluWSA9
IG1pbih5KCksIHAueSgpKTsKKyAgICBmbG9hdCBtYXhYID0gbWF4KHRoaXMtPm1heFgoKSwgcC54
KCkpOworICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBwLnkoKSk7CisKKyAgICBz
ZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobWluWCwgbWluWSwgbWF4WCwgbWF4WSk7Cit9CisK
IHZvaWQgRmxvYXRSZWN0OjpzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpCiB7CiAgICAgbV9sb2Nh
dGlvbi5zZXRYKHgoKSAqIHN4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRSZWN0LmgKaW5kZXggMTYxZTI3OC4uOWUwOWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTE2NCw2ICsxNjQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bml0ZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHVuaXRlRXZlbklm
RW1wdHkoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCB1bml0ZUlmTm9uWmVybyhjb25zdCBG
bG9hdFJlY3QmKTsKKyAgICB2b2lkIGV4dGVuZChjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICAv
LyBOb3RlLCB0aGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCBJbnRSZWN0Ojpjb250YWlucyhJbnRQb2lu
dCYpIGRvZXM7IHRoZSBpbnQgdmVyc2lvbgogICAgIC8vIGlzIHJlYWxseSBjaGVja2luZyBmb3Ig
Y29udGFpbm1lbnQgb2YgMXgxIHJlY3QsIGJ1dCB0aGF0IGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRo
IGZsb2F0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Q
b2x5Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNw
cAppbmRleCBlNzA0YWJmLi45MGIzOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvblBvbHlnb24uY3BwCkBAIC02MywyMCArNjMsMTIgQEAgRXhjbHVzaW9uUG9seWdv
bjo6RXhjbHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRp
Y2VzLCBXaW4KICAgICBtX2VkZ2VzLnJlc2l6ZShuVmVydGljZXMpOwogICAgIFZlY3RvcjxFeGNs
dXNpb25Qb2x5Z29uRWRnZSo+IHNvcnRlZEVkZ2VzTWluWShuVmVydGljZXMpOwogCi0gICAgY29u
c3QgRmxvYXRQb2ludCYgdmVydGV4MCA9IHZlcnRleEF0KDApOwotICAgIGZsb2F0IG1pblggPSB2
ZXJ0ZXgwLngoKTsKLSAgICBmbG9hdCBtaW5ZID0gdmVydGV4MC55KCk7Ci0gICAgZmxvYXQgbWF4
WCA9IG1pblg7Ci0gICAgZmxvYXQgbWF4WSA9IG1pblk7CisgICAgaWYgKG5WZXJ0aWNlcykKKyAg
ICAgICAgbV9ib3VuZGluZ0JveC5zZXRMb2NhdGlvbih2ZXJ0ZXhBdCgwKSk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgblZlcnRpY2VzOyBpKyspIHsKICAgICAgICAgY29uc3QgRmxv
YXRQb2ludCYgdmVydGV4ID0gdmVydGV4QXQoaSk7Ci0KLSAgICAgICAgbWluWCA9IHN0ZDo6bWlu
KHZlcnRleC54KCksIG1pblgpOwotICAgICAgICBtYXhYID0gc3RkOjptYXgodmVydGV4LngoKSwg
bWF4WCk7Ci0gICAgICAgIG1pblkgPSBzdGQ6Om1pbih2ZXJ0ZXgueSgpLCBtaW5ZKTsKLSAgICAg
ICAgbWF4WSA9IHN0ZDo6bWF4KHZlcnRleC55KCksIG1heFkpOwotCisgICAgICAgIG1fYm91bmRp
bmdCb3guZXh0ZW5kKHZlcnRleCk7CiAgICAgICAgIG1fZWRnZXNbaV0ucG9seWdvbiA9IHRoaXM7
CiAgICAgICAgIG1fZWRnZXNbaV0uaW5kZXgxID0gaTsKICAgICAgICAgbV9lZGdlc1tpXS5pbmRl
eDIgPSAoaSArIDEpICUgblZlcnRpY2VzOwpAQCAtODQsMTEgKzc2LDYgQEAgRXhjbHVzaW9uUG9s
eWdvbjo6RXhjbHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZl
cnRpY2VzLCBXaW4KICAgICAgICAgc29ydGVkRWRnZXNNaW5ZW2ldID0gJm1fZWRnZXNbaV07CiAg
ICAgfQogCi0gICAgbV9ib3VuZGluZ0JveC5zZXRYKG1pblgpOwotICAgIG1fYm91bmRpbmdCb3gu
c2V0WShtaW5ZKTsKLSAgICBtX2JvdW5kaW5nQm94LnNldFdpZHRoKG1heFggLSBtaW5YKTsKLSAg
ICBtX2JvdW5kaW5nQm94LnNldEhlaWdodChtYXhZIC0gbWluWSk7Ci0KICAgICBzdGQ6OnNvcnQo
c29ydGVkRWRnZXNNaW5ZLmJlZ2luKCksIHNvcnRlZEVkZ2VzTWluWS5lbmQoKSwgV2ViQ29yZTo6
Y29tcGFyZUVkZ2VNaW5ZKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2Vz
LnNpemUoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBl
LmNwcAppbmRleCBjM2VjOGFjLi5iYzkzMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgUGFzc093blB0cjxFeGNsdXNp
b25TaGFwZT4gRXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0IEJhc2lj
U2hhcGUKICAgICAgICAgZXhjbHVzaW9uU2hhcGUgPSBob3Jpem9udGFsV3JpdGluZ01vZGUKICAg
ICAgICAgICAgID8gY3JlYXRlRXhjbHVzaW9uUmVjdGFuZ2xlKEZsb2F0UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KSwgRmxvYXRTaXplKHJhZGl1c1gsIHJhZGl1c1kpKQogICAgICAgICAgICAgOiBj
cmVhdGVFeGNsdXNpb25SZWN0YW5nbGUoRmxvYXRSZWN0KHksIHgsIGhlaWdodCwgd2lkdGgpLCBG
bG9hdFNpemUocmFkaXVzWSwgcmFkaXVzWCkpOworICAgICAgICBleGNsdXNpb25TaGFwZS0+bV9i
b3VuZGluZ0JveCA9IEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC0xMDYsNiArMTA3LDcgQEAgUGFzc093blB0cjxFeGNsdXNpb25TaGFw
ZT4gRXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0IEJhc2ljU2hhcGUK
ICAgICAgICAgZXhjbHVzaW9uU2hhcGUgPSBob3Jpem9udGFsV3JpdGluZ01vZGUKICAgICAgICAg
ICAgID8gY3JlYXRlRXhjbHVzaW9uQ2lyY2xlKEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSks
IHJhZGl1cykKICAgICAgICAgICAgIDogY3JlYXRlRXhjbHVzaW9uQ2lyY2xlKEZsb2F0UG9pbnQo
Y2VudGVyWSwgY2VudGVyWCksIHJhZGl1cyk7CisgICAgICAgIGV4Y2x1c2lvblNoYXBlLT5tX2Jv
dW5kaW5nQm94ID0gRmxvYXRSZWN0KGNlbnRlclggLSByYWRpdXMsIGNlbnRlclkgLSByYWRpdXMs
IHJhZGl1cyAqIDIsIHJhZGl1cyAqIDIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTEx
OSw2ICsxMjEsNyBAQCBQYXNzT3duUHRyPEV4Y2x1c2lvblNoYXBlPiBFeGNsdXNpb25TaGFwZTo6
Y3JlYXRlRXhjbHVzaW9uU2hhcGUoY29uc3QgQmFzaWNTaGFwZQogICAgICAgICBleGNsdXNpb25T
aGFwZSA9IGhvcml6b250YWxXcml0aW5nTW9kZQogICAgICAgICAgICAgPyBjcmVhdGVFeGNsdXNp
b25FbGxpcHNlKEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSksIEZsb2F0U2l6ZShyYWRpdXNY
LCByYWRpdXNZKSkKICAgICAgICAgICAgIDogY3JlYXRlRXhjbHVzaW9uRWxsaXBzZShGbG9hdFBv
aW50KGNlbnRlclksIGNlbnRlclgpLCBGbG9hdFNpemUocmFkaXVzWSwgcmFkaXVzWCkpOworICAg
ICAgICBleGNsdXNpb25TaGFwZS0+bV9ib3VuZGluZ0JveCA9IEZsb2F0UmVjdChjZW50ZXJYIC0g
cmFkaXVzWCwgY2VudGVyWSAtIHJhZGl1c1ksIHJhZGl1c1ggKiAyLCByYWRpdXNZICogMik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTI3LDE0ICsxMzAsMjAgQEAgUGFzc093blB0cjxF
eGNsdXNpb25TaGFwZT4gRXhjbHVzaW9uU2hhcGU6OmNyZWF0ZUV4Y2x1c2lvblNoYXBlKGNvbnN0
IEJhc2ljU2hhcGUKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHln
b24tPnZhbHVlcygpOwogICAgICAgICBzaXplX3QgdmFsdWVzU2l6ZSA9IHZhbHVlcy5zaXplKCk7
CiAgICAgICAgIEFTU0VSVCghKHZhbHVlc1NpemUgJSAyKSk7CisgICAgICAgIEZsb2F0UmVjdCBi
b3VuZGluZ0JveDsKICAgICAgICAgVmVjdG9yPEZsb2F0UG9pbnQ+KiB2ZXJ0aWNlcyA9IG5ldyBW
ZWN0b3I8RmxvYXRQb2ludD4odmFsdWVzU2l6ZSAvIDIpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdmFsdWVzU2l6ZTsgaSArPSAyKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50
IHZlcnRleCgKICAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlcy5hdChp
KSwgYm94V2lkdGgpLAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVz
LmF0KGkgKyAxKSwgYm94SGVpZ2h0KSk7CiAgICAgICAgICAgICAoKnZlcnRpY2VzKVtpIC8gMl0g
PSBob3Jpem9udGFsV3JpdGluZ01vZGUgPyB2ZXJ0ZXggOiB2ZXJ0ZXgudHJhbnNwb3NlZFBvaW50
KCk7CisgICAgICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICAgICAgYm91bmRpbmdCb3guc2V0
TG9jYXRpb24odmVydGV4KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBib3Vu
ZGluZ0JveC5leHRlbmQodmVydGV4KTsKICAgICAgICAgfQogICAgICAgICBleGNsdXNpb25TaGFw
ZSA9IGNyZWF0ZUV4Y2x1c2lvblBvbHlnb24oYWRvcHRQdHIodmVydGljZXMpLCBwb2x5Z29uLT53
aW5kUnVsZSgpKTsKKyAgICAgICAgZXhjbHVzaW9uU2hhcGUtPm1fYm91bmRpbmdCb3ggPSBib3Vu
ZGluZ0JveDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IGJiMWVkYzYuLmE0MTY0NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5FeGNsdXNpb25TaGFwZSgpIHsgfQogCiAgICAgdmlydHVhbCBGbG9hdFJl
Y3Qgc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGbG9h
dFJlY3Qgc2hhcGVCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3g7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwg
ZmxvYXQgbG9naWNhbEJvdHRvbSwgU2VnbWVudExpc3QmKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2lj
YWxCb3R0b20sIFNlZ21lbnRMaXN0JikgY29uc3QgPSAwOwogCkBAIC03Niw2ICs3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKICAgICBmbG9hdCBtX2xvZ2lj
YWxCb3hXaWR0aDsKICAgICBmbG9hdCBtX2xvZ2ljYWxCb3hIZWlnaHQ7CisgICAgRmxvYXRSZWN0
IG1fYm91bmRpbmdCb3g7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>