<?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>202702</bug_id>
          
          <creation_ts>2019-10-08 12:55:59 -0700</creation_ts>
          <short_desc>AX: Make AXIsolatedTree compile again</short_desc>
          <delta_ts>2019-10-15 17:27:31 -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>Accessibility</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577896</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-08 12:55:59 -0700</bug_when>
    <thetext>Make AXIsolatedTree work compile again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577897</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-08 12:56:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/56084968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578461</commentid>
    <comment_count>2</comment_count>
      <attachid>380587</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-09 17:09:45 -0700</bug_when>
    <thetext>Created attachment 380587
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578464</commentid>
    <comment_count>3</comment_count>
      <attachid>380587</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-09 17:11:33 -0700</bug_when>
    <thetext>Comment on attachment 380587
patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h:-48
&gt; -class AXIsolatedTreeNode final : public AccessibilityObjectInterface, public ThreadSafeRefCounted&lt;AXIsolatedTreeNode&gt;, public CanMakeWeakPtr&lt;AXIsolatedTreeNode&gt; {

If we use WeakPtr, there are assertions to ensure that when created on the main thread, it can only be accessed on the main thread. In this case we don&apos;t want to do that. We want to create these objects on the main thread and access on secondary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578469</commentid>
    <comment_count>4</comment_count>
      <attachid>380591</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-09 17:25:43 -0700</bug_when>
    <thetext>Created attachment 380591
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578474</commentid>
    <comment_count>5</comment_count>
      <attachid>380593</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-09 17:36:24 -0700</bug_when>
    <thetext>Created attachment 380593
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578700</commentid>
    <comment_count>6</comment_count>
      <attachid>380654</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-10 09:44:31 -0700</bug_when>
    <thetext>Created attachment 380654
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578768</commentid>
    <comment_count>7</comment_count>
      <attachid>380654</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-10 11:55:00 -0700</bug_when>
    <thetext>Comment on attachment 380654
patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:-112
&gt; -    RELEASE_ASSERT(!isMainThread() || initialRequest);

the first time we access objects we&apos;re still on the main thread, so we can&apos;t have this check unless we also have the initialRequest logic which seemed somewhat unnecessary

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h:134
&gt; +    RefPtr&lt;AXIsolatedTree&gt; m_cachedTree;

WeakPtrs require that objects made on main thread are only accessed on main thread, which is pretty much the opposite of what we&apos;re trying to do here

&gt; Source/WebKit/Configurations/BaseTarget.xcconfig:36
&gt; +SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/A/Frameworks;

Need this for AccessibilitySPI.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579409</commentid>
    <comment_count>8</comment_count>
      <attachid>380654</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-12 00:57:15 -0700</bug_when>
    <thetext>Comment on attachment 380654
patch

Clearing flags on attachment: 380654

Committed r251045: &lt;https://trac.webkit.org/changeset/251045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579410</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-12 00:57:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579644</commentid>
    <comment_count>10</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-14 09:05:57 -0700</bug_when>
    <thetext>Reverted r251045 for reason:

Broke internal builds

Committed r251074: &lt;https://trac.webkit.org/changeset/251074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580129</commentid>
    <comment_count>11</comment_count>
      <attachid>380993</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-15 09:36:07 -0700</bug_when>
    <thetext>Created attachment 380993
Re-submitting r251045 with a fix for internal builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580393</commentid>
    <comment_count>12</comment_count>
      <attachid>380993</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 17:27:29 -0700</bug_when>
    <thetext>Comment on attachment 380993
Re-submitting r251045 with a fix for internal builds.

Clearing flags on attachment: 380993

Committed r251171: &lt;https://trac.webkit.org/changeset/251171&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580394</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 17:27:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380587</attachid>
            <date>2019-10-09 17:09:45 -0700</date>
            <delta_ts>2019-10-09 17:25:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_202702.txt</filename>
            <type>text/plain</type>
            <size>12881</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggMTI4MmRmYWFhZTMuLjE5N2UwYjQ1ZDQ3IDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMzEgQEANCisyMDE5LTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogTWFrZSBBWElzb2xhdGVkVHJlZSBjb21waWxlIGFn
YWluDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
NzAyDQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYwODQ5Njg+DQorDQorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBhbmQg
cnVudGltZSBpc3N1ZXMgd2hlbiBidWlsZGluZyB3aXRoIEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRS4NCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
b21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoNCisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkVHJlZTo6dHJlZVBhZ2VDYWNoZSk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6Om5vZGVGb3JJRCBjb25zdCk6DQorICAgICAgICAgICAgLSBSZW1vdmUgcmVs
ZWFzZSBhc3NlcnQgaGVyZSBiZWNhdXNlIHRoZSBpbml0aWFsIHJlcXVlc3QgdGhhdCBjb21lcyB0
aHJvdWdoIGhhcHBlbnMgb24gdGhlIG1haW4gdGhyZWFkLg0KKyAgICAgICAgICAgICAgV2UgbmVl
ZCB0byBoYW5kbGUgdGhhdCBjYXNlIHNwZWNpZmljIGNhc2UuDQorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOg0KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRCk6IERlbGV0ZWQuDQorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVz
cyk6IERlbGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpyZWN0QXR0cmlidXRlVmFsdWUgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06DQorICAgICAgICAoY29udmVy
dFRvTlNBcnJheSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JBcnJheV0pOg0KKw0KIDIwMTktMTAtMDkgIFJ1c3NlbGwg
RXBzdGVpbiAgPHJlcHN0ZWluQGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNTA5MzAuDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHANCmluZGV4IGUwYmJkYTJjN2E0Li5lMjlhZjlmZGU1ZiAxMDA2NDQNCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHANCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHANCkBAIC03MzAs
OCArNzMwLDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkNCiANCiAg
ICAgbV9pZHNJblVzZS5yZW1vdmUoYXhJRCk7DQogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lT
T0xBVEVEX1RSRUUpDQotICAgIGlmIChhdXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkp
DQotICAgICAgICBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqcGFnZUlEKS0+cmVtb3Zl
Tm9kZShheElEKTsNCisgICAgaWYgKGF1dG8gcGFnZUlEID0gbV9kb2N1bWVudC5wYWdlSUQoKSkg
ew0KKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlE
KCpwYWdlSUQpKQ0KKyAgICAgICAgICAgIHRyZWUtPnJlbW92ZU5vZGUoYXhJRCk7DQorICAgIH0N
CiAjZW5kaWYNCiANCiAgICAgQVNTRVJUKG1fb2JqZWN0cy5zaXplKCkgPj0gbV9pZHNJblVzZS5z
aXplKCkpOw0KQEAgLTI5NDUsNyArMjk0Nyw4IEBAIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFY
T2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWVIaWVyYXJjaHkoDQog
ew0KICAgICBhdXRvIGlzb2xhdGVkVHJlZU5vZGUgPSBBWElzb2xhdGVkVHJlZU5vZGU6OmNyZWF0
ZShvYmplY3QpOw0KICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoaXNvbGF0ZWRUcmVlTm9kZS5jb3B5
UmVmKCkpOw0KLQ0KKyAgICANCisgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJlZUlkZW50aWZp
ZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsNCiAgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0UGFy
ZW50KHBhcmVudElEKTsNCiAgICAgYXNzb2NpYXRlSXNvbGF0ZWRUcmVlTm9kZShvYmplY3QsIGlz
b2xhdGVkVHJlZU5vZGUsIHRyZWUudHJlZUlkZW50aWZpZXIoKSk7DQogDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwDQppbmRleCAwZTdkNTQyMDVjOC4uNTg2YWRmMDY3MmYgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcA0KQEAgLTQyLDkgKzQyLDkgQEAgc3RhdGljIHVuc2lnbmVkIG5ld1RyZWVJ
RCgpDQogICAgIHJldHVybiArK3NfY3VycmVudFRyZWVJRDsNCiB9DQogDQotSGFzaE1hcDx1aW50
NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNhY2hl
KCkNCitIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgQVhJc29s
YXRlZFRyZWU6OnRyZWVQYWdlQ2FjaGUoKQ0KIHsNCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7DQorICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRy
ZWU+Pj4gbWFwOw0KICAgICByZXR1cm4gbWFwOw0KIH0NCiANCkBAIC02NywxNiArNjcsNiBAQCBS
ZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoKQ0KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsNCiB9DQogDQotUmVmPEFYSXNvbGF0ZWRU
cmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkNCi17DQotICAgIFJFTEVBU0VfQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsNCi0gICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0
ZWRBY2Nlc3NpYmlsaXR5VHJlZSgpOw0KLSAgICB0cmVlLT5zZXRJbml0aWFsUmVxdWVzdEluUHJv
Z3Jlc3ModHJ1ZSk7DQotICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCi0gICAgdHJl
ZS0+c2V0SW5pdGlhbFJlcXVlc3RJblByb2dyZXNzKGZhbHNlKTsNCi0gICAgcmV0dXJuIHRyZWU7
DQotfQ0KLQ0KIFJlZlB0cjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlOjpub2Rl
SW5UcmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCB0cmVlSUQsIEFYSUQgYXhJRCkNCiB7DQogICAg
IHJldHVybiB0cmVlRm9ySUQodHJlZUlEKS0+bm9kZUZvcklEKGF4SUQpOw0KQEAgLTEwOSw3ICs5
OSw2IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdl
SUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQ0KIA0KIFJlZlB0cjxBWElzb2xhdGVkVHJlZU5vZGU+
IEFYSXNvbGF0ZWRUcmVlOjpub2RlRm9ySUQoQVhJRCBheElEKSBjb25zdA0KIHsNCi0gICAgUkVM
RUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IGluaXRpYWxSZXF1ZXN0KTsNCiAgICAgaWYg
KCFheElEKQ0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgIHJldHVybiBtX3JlYWRlclRo
cmVhZE5vZGVNYXAuZ2V0KGF4SUQpOw0KQEAgLTE1MCwxNCArMTM5LDkgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5nZXMoVmVjdG9yPFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiYgbG9nKQ0KICAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBlbmQobm9kZS5jb3B5UmVmKCkp
Ow0KIH0NCiANCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRJbml0aWFsUmVxdWVzdEluUHJvZ3Jl
c3MoYm9vbCBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MpDQotew0KLSAgICBtX2luaXRpYWxSZXF1
ZXN0SW5Qcm9ncmVzcyA9IGluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzczsNCi19DQotDQogdm9pZCBB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpDQogew0KLSAgICBSRUxFQVNFX0FT
U0VSVCghaXNNYWluVGhyZWFkKCkgfHwgaW5pdGlhbFJlcXVlc3QpOw0KKyAgICBSRUxFQVNFX0FT
U0VSVCghaXNNYWluVGhyZWFkKCkpOw0KICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdl
TG9nTG9jayB9Ow0KICAgICBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRUcmVlTm9kZT4+IGFwcGVuZENv
cHk7DQogICAgIHN0ZDo6c3dhcChhcHBlbmRDb3B5LCBtX3BlbmRpbmdBcHBlbmRzKTsNCkBAIC0x
NjksMTAgKzE1Myw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMo
KQ0KICAgICBtX3Jvb3ROb2RlSUQgPSBtX3BlbmRpbmdSb290Tm9kZUlEOw0KICAgICBtX2ZvY3Vz
ZWROb2RlSUQgPSBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEOw0KICAgICANCi0gICAgZm9yIChhdXRv
JiBpdGVtIDogYXBwZW5kQ29weSkgew0KLSAgICAgICAgaXRlbS0+c2V0VHJlZUlkZW50aWZpZXIo
bV90cmVlSUQpOw0KKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KQ0KICAgICAgICAg
bV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChpdGVtLT5pZGVudGlmaWVyKCksIFdURk1vdmUoaXRl
bSkpOw0KLSAgICB9DQogDQogICAgIGZvciAoYXV0byBpdGVtIDogcmVtb3ZlQ29weSkNCiAgICAg
ICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUoaXRlbSk7DQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgNCmluZGV4IDZlZWMyNjQ1MTk4Li42YWJkNzgzYzExMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgNCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgNCkBAIC0zNywxNSArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNsYXNzIFBh
Z2U7DQogDQotY2xhc3MgQVhJc29sYXRlZFRyZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8QVhJc29sYXRlZFRyZWU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhJc29sYXRlZFRyZWU+
IHsNCitjbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
WElzb2xhdGVkVHJlZT4gew0KICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWElzb2xhdGVkVHJl
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOw0KIA0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFJl
ZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKCk7DQogICAgIHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVl
KCk7DQogDQotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdl
SUQoUGFnZUlkZW50aWZpZXIpOw0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmpl
Y3RDYWNoZSYpOw0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVl
PiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsNCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRp
Zmllcik7DQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsNCiANCkBAIC02NCw3ICs2Myw2IEBAIHB1Ymxp
YzoNCiAgICAgLy8gQ2FsbCBvbiBBWCB0aHJlYWQNCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBseVBlbmRpbmdDaGFuZ2VzKCk7DQogDQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5p
dGlhbFJlcXVlc3RJblByb2dyZXNzKGJvb2wpOw0KICAgICBBWElzb2xhdGVkVHJlZUlEIHRyZWVJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlSUQ7IH0NCiANCiBwcml2YXRlOg0KQEAg
LTg2LDcgKzg0LDYgQEAgcHJpdmF0ZToNCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsN
CiAgICAgQVhJRCBtX3Jvb3ROb2RlSUQgeyBJbnZhbGlkQVhJRCB9Ow0KICAgICBBWElEIG1fZm9j
dXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07DQotICAgIGJvb2wgbV9pbml0aWFsUmVxdWVzdElu
UHJvZ3Jlc3M7DQogfTsNCiANCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5jcHANCmluZGV4IGUyZWY0MTIxMjI5Li5kOGRiYjlmMmM5NyAxMDA2NDQN
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlTm9kZS5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHANCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJlZUlEIHRyZWVJ
ZGVudGlmaWVyKQ0KIHsNCiAgICAgbV90cmVlSWRlbnRpZmllciA9IHRyZWVJZGVudGlmaWVyOw0K
ICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChtX3RyZWVJZGVu
dGlmaWVyKSkNCi0gICAgICAgIG1fY2FjaGVkVHJlZSA9IG1ha2VXZWFrUHRyKHRyZWUuZ2V0KCkp
Ow0KKyAgICAgICAgbV9jYWNoZWRUcmVlID0gdHJlZTsNCiB9DQogDQogQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZSogQVhJc29sYXRlZFRyZWVOb2RlOjpmb2N1c2VkVUlFbGVtZW50KCkgY29u
c3QNCkBAIC0xMzIsNyArMTMyLDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRUcmVlTm9kZTo6cmVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28NCiB7DQogICAg
IGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsNCiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24odmFsdWUsDQotICAgICAgICBbJnplcm9SZWN0XSAoT3B0aW9uYWw8
RmxvYXRSZWN0PiB0eXBlZFZhbHVlKSB7DQorICAgICAgICBbJl0gKE9wdGlvbmFsPEZsb2F0UmVj
dD4gdHlwZWRWYWx1ZSkgew0KICAgICAgICAgICAgIGlmICghdHlwZWRWYWx1ZSkNCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCB7IH07DQogICAgICAgICAgICAgcmV0dXJuIHR5cGVk
VmFsdWUudmFsdWUoKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oDQppbmRleCA0Mzc0NTM1
NmM3OS4uOTM0ZDYzZjRhOWEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaA0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgNCkBAIC00
NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiBjbGFzcyBBWElzb2xhdGVkVHJlZTsN
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ow0KIA0KLWNsYXNzIEFYSXNvbGF0ZWRUcmVlTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVOb2RlPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gew0KK2NsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZSBmaW5h
bCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWVOb2RlPiB7DQogDQogcHVibGljOg0KICAgICBlbnVt
IGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDhfdCB7DQpAQCAtMTMxLDcgKzEzMSw3IEBAIHBy
aXZhdGU6DQogICAgIEFYSUQgbV9pZGVudGlmaWVyOw0KICAgICBib29sIG1faW5pdGlhbGl6ZWQg
eyBmYWxzZSB9Ow0KICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlkZW50aWZpZXI7DQotICAg
IFdlYWtQdHI8QVhJc29sYXRlZFRyZWU+IG1fY2FjaGVkVHJlZTsNCisgICAgUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiBtX2NhY2hlZFRyZWU7DQogICAgIFZlY3RvcjxBWElEPiBtX2NoaWxkcmVuOw0K
IA0KICNpZiBQTEFURk9STShDT0NPQSkNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0NCmluZGV4IGI1M2I0YWUzMTdkLi5kYWYzNGYxNTBmNSAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQ0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQpAQCAtMjgwLDcgKzI4MCw3IEBAIE5TQXJy
YXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpBWElzb2xh
dGVkVHJlZU5vZGU+PiYgY2hpDQogew0KICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjaGlsZHJlbi5zaXplKCldOw0K
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pDQotICAgICAgICBhZGRDaGlsZFRvQXJy
YXkoKmNoaWxkLCByZXN1bHQpDQorICAgICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCByZXN1
bHQpOw0KICAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07DQogfQ0KICNlbmRpZg0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0NCmluZGV4IGNiMjIyYjRmYjg4Li4w
MTUwZmNhZTdhZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0K
QEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNC
ZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsDQogICAgICAgICBj
aGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5vZGVDaGlsZHJlbi5zaXplKCkpOw0KICAg
ICAgICAgYXV0byB0cmVlID0gdHJlZU5vZGUtPnRyZWUoKTsNCiAgICAgICAgIGZvciAoYXV0byBj
aGlsZElEIDogbm9kZUNoaWxkcmVuKQ0KLSAgICAgICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFw
cGVuZCh0cmVlLT5ub2RlRm9ySUQoY2hpbGQpKTsNCisgICAgICAgICAgICBjaGlsZHJlbi51bmNo
ZWNrZWRBcHBlbmQodHJlZS0+bm9kZUZvcklEKGNoaWxkSUQpKTsNCiAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGNoaWxkcmVuKTsNCiAgICAgfQ0KICNlbmRpZg0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCmluZGV4
IGNjMzBhZjU0YWY4Li5mMzQwNTQzYzk4YyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KQEAgLTEsMyArMSwxNCBAQA0K
KzIwMTktMTAtMDkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCisNCisg
ICAgICAgIEFYOiBNYWtlIEFYSXNvbGF0ZWRUcmVlIGNvbXBpbGUgYWdhaW4NCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI3MDINCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NjA4NDk2OD4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLg0KKw0KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOg0KKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UgaXNvbGF0ZWRUcmVlUm9vdE9iamVjdF0pOg0KKw0KIDIwMTktMTAtMDkg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFtXZWJBdXRo
bl0gTW92ZSB0aGUgbW9jayB0ZXN0aW5nIGVudHJhbmNlIHRvIEludGVybmFscw0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQ0KaW5kZXggNDI3M2RiNWViMmIu
LmQwZDU2NTdjNGZkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tDQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0NCkBAIC0yNiw2ICsyNiw3IEBADQogI2ltcG9ydCAiY29uZmlnLmgiDQogI2ltcG9y
dCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCINCiANCisjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5UHJpdlNQSS5oIg0KICNpbXBvcnQgIldlYkZyYW1lLmgiDQogI2ltcG9ydCAiV2Vi
UGFnZS5oIg0KICNpbXBvcnQgIldLQXJyYXkuaCINCkBAIC05Niw3ICs5Nyw3IEBADQogew0KICAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpIHsNCiAgICAgICAgIGlmIChhdXRvIGNhY2hlID0gW3NlbGYg
YXhPYmplY3RDYWNoZV0pIHsNCi0gICAgICAgICAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJl
ZTo6aW5pdGlhbGl6ZVRyZWVGb3JQYWdlSWQobV9wYWdlSUQsICpjYWNoZSk7DQorICAgICAgICAg
ICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgp
Ow0KIA0KICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgY3JlYXRlZCBvdXIgdHJlZSwg
aW5pdGlhbGl6ZSB0aGUgc2Vjb25kYXJ5IHRocmVhZCwNCiAgICAgICAgICAgICAvLyBzbyBmdXR1
cmUgcmVxdWVzdHMgY29tZSBpbiBvbiB0aGUgb3RoZXIgdGhyZWFkLg0KQEAgLTEwNSw3ICsxMDYs
NyBAQA0KICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdE5vZGUtPndyYXBwZXIoKTsNCiAgICAg
ICAgIH0NCiAgICAgfSBlbHNlIHsNCi0gICAgICAgIGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVl
Ojp0cmVlRm9yUGFnZUlEKG1fcGFnZUlEKTsNCisgICAgICAgIGF1dG8gdHJlZSA9IFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKG1fcGFnZUlEKTsNCiAgICAgICAgIHRyZWUt
PmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiAgICAgICAgIGlmIChhdXRvIHJvb3ROb2RlID0gdHJl
ZS0+cm9vdE5vZGUoKSkNCiAgICAgICAgICAgICByZXR1cm4gcm9vdE5vZGUtPndyYXBwZXIoKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380591</attachid>
            <date>2019-10-09 17:25:43 -0700</date>
            <delta_ts>2019-10-09 17:36:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_202702.txt</filename>
            <type>text/plain</type>
            <size>12889</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggODVlMzBhM2U0ODkuLmUwMmM3MDM5ZjQ1IDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMzEgQEANCisyMDE5LTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogTWFrZSBBWElzb2xhdGVkVHJlZSBjb21waWxlIGFn
YWluDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
NzAyDQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYwODQ5Njg+DQorDQorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBhbmQg
cnVudGltZSBpc3N1ZXMgd2hlbiBidWlsZGluZyB3aXRoIEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRS4NCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
b21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6DQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoNCisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkVHJlZTo6dHJlZVBhZ2VDYWNoZSk6DQorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6Om5vZGVGb3JJRCBjb25zdCk6DQorICAgICAgICAgICAgLSBSZW1vdmUgcmVs
ZWFzZSBhc3NlcnQgaGVyZSBiZWNhdXNlIHRoZSBpbml0aWFsIHJlcXVlc3QgdGhhdCBjb21lcyB0
aHJvdWdoIGhhcHBlbnMgb24gdGhlIG1haW4gdGhyZWFkLg0KKyAgICAgICAgICAgICAgV2UgbmVl
ZCB0byBoYW5kbGUgdGhhdCBjYXNlIHNwZWNpZmljIGNhc2UuDQorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOg0KKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRCk6IERlbGV0ZWQuDQorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVz
cyk6IERlbGV0ZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2Rl
OjpyZWN0QXR0cmlidXRlVmFsdWUgY29uc3QpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06DQorICAgICAgICAoY29udmVy
dFRvTlNBcnJheSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOg0KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgY2hpbGRyZW5WZWN0b3JBcnJheV0pOg0KKw0KIDIwMTktMTAtMDkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPg0KIA0KICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIENv
bXBhY3RQb2ludGVyVHVwbGU8Li4uLCBPcHRpb25TZXQ8Li4uPj4NCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcA0KaW5kZXggZTBiYmRhMmM3YTQuLmUy
OWFmOWZkZTVmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcA0KQEAgLTczMCw4ICs3MzAsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1v
dmUoQVhJRCBheElEKQ0KIA0KICAgICBtX2lkc0luVXNlLnJlbW92ZShheElEKTsNCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkNCi0gICAgaWYgKGF1dG8gcGFnZUlEID0g
bV9kb2N1bWVudC5wYWdlSUQoKSkNCi0gICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFn
ZUlEKCpwYWdlSUQpLT5yZW1vdmVOb2RlKGF4SUQpOw0KKyAgICBpZiAoYXV0byBwYWdlSUQgPSBt
X2RvY3VtZW50LnBhZ2VJRCgpKSB7DQorICAgICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRl
ZFRyZWU6OnRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkpDQorICAgICAgICAgICAgdHJlZS0+cmVtb3Zl
Tm9kZShheElEKTsNCisgICAgfQ0KICNlbmRpZg0KIA0KICAgICBBU1NFUlQobV9vYmplY3RzLnNp
emUoKSA+PSBtX2lkc0luVXNlLnNpemUoKSk7DQpAQCAtMjk0NSw3ICsyOTQ3LDggQEAgUmVmPEFY
SXNvbGF0ZWRUcmVlTm9kZT4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRBY2Nlc3NpYmls
aXR5VHJlZUhpZXJhcmNoeSgNCiB7DQogICAgIGF1dG8gaXNvbGF0ZWRUcmVlTm9kZSA9IEFYSXNv
bGF0ZWRUcmVlTm9kZTo6Y3JlYXRlKG9iamVjdCk7DQogICAgIG5vZGVDaGFuZ2VzLmFwcGVuZChp
c29sYXRlZFRyZWVOb2RlLmNvcHlSZWYoKSk7DQotDQorICAgIA0KKyAgICBpc29sYXRlZFRyZWVO
b2RlLT5zZXRUcmVlSWRlbnRpZmllcih0cmVlLnRyZWVJZGVudGlmaWVyKCkpOw0KICAgICBpc29s
YXRlZFRyZWVOb2RlLT5zZXRQYXJlbnQocGFyZW50SUQpOw0KICAgICBhc3NvY2lhdGVJc29sYXRl
ZFRyZWVOb2RlKG9iamVjdCwgaXNvbGF0ZWRUcmVlTm9kZSwgdHJlZS50cmVlSWRlbnRpZmllcigp
KTsNCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHANCmluZGV4IDBlN2Q1NDIwNWM4Li41ODZhZGYw
NjcyZiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwDQpAQCAtNDIsOSArNDIsOSBAQCBzdGF0
aWMgdW5zaWduZWQgbmV3VHJlZUlEKCkNCiAgICAgcmV0dXJuICsrc19jdXJyZW50VHJlZUlEOw0K
IH0NCiANCi1IYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgQVhJc29sYXRl
ZFRyZWU6OnRyZWVQYWdlQ2FjaGUoKQ0KK0hhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElz
b2xhdGVkVHJlZT4+JiBBWElzb2xhdGVkVHJlZTo6dHJlZVBhZ2VDYWNoZSgpDQogew0KLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4+IG1hcDsNCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7DQogICAgIHJldHVybiBtYXA7DQogfQ0KIA0K
QEAgLTY3LDE2ICs2Nyw2IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNy
ZWF0ZSgpDQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYSXNvbGF0ZWRUcmVlKCkpOw0KIH0N
CiANCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQ0KLXsN
Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOw0KLSAgICBhdXRvIHRyZWUgPSBj
YWNoZS0+Z2VuZXJhdGVJc29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7DQotICAgIHRyZWUtPnNl
dEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyh0cnVlKTsNCi0gICAgdHJlZS0+YXBwbHlQZW5kaW5n
Q2hhbmdlcygpOw0KLSAgICB0cmVlLT5zZXRJbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MoZmFsc2Up
Ow0KLSAgICByZXR1cm4gdHJlZTsNCi19DQotDQogUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4g
QVhJc29sYXRlZFRyZWU6Om5vZGVJblRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRyZWVJRCwg
QVhJRCBheElEKQ0KIHsNCiAgICAgcmV0dXJuIHRyZWVGb3JJRCh0cmVlSUQpLT5ub2RlRm9ySUQo
YXhJRCk7DQpAQCAtMTA5LDcgKzk5LDYgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpDQogDQogUmVmUHRy
PEFYSXNvbGF0ZWRUcmVlTm9kZT4gQVhJc29sYXRlZFRyZWU6Om5vZGVGb3JJRChBWElEIGF4SUQp
IGNvbnN0DQogew0KLSAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgaW5pdGlh
bFJlcXVlc3QpOw0KICAgICBpZiAoIWF4SUQpDQogICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAg
ICAgcmV0dXJuIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCk7DQpAQCAtMTUwLDE0ICsx
MzksOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBlbmROb2RlQ2hhbmdlcyhWZWN0b3I8UmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4+JiBsb2cpDQogICAgICAgICBtX3BlbmRpbmdBcHBlbmRzLmFw
cGVuZChub2RlLmNvcHlSZWYoKSk7DQogfQ0KIA0KLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldElu
aXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyhib29sIGluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcykNCi17
DQotICAgIG1faW5pdGlhbFJlcXVlc3RJblByb2dyZXNzID0gaW5pdGlhbFJlcXVlc3RJblByb2dy
ZXNzOw0KLX0NCi0NCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkN
CiB7DQotICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCBpbml0aWFsUmVxdWVz
dCk7DQorICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7DQogICAgIExvY2tIb2xk
ZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07DQogICAgIFZlY3RvcjxSZWY8QVhJc29sYXRl
ZFRyZWVOb2RlPj4gYXBwZW5kQ29weTsNCiAgICAgc3RkOjpzd2FwKGFwcGVuZENvcHksIG1fcGVu
ZGluZ0FwcGVuZHMpOw0KQEAgLTE2OSwxMCArMTUzLDggQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6
YXBwbHlQZW5kaW5nQ2hhbmdlcygpDQogICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jvb3RO
b2RlSUQ7DQogICAgIG1fZm9jdXNlZE5vZGVJRCA9IG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQ7DQog
ICAgIA0KLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KSB7DQotICAgICAgICBpdGVt
LT5zZXRUcmVlSWRlbnRpZmllcihtX3RyZWVJRCk7DQorICAgIGZvciAoYXV0byYgaXRlbSA6IGFw
cGVuZENvcHkpDQogICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGl0ZW0tPmlkZW50
aWZpZXIoKSwgV1RGTW92ZShpdGVtKSk7DQotICAgIH0NCiANCiAgICAgZm9yIChhdXRvIGl0ZW0g
OiByZW1vdmVDb3B5KQ0KICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLnJlbW92ZShpdGVt
KTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaA0KaW5kZXggNmVlYzI2NDUxOTguLjZhYmQ3ODNjMTEyIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaA0KQEAgLTM3LDE1ICszNywxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQogDQogY2xhc3MgUGFnZTsNCiANCi1jbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBWElzb2xhdGVkVHJlZT4gew0KK2NsYXNzIEFYSXNvbGF0ZWRUcmVlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlPiB7DQogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7DQogDQogcHVi
bGljOg0KICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsNCiAgICAgdmly
dHVhbCB+QVhJc29sYXRlZFRyZWUoKTsNCiANCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJl
ZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7DQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBh
Z2VJZGVudGlmaWVyLCBBWE9iamVjdENhY2hlJik7DQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIp
Ow0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsNCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOw0KIA0KQEAg
LTY0LDcgKzYzLDYgQEAgcHVibGljOg0KICAgICAvLyBDYWxsIG9uIEFYIHRocmVhZA0KICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiANCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MoYm9vbCk7DQogICAgIEFY
SXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVJRDsg
fQ0KIA0KIHByaXZhdGU6DQpAQCAtODYsNyArODQsNiBAQCBwcml2YXRlOg0KICAgICBBWElzb2xh
dGVkVHJlZUlEIG1fdHJlZUlEOw0KICAgICBBWElEIG1fcm9vdE5vZGVJRCB7IEludmFsaWRBWElE
IH07DQogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFYSUQgfTsNCi0gICAgYm9v
bCBtX2luaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzczsNCiB9Ow0KIA0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KaW5kZXggZTJlZjQxMjEyMjku
LmQ4ZGJiOWYyYzk3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KQEAgLTk1
LDcgKzk1LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZU5vZGU6OnNldFRyZWVJZGVudGlmaWVyKEFY
SXNvbGF0ZWRUcmVlSUQgdHJlZUlkZW50aWZpZXIpDQogew0KICAgICBtX3RyZWVJZGVudGlmaWVy
ID0gdHJlZUlkZW50aWZpZXI7DQogICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6
dHJlZUZvcklEKG1fdHJlZUlkZW50aWZpZXIpKQ0KLSAgICAgICAgbV9jYWNoZWRUcmVlID0gbWFr
ZVdlYWtQdHIodHJlZS5nZXQoKSk7DQorICAgICAgICBtX2NhY2hlZFRyZWUgPSB0cmVlOw0KIH0N
CiANCiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlKiBBWElzb2xhdGVkVHJlZU5vZGU6OmZv
Y3VzZWRVSUVsZW1lbnQoKSBjb25zdA0KQEAgLTEzMiw3ICsxMzIsNyBAQCBGbG9hdFJlY3QgQVhJ
c29sYXRlZFRyZWVOb2RlOjpyZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjbw0KIHsNCiAgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9w
ZXJ0eU5hbWUpOw0KICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwNCi0gICAgICAgIFsm
emVyb1JlY3RdIChPcHRpb25hbDxGbG9hdFJlY3Q+IHR5cGVkVmFsdWUpIHsNCisgICAgICAgIFsm
XSAoT3B0aW9uYWw8RmxvYXRSZWN0PiB0eXBlZFZhbHVlKSB7DQogICAgICAgICAgICAgaWYgKCF0
eXBlZFZhbHVlKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0IHsgfTsNCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZWRWYWx1ZS52YWx1ZSgpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVO
b2RlLmgNCmluZGV4IDQzNzQ1MzU2Yzc5Li45MzRkNjNmNGE5YSAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZU5vZGUuaA0KQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgew0KIGNs
YXNzIEFYSXNvbGF0ZWRUcmVlOw0KIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7DQogDQotY2xh
c3MgQVhJc29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZU5vZGU+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiB7DQorY2xhc3MgQVhJ
c29sYXRlZFRyZWVOb2RlIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZU5vZGU+IHsNCiAN
CiBwdWJsaWM6DQogICAgIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50OF90IHsNCkBA
IC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToNCiAgICAgQVhJRCBtX2lkZW50aWZpZXI7DQogICAg
IGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07DQogICAgIEFYSXNvbGF0ZWRUcmVlSUQgbV90
cmVlSWRlbnRpZmllcjsNCi0gICAgV2Vha1B0cjxBWElzb2xhdGVkVHJlZT4gbV9jYWNoZWRUcmVl
Ow0KKyAgICBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IG1fY2FjaGVkVHJlZTsNCiAgICAgVmVjdG9y
PEFYSUQ+IG1fY2hpbGRyZW47DQogDQogI2lmIFBMQVRGT1JNKENPQ09BKQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQ0KaW5kZXggYjUzYjRhZTMxN2QuLmRhZjM0ZjE1
MGY1IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0NCkBAIC0y
ODAsNyArMjgwLDcgQEAgTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlTm9kZT4+JiBjaGkNCiB7DQogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNoaWxkcmVuLnNpemUoKV07DQogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikNCi0g
ICAgICAgIGFkZENoaWxkVG9BcnJheSgqY2hpbGQsIHJlc3VsdCkNCisgICAgICAgIGFkZENoaWxk
VG9BcnJheSgqY2hpbGQsIHJlc3VsdCk7DQogICAgIHJldHVybiBbcmVzdWx0IGF1dG9yZWxlYXNl
XTsNCiB9DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQ0K
aW5kZXggY2IyMjJiNGZiODguLjAxNTBmY2FlN2FmIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0N
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tDQpAQCAtMjAyMyw3ICsyMDIzLDcgQEAgc3RhdGljIHZvaWQgV2Vi
VHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCAqZWwNCiAgICAgICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZUNo
aWxkcmVuLnNpemUoKSk7DQogICAgICAgICBhdXRvIHRyZWUgPSB0cmVlTm9kZS0+dHJlZSgpOw0K
ICAgICAgICAgZm9yIChhdXRvIGNoaWxkSUQgOiBub2RlQ2hpbGRyZW4pDQotICAgICAgICAgICAg
Y2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZCkpOw0KKyAgICAg
ICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZCh0cmVlLT5ub2RlRm9ySUQoY2hpbGRJRCkp
Ow0KICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoY2hpbGRyZW4pOw0KICAgICB9DQog
I2VuZGlmDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZw0KaW5kZXggMTA3MDIzMGI2N2YuLjk3OWY4N2E2OTExIDEwMDY0NA0KLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cNCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
DQpAQCAtMSwzICsxLDE0IEBADQorMjAxOS0xMC0wOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXph
Y2hAYXBwbGUuY29tPg0KKw0KKyAgICAgICAgQVg6IE1ha2UgQVhJc29sYXRlZFRyZWUgY29tcGls
ZSBhZ2Fpbg0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjcwMg0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDg0OTY4Pg0KKw0KKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW06DQorICAgICAgICAo
LVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBpc29sYXRlZFRyZWVSb290T2JqZWN0
XSk6DQorDQogMjAxOS0xMC0wOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4N
CiANCiAgICAgICAgIElzTG9nZ2VkSW46IEFkZCBhcyBleHBlcmltZW50YWwgZmVhdHVyZQ0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQ0KaW5kZXggNDI3M2Ri
NWViMmIuLmQwZDU2NTdjNGZkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tDQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UubW0NCkBAIC0yNiw2ICsyNiw3IEBADQogI2ltcG9ydCAiY29uZmlnLmgiDQog
I2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCINCiANCisjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5UHJpdlNQSS5oIg0KICNpbXBvcnQgIldlYkZyYW1lLmgiDQogI2ltcG9y
dCAiV2ViUGFnZS5oIg0KICNpbXBvcnQgIldLQXJyYXkuaCINCkBAIC05Niw3ICs5Nyw3IEBADQog
ew0KICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsNCiAgICAgICAgIGlmIChhdXRvIGNhY2hlID0g
W3NlbGYgYXhPYmplY3RDYWNoZV0pIHsNCi0gICAgICAgICAgICBhdXRvIHRyZWUgPSBBWElzb2xh
dGVkVHJlZTo6aW5pdGlhbGl6ZVRyZWVGb3JQYWdlSWQobV9wYWdlSUQsICpjYWNoZSk7DQorICAg
ICAgICAgICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5
VHJlZSgpOw0KIA0KICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgY3JlYXRlZCBvdXIg
dHJlZSwgaW5pdGlhbGl6ZSB0aGUgc2Vjb25kYXJ5IHRocmVhZCwNCiAgICAgICAgICAgICAvLyBz
byBmdXR1cmUgcmVxdWVzdHMgY29tZSBpbiBvbiB0aGUgb3RoZXIgdGhyZWFkLg0KQEAgLTEwNSw3
ICsxMDYsNyBAQA0KICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdE5vZGUtPndyYXBwZXIoKTsN
CiAgICAgICAgIH0NCiAgICAgfSBlbHNlIHsNCi0gICAgICAgIGF1dG8gdHJlZSA9IEFYSXNvbGF0
ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKG1fcGFnZUlEKTsNCisgICAgICAgIGF1dG8gdHJlZSA9IFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKG1fcGFnZUlEKTsNCiAgICAgICAg
IHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsNCiAgICAgICAgIGlmIChhdXRvIHJvb3ROb2Rl
ID0gdHJlZS0+cm9vdE5vZGUoKSkNCiAgICAgICAgICAgICByZXR1cm4gcm9vdE5vZGUtPndyYXBw
ZXIoKTsNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380593</attachid>
            <date>2019-10-09 17:36:24 -0700</date>
            <delta_ts>2019-10-10 09:44:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12592</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NWUzMGEzZTQ4OS4uZTAyYzcwMzlmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0xMC0wOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBNYWtlIEFYSXNvbGF0ZWRUcmVlIGNvbXBpbGUgYWdhaW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjcwMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTYwODQ5Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGFuZCBydW50aW1lIGlzc3Vl
cyB3aGVuIGJ1aWxkaW5nIHdpdGggQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
dHJlZVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6bm9kZUZv
cklEIGNvbnN0KToKKyAgICAgICAgICAgIC0gUmVtb3ZlIHJlbGVhc2UgYXNzZXJ0IGhlcmUgYmVj
YXVzZSB0aGUgaW5pdGlhbCByZXF1ZXN0IHRoYXQgY29tZXMgdGhyb3VnaCBoYXBwZW5zIG9uIHRo
ZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgICAgV2UgbmVlZCB0byBoYW5kbGUgdGhhdCBjYXNl
IHNwZWNpZmljIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQ
ZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6aW5pdGlh
bGl6ZVBhZ2VUcmVlRm9ySUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OnNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyk6IERlbGV0ZWQuCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpyZWN0QXR0cmlidXRlVmFsdWUgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbToKKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvckFycmF5XSk6
CisKIDIwMTktMTAtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBDb21wYWN0UG9pbnRlclR1cGxlPC4uLiwgT3B0aW9uU2V0PC4u
Lj4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCBlMGJiZGEyYzdhNC4uYWFlNGQ4NjM4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNzMwLDggKzczMCwxMCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnJlbW92ZShBWElEIGF4SUQpCiAKICAgICBtX2lkc0luVXNlLnJlbW92ZShh
eElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChh
dXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpCi0gICAgICAgIEFYSXNvbGF0ZWRUcmVl
Ojp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpLT5yZW1vdmVOb2RlKGF4SUQpOworICAgIGlmIChhdXRv
IHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9
IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpKQorICAgICAgICAgICAgdHJl
ZS0+cmVtb3ZlTm9kZShheElEKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX29iamVj
dHMuc2l6ZSgpID49IG1faWRzSW5Vc2Uuc2l6ZSgpKTsKQEAgLTI5NDYsNiArMjk0OCw3IEBAIFJl
ZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkQWNjZXNz
aWJpbGl0eVRyZWVIaWVyYXJjaHkoCiAgICAgYXV0byBpc29sYXRlZFRyZWVOb2RlID0gQVhJc29s
YXRlZFRyZWVOb2RlOjpjcmVhdGUob2JqZWN0KTsKICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoaXNv
bGF0ZWRUcmVlTm9kZS5jb3B5UmVmKCkpOwogCisgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJl
ZUlkZW50aWZpZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsKICAgICBpc29sYXRlZFRyZWVOb2Rl
LT5zZXRQYXJlbnQocGFyZW50SUQpOwogICAgIGFzc29jaWF0ZUlzb2xhdGVkVHJlZU5vZGUob2Jq
ZWN0LCBpc29sYXRlZFRyZWVOb2RlLCB0cmVlLnRyZWVJZGVudGlmaWVyKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKaW5kZXggMGU3ZDU0MjA1YzguLjU4NmFkZjA2NzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXdUcmVl
SUQoKQogICAgIHJldHVybiArK3NfY3VycmVudFRyZWVJRDsKIH0KIAotSGFzaE1hcDx1aW50NjRf
dCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNhY2hlKCkK
K0hhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVk
VHJlZTo6dHJlZVBhZ2VDYWNoZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBt
YXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtNjcsMTYgKzY3LDYgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBBWE9i
amVjdENhY2hlJiBjYWNoZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJl
ZSgpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0SQFuUHJvZ3Jlc3ModHJ1ZSk7Ci0gICAg
dHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0
SW5Qcm9ncmVzcyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRyZWU7Ci19Ci0KIFJlZlB0cjxBWElzb2xh
dGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlOjpub2RlSW5UcmVlRm9ySUQoQVhJc29sYXRlZFRy
ZWVJRCB0cmVlSUQsIEFYSUQgYXhJRCkKIHsKICAgICByZXR1cm4gdHJlZUZvcklEKHRyZWVJRCkt
Pm5vZGVGb3JJRChheElEKTsKQEAgLTEwOSw3ICs5OSw2IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJl
ZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
CiBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklEKEFY
SUQgYXhJRCkgY29uc3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwg
aW5pdGlhbFJlcXVlc3QpOwogICAgIGlmICghYXhJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCk7CkBAIC0xNTAsMTQg
KzEzOSw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGVuZE5vZGVDaGFuZ2VzKFZlY3RvcjxS
ZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4mIGxvZykKICAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5h
cHBlbmQobm9kZS5jb3B5UmVmKCkpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRJbml0
aWFsUmVxdWVzdEluUHJvZ3Jlc3MoYm9vbCBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MpCi17Ci0g
ICAgbV9pbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MgPSBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3M7
Ci19Ci0KIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCBpbml0aWFsUmVxdWVzdCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIFZlY3RvcjxSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4g
YXBwZW5kQ29weTsKICAgICBzdGQ6OnN3YXAoYXBwZW5kQ29weSwgbV9wZW5kaW5nQXBwZW5kcyk7
CkBAIC0xNjksMTAgKzE1Myw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0No
YW5nZXMoKQogICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jvb3ROb2RlSUQ7CiAgICAgbV9m
b2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKICAgICAKLSAgICBmb3IgKGF1
dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KSB7Ci0gICAgICAgIGl0ZW0tPnNldFRyZWVJZGVudGlmaWVy
KG1fdHJlZUlEKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGl0ZW0tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShpdGVt
KSk7Ci0gICAgfQogCiAgICAgZm9yIChhdXRvIGl0ZW0gOiByZW1vdmVDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5k
ZXggNmVlYzI2NDUxOTguLjZhYmQ3ODNjMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM3
LDE1ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLWNsYXNz
IEFYSXNvbGF0ZWRUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRU
cmVlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiB7CitjbGFzcyBBWElz
b2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVkVHJlZSgpOwogCi0gICAgc3RhdGljIFJl
ZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBh
Z2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0
ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJ
RCk7CiAKQEAgLTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAgIC8vIENhbGwgb24gQVggdGhyZWFk
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVBlbmRpbmdDaGFuZ2VzKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyhib29sKTsKICAg
ICBBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
SUQ7IH0KIAogcHJpdmF0ZToKQEAgLTg2LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAgICBBWElzb2xh
dGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYSUQgbV9yb290Tm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07Ci0gICAgYm9vbCBt
X2luaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGUyZWY0MTIxMjI5Li5kOGRiYjlm
MmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJl
ZUlEIHRyZWVJZGVudGlmaWVyKQogewogICAgIG1fdHJlZUlkZW50aWZpZXIgPSB0cmVlSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChtX3Ry
ZWVJZGVudGlmaWVyKSkKLSAgICAgICAgbV9jYWNoZWRUcmVlID0gbWFrZVdlYWtQdHIodHJlZS5n
ZXQoKSk7CisgICAgICAgIG1fY2FjaGVkVHJlZSA9IHRyZWU7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6Zm9jdXNlZFVJRWxlbWVudCgpIGNv
bnN0CkBAIC0xMzIsNyArMTMyLDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRUcmVlTm9kZTo6cmVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28KIHsKICAgICBh
dXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFsmemVyb1JlY3RdIChPcHRpb25hbDxGbG9h
dFJlY3Q+IHR5cGVkVmFsdWUpIHsKKyAgICAgICAgWyZdIChPcHRpb25hbDxGbG9hdFJlY3Q+IHR5
cGVkVmFsdWUpIHsKICAgICAgICAgICAgIGlmICghdHlwZWRWYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRmxvYXRSZWN0IHsgfTsKICAgICAgICAgICAgIHJldHVybiB0eXBlZFZhbHVlLnZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCmluZGV4IDQzNzQ1MzU2Yzc5Li45MzRk
NjNmNGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3Np
YmlsaXR5T2JqZWN0OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEFYSXNvbGF0ZWRUcmVlTm9kZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWElzb2xhdGVkVHJl
ZU5vZGU+IHsKK2NsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29s
YXRlZFRyZWVOb2RlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1l
IDogdWludDhfdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBBWElEIG1faWRl
bnRpZmllcjsKICAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIEFYSXNvbGF0
ZWRUcmVlSUQgbV90cmVlSWRlbnRpZmllcjsKLSAgICBXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiBt
X2NhY2hlZFRyZWU7CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBtX2NhY2hlZFRyZWU7CiAg
ICAgVmVjdG9yPEFYSUQ+IG1fY2hpbGRyZW47CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBiNTNiNGFlMzE3ZC4uZGFm
MzRmMTUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAg
LTI4MCw3ICsyODAsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPj4mIGNoaQogewogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNoaWxkcmVuLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAg
ICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCByZXN1bHQpCisgICAgICAgIGFkZENoaWxkVG9B
cnJheSgqY2hpbGQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGNi
MjIyYjRmYjg4Li4wMTUwZmNhZTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNH
UGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAg
ICAgICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZUNoaWxkcmVuLnNpemUo
KSk7CiAgICAgICAgIGF1dG8gdHJlZSA9IHRyZWVOb2RlLT50cmVlKCk7CiAgICAgICAgIGZvciAo
YXV0byBjaGlsZElEIDogbm9kZUNoaWxkcmVuKQotICAgICAgICAgICAgY2hpbGRyZW4udW5jaGVj
a2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZCkpOworICAgICAgICAgICAgY2hpbGRyZW4u
dW5jaGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZElEKSk7CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGNoaWxkcmVuKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MTA3MDIzMGI2N2YuLjk3OWY4N2E2OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5
LTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IE1ha2UgQVhJc29sYXRlZFRyZWUgY29tcGlsZSBhZ2FpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNzAyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjA4NDk2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
IGlzb2xhdGVkVHJlZVJvb3RPYmplY3RdKToKKwogMjAxOS0xMC0wOSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJc0xvZ2dlZEluOiBBZGQgYXMgZXhwZXJp
bWVudGFsIGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbQppbmRleCA0MjczZGI1ZWIyYi4uZDBkNTY1N2M0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCIK
IAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVByaXZTUEkuaCIKICNpbXBvcnQgIldlYkZyYW1lLmgi
CiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXS0FycmF5LmgiCkBAIC05Niw3ICs5Nyw3
IEBACiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChhdXRvIGNhY2hl
ID0gW3NlbGYgYXhPYmplY3RDYWNoZV0pIHsKLSAgICAgICAgICAgIGF1dG8gdHJlZSA9IEFYSXNv
bGF0ZWRUcmVlOjppbml0aWFsaXplVHJlZUZvclBhZ2VJZChtX3BhZ2VJRCwgKmNhY2hlKTsKKyAg
ICAgICAgICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKIAogICAgICAgICAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBjcmVhdGVkIG91ciB0
cmVlLCBpbml0aWFsaXplIHRoZSBzZWNvbmRhcnkgdGhyZWFkLAogICAgICAgICAgICAgLy8gc28g
ZnV0dXJlIHJlcXVlc3RzIGNvbWUgaW4gb24gdGhlIG90aGVyIHRocmVhZC4KQEAgLTEwNSw3ICsx
MDYsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiByb290Tm9kZS0+d3JhcHBlcigpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6
OnRyZWVGb3JQYWdlSUQobV9wYWdlSUQpOworICAgICAgICBhdXRvIHRyZWUgPSBXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChtX3BhZ2VJRCk7CiAgICAgICAgIHRyZWUtPmFw
cGx5UGVuZGluZ0NoYW5nZXMoKTsKICAgICAgICAgaWYgKGF1dG8gcm9vdE5vZGUgPSB0cmVlLT5y
b290Tm9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJvb3ROb2RlLT53cmFwcGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380654</attachid>
            <date>2019-10-10 09:44:31 -0700</date>
            <delta_ts>2019-10-12 00:57:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13692</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NWUzMGEzZTQ4OS4uZTAyYzcwMzlmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0xMC0wOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBNYWtlIEFYSXNvbGF0ZWRUcmVlIGNvbXBpbGUgYWdhaW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjcwMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTYwODQ5Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGFuZCBydW50aW1lIGlzc3Vl
cyB3aGVuIGJ1aWxkaW5nIHdpdGggQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
dHJlZVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6bm9kZUZv
cklEIGNvbnN0KToKKyAgICAgICAgICAgIC0gUmVtb3ZlIHJlbGVhc2UgYXNzZXJ0IGhlcmUgYmVj
YXVzZSB0aGUgaW5pdGlhbCByZXF1ZXN0IHRoYXQgY29tZXMgdGhyb3VnaCBoYXBwZW5zIG9uIHRo
ZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgICAgV2UgbmVlZCB0byBoYW5kbGUgdGhhdCBjYXNl
IHNwZWNpZmljIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQ
ZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6aW5pdGlh
bGl6ZVBhZ2VUcmVlRm9ySUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZFRyZWU6OnNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyk6IERlbGV0ZWQuCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpyZWN0QXR0cmlidXRlVmFsdWUgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbToKKyAgICAgICAgKGNvbnZlcnRUb05TQXJyYXkpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjaGlsZHJlblZlY3RvckFycmF5XSk6
CisKIDIwMTktMTAtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBDb21wYWN0UG9pbnRlclR1cGxlPC4uLiwgT3B0aW9uU2V0PC4u
Lj4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCBlMGJiZGEyYzdhNC4uYWFlNGQ4NjM4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNzMwLDggKzczMCwxMCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnJlbW92ZShBWElEIGF4SUQpCiAKICAgICBtX2lkc0luVXNlLnJlbW92ZShh
eElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChh
dXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpCi0gICAgICAgIEFYSXNvbGF0ZWRUcmVl
Ojp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpLT5yZW1vdmVOb2RlKGF4SUQpOworICAgIGlmIChhdXRv
IHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9
IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpKQorICAgICAgICAgICAgdHJl
ZS0+cmVtb3ZlTm9kZShheElEKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX29iamVj
dHMuc2l6ZSgpID49IG1faWRzSW5Vc2Uuc2l6ZSgpKTsKQEAgLTI5NDYsNiArMjk0OCw3IEBAIFJl
ZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkQWNjZXNz
aWJpbGl0eVRyZWVIaWVyYXJjaHkoCiAgICAgYXV0byBpc29sYXRlZFRyZWVOb2RlID0gQVhJc29s
YXRlZFRyZWVOb2RlOjpjcmVhdGUob2JqZWN0KTsKICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoaXNv
bGF0ZWRUcmVlTm9kZS5jb3B5UmVmKCkpOwogCisgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJl
ZUlkZW50aWZpZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsKICAgICBpc29sYXRlZFRyZWVOb2Rl
LT5zZXRQYXJlbnQocGFyZW50SUQpOwogICAgIGFzc29jaWF0ZUlzb2xhdGVkVHJlZU5vZGUob2Jq
ZWN0LCBpc29sYXRlZFRyZWVOb2RlLCB0cmVlLnRyZWVJZGVudGlmaWVyKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKaW5kZXggMGU3ZDU0MjA1YzguLjU4NmFkZjA2NzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXdUcmVl
SUQoKQogICAgIHJldHVybiArK3NfY3VycmVudFRyZWVJRDsKIH0KIAotSGFzaE1hcDx1aW50NjRf
dCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNhY2hlKCkK
K0hhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVk
VHJlZTo6dHJlZVBhZ2VDYWNoZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBt
YXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtNjcsMTYgKzY3LDYgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBBWE9i
amVjdENhY2hlJiBjYWNoZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJl
ZSgpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0SQFuUHJvZ3Jlc3ModHJ1ZSk7Ci0gICAg
dHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0
SW5Qcm9ncmVzcyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRyZWU7Ci19Ci0KIFJlZlB0cjxBWElzb2xh
dGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlOjpub2RlSW5UcmVlRm9ySUQoQVhJc29sYXRlZFRy
ZWVJRCB0cmVlSUQsIEFYSUQgYXhJRCkKIHsKICAgICByZXR1cm4gdHJlZUZvcklEKHRyZWVJRCkt
Pm5vZGVGb3JJRChheElEKTsKQEAgLTEwOSw3ICs5OSw2IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJl
ZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
CiBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklEKEFY
SUQgYXhJRCkgY29uc3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwg
aW5pdGlhbFJlcXVlc3QpOwogICAgIGlmICghYXhJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCk7CkBAIC0xNTAsMTQg
KzEzOSw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGVuZE5vZGVDaGFuZ2VzKFZlY3RvcjxS
ZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4mIGxvZykKICAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5h
cHBlbmQobm9kZS5jb3B5UmVmKCkpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRJbml0
aWFsUmVxdWVzdEluUHJvZ3Jlc3MoYm9vbCBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MpCi17Ci0g
ICAgbV9pbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MgPSBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3M7
Ci19Ci0KIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCBpbml0aWFsUmVxdWVzdCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIFZlY3RvcjxSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4g
YXBwZW5kQ29weTsKICAgICBzdGQ6OnN3YXAoYXBwZW5kQ29weSwgbV9wZW5kaW5nQXBwZW5kcyk7
CkBAIC0xNjksMTAgKzE1Myw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0No
YW5nZXMoKQogICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jvb3ROb2RlSUQ7CiAgICAgbV9m
b2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKICAgICAKLSAgICBmb3IgKGF1
dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KSB7Ci0gICAgICAgIGl0ZW0tPnNldFRyZWVJZGVudGlmaWVy
KG1fdHJlZUlEKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGl0ZW0tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShpdGVt
KSk7Ci0gICAgfQogCiAgICAgZm9yIChhdXRvIGl0ZW0gOiByZW1vdmVDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5k
ZXggNmVlYzI2NDUxOTguLjZhYmQ3ODNjMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM3
LDE1ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLWNsYXNz
IEFYSXNvbGF0ZWRUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRU
cmVlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiB7CitjbGFzcyBBWElz
b2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVkVHJlZSgpOwogCi0gICAgc3RhdGljIFJl
ZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBh
Z2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0
ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJ
RCk7CiAKQEAgLTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAgIC8vIENhbGwgb24gQVggdGhyZWFk
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVBlbmRpbmdDaGFuZ2VzKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyhib29sKTsKICAg
ICBBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
SUQ7IH0KIAogcHJpdmF0ZToKQEAgLTg2LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAgICBBWElzb2xh
dGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYSUQgbV9yb290Tm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07Ci0gICAgYm9vbCBt
X2luaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGUyZWY0MTIxMjI5Li5kOGRiYjlm
MmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJl
ZUlEIHRyZWVJZGVudGlmaWVyKQogewogICAgIG1fdHJlZUlkZW50aWZpZXIgPSB0cmVlSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChtX3Ry
ZWVJZGVudGlmaWVyKSkKLSAgICAgICAgbV9jYWNoZWRUcmVlID0gbWFrZVdlYWtQdHIodHJlZS5n
ZXQoKSk7CisgICAgICAgIG1fY2FjaGVkVHJlZSA9IHRyZWU7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6Zm9jdXNlZFVJRWxlbWVudCgpIGNv
bnN0CkBAIC0xMzIsNyArMTMyLDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRUcmVlTm9kZTo6cmVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28KIHsKICAgICBh
dXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFsmemVyb1JlY3RdIChPcHRpb25hbDxGbG9h
dFJlY3Q+IHR5cGVkVmFsdWUpIHsKKyAgICAgICAgWyZdIChPcHRpb25hbDxGbG9hdFJlY3Q+IHR5
cGVkVmFsdWUpIHsKICAgICAgICAgICAgIGlmICghdHlwZWRWYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRmxvYXRSZWN0IHsgfTsKICAgICAgICAgICAgIHJldHVybiB0eXBlZFZhbHVlLnZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCmluZGV4IDQzNzQ1MzU2Yzc5Li45MzRk
NjNmNGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3Np
YmlsaXR5T2JqZWN0OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEFYSXNvbGF0ZWRUcmVlTm9kZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWElzb2xhdGVkVHJl
ZU5vZGU+IHsKK2NsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29s
YXRlZFRyZWVOb2RlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1l
IDogdWludDhfdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBBWElEIG1faWRl
bnRpZmllcjsKICAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIEFYSXNvbGF0
ZWRUcmVlSUQgbV90cmVlSWRlbnRpZmllcjsKLSAgICBXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiBt
X2NhY2hlZFRyZWU7CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBtX2NhY2hlZFRyZWU7CiAg
ICAgVmVjdG9yPEFYSUQ+IG1fY2hpbGRyZW47CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBiNTNiNGFlMzE3ZC4uZGFm
MzRmMTUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAg
LTI4MCw3ICsyODAsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPj4mIGNoaQogewogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNoaWxkcmVuLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAg
ICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCByZXN1bHQpCisgICAgICAgIGFkZENoaWxkVG9B
cnJheSgqY2hpbGQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGNi
MjIyYjRmYjg4Li4wMTUwZmNhZTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNH
UGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAg
ICAgICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZUNoaWxkcmVuLnNpemUo
KSk7CiAgICAgICAgIGF1dG8gdHJlZSA9IHRyZWVOb2RlLT50cmVlKCk7CiAgICAgICAgIGZvciAo
YXV0byBjaGlsZElEIDogbm9kZUNoaWxkcmVuKQotICAgICAgICAgICAgY2hpbGRyZW4udW5jaGVj
a2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZCkpOworICAgICAgICAgICAgY2hpbGRyZW4u
dW5jaGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZElEKSk7CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGNoaWxkcmVuKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MTA3MDIzMGI2N2YuLjk3OWY4N2E2OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5
LTEwLTA5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IE1ha2UgQVhJc29sYXRlZFRyZWUgY29tcGlsZSBhZ2FpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNzAyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjA4NDk2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
IGlzb2xhdGVkVHJlZVJvb3RPYmplY3RdKToKKwogMjAxOS0xMC0wOSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJc0xvZ2dlZEluOiBBZGQgYXMgZXhwZXJp
bWVudGFsIGZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMv
QmFzZVRhcmdldC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFzZVRh
cmdldC54Y2NvbmZpZwppbmRleCA2ZjI4Zjc3YzhkZC4uNjBkYTQwYzFjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jhc2VUYXJnZXQueGNjb25maWcKQEAgLTMzLDcg
KzMzLDcgQEAgRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19iYXNlID0gIiQoVU1CUkVMTEFfRlJBTUVX
T1JLU19ESVIpIgogRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoRlJBTUVXT1JLX1NFQVJDSF9Q
QVRIU19iYXNlKTsKIEZSQU1FV09SS19TRUFSQ0hfUEFUSFNbc2RrPWlwaG9uZSpdID0gJChGUkFN
RVdPUktfU0VBUkNIX1BBVEhTX2Jhc2UpICQoV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUik7CiAK
LVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChpbmhlcml0ZWQpICQoU0RLUk9PVCkk
KFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVN
X0xJQlJBUllfRElSKS9GcmFtZXdvcmtzOworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMg
PSAkKGluaGVyaXRlZCkgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJh
bWV3b3JrcyAkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MgJChTREtS
T09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrczsKIAogR0NDX1BSRUZJWF9IRUFERVIgPSBX
ZWJLaXQyUHJlZml4Lmg7CiBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19E
RUZJTkVTKSAkKEZFQVRVUkVfREVGSU5FUykgJChXS19DT1JFX1BSRURJQ1RJT05fREVGSU5FUykg
VV9ISURFX0RFUFJFQ0FURURfQVBJIFVfRElTQUJMRV9SRU5BTUlORz0xIFVfU0hPV19DUExVU1BM
VVNfQVBJPTAgRlJBTUVXT1JLX05BTUU9V2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDQyNzNkYjVlYjJiLi5kMGQ1NjU3YzRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UHJpdlNQSS5oIgogI2lt
cG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldLQXJyYXku
aCIKQEAgLTk2LDcgKzk3LDcgQEAKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8gY2FjaGUgPSBbc2VsZiBheE9iamVjdENhY2hlXSkgewotICAgICAgICAgICAg
YXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVUcmVlRm9yUGFnZUlkKG1fcGFn
ZUlELCAqY2FjaGUpOworICAgICAgICAgICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNv
bGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgpOwogCiAgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBo
YXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGluaXRpYWxpemUgdGhlIHNlY29uZGFyeSB0aHJlYWQsCiAg
ICAgICAgICAgICAvLyBzbyBmdXR1cmUgcmVxdWVzdHMgY29tZSBpbiBvbiB0aGUgb3RoZXIgdGhy
ZWFkLgpAQCAtMTA1LDcgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3ROb2Rl
LT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIHRyZWUg
PSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChtX3BhZ2VJRCk7CisgICAgICAgIGF1dG8g
dHJlZSA9IFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKG1fcGFnZUlEKTsK
ICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwogICAgICAgICBpZiAoYXV0byBy
b290Tm9kZSA9IHRyZWUtPnJvb3ROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gcm9vdE5vZGUt
PndyYXBwZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380993</attachid>
            <date>2019-10-15 09:36:07 -0700</date>
            <delta_ts>2019-10-15 17:27:29 -0700</delta_ts>
            <desc>Re-submitting r251045 with a fix for internal builds.</desc>
            <filename>isolatedtree.diff</filename>
            <type>text/plain</type>
            <size>13197</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYjRkNWQzMjI1My4uZmE1MmZjYjZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0xMC0xNSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQVg6IE1ha2UgQVhJc29sYXRlZFRyZWUgY29tcGlsZSBhZ2Fpbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNzAyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjA4NDk2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBK
b2FubWFyaWUgRGlnZ3MuCisKKyAgICAgICAgUmUtc3VibWl0dGluZyByMjUxMDQ1IHdpdGggYSBm
aXggZm9yIGludGVybmFsIGJ1aWxkcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRBY2Nlc3NpYmls
aXR5VHJlZUhpZXJhcmNoeSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnRy
ZWVQYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om5vZGVGb3JJ
RCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5n
Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBh
Z2VUcmVlRm9ySUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6
OnNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZU5vZGU6OnJlY3RBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLm1tOgorICAgICAgICAoY29udmVydFRvTlNBcnJheSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNoaWxkcmVuVmVjdG9yQXJyYXldKToK
KwogMjAxOS0xMC0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9h
ZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCBlMGJiZGEyYzdhNC4uYWFlNGQ4NjM4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNzMwLDggKzczMCwxMCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnJlbW92ZShBWElEIGF4SUQpCiAKICAgICBtX2lkc0luVXNlLnJlbW92ZShh
eElEKTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGlmIChh
dXRvIHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpCi0gICAgICAgIEFYSXNvbGF0ZWRUcmVl
Ojp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpLT5yZW1vdmVOb2RlKGF4SUQpOworICAgIGlmIChhdXRv
IHBhZ2VJRCA9IG1fZG9jdW1lbnQucGFnZUlEKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gdHJlZSA9
IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCpwYWdlSUQpKQorICAgICAgICAgICAgdHJl
ZS0+cmVtb3ZlTm9kZShheElEKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX29iamVj
dHMuc2l6ZSgpID49IG1faWRzSW5Vc2Uuc2l6ZSgpKTsKQEAgLTI5NDYsNiArMjk0OCw3IEBAIFJl
ZjxBWElzb2xhdGVkVHJlZU5vZGU+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkQWNjZXNz
aWJpbGl0eVRyZWVIaWVyYXJjaHkoCiAgICAgYXV0byBpc29sYXRlZFRyZWVOb2RlID0gQVhJc29s
YXRlZFRyZWVOb2RlOjpjcmVhdGUob2JqZWN0KTsKICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoaXNv
bGF0ZWRUcmVlTm9kZS5jb3B5UmVmKCkpOwogCisgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJl
ZUlkZW50aWZpZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsKICAgICBpc29sYXRlZFRyZWVOb2Rl
LT5zZXRQYXJlbnQocGFyZW50SUQpOwogICAgIGFzc29jaWF0ZUlzb2xhdGVkVHJlZU5vZGUob2Jq
ZWN0LCBpc29sYXRlZFRyZWVOb2RlLCB0cmVlLnRyZWVJZGVudGlmaWVyKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKaW5kZXggMGU3ZDU0MjA1YzguLjU4NmFkZjA2NzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXdUcmVl
SUQoKQogICAgIHJldHVybiArK3NfY3VycmVudFRyZWVJRDsKIH0KIAotSGFzaE1hcDx1aW50NjRf
dCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNhY2hlKCkK
K0hhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVk
VHJlZTo6dHJlZVBhZ2VDYWNoZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBt
YXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtNjcsMTYgKzY3LDYgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBBWE9i
amVjdENhY2hlJiBjYWNoZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byB0cmVlID0gY2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJl
ZSgpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0SQFuUHJvZ3Jlc3ModHJ1ZSk7Ci0gICAg
dHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIHRyZWUtPnNldEluaXRpYWxSZXF1ZXN0
SW5Qcm9ncmVzcyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRyZWU7Ci19Ci0KIFJlZlB0cjxBWElzb2xh
dGVkVHJlZU5vZGU+IEFYSXNvbGF0ZWRUcmVlOjpub2RlSW5UcmVlRm9ySUQoQVhJc29sYXRlZFRy
ZWVJRCB0cmVlSUQsIEFYSUQgYXhJRCkKIHsKICAgICByZXR1cm4gdHJlZUZvcklEKHRyZWVJRCkt
Pm5vZGVGb3JJRChheElEKTsKQEAgLTEwOSw3ICs5OSw2IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJl
ZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
CiBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklEKEFY
SUQgYXhJRCkgY29uc3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwg
aW5pdGlhbFJlcXVlc3QpOwogICAgIGlmICghYXhJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCk7CkBAIC0xNTAsMTQg
KzEzOSw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGVuZE5vZGVDaGFuZ2VzKFZlY3RvcjxS
ZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4mIGxvZykKICAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5h
cHBlbmQobm9kZS5jb3B5UmVmKCkpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRJbml0
aWFsUmVxdWVzdEluUHJvZ3Jlc3MoYm9vbCBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MpCi17Ci0g
ICAgbV9pbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3MgPSBpbml0aWFsUmVxdWVzdEluUHJvZ3Jlc3M7
Ci19Ci0KIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCBpbml0aWFsUmVxdWVzdCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIFZlY3RvcjxSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4g
YXBwZW5kQ29weTsKICAgICBzdGQ6OnN3YXAoYXBwZW5kQ29weSwgbV9wZW5kaW5nQXBwZW5kcyk7
CkBAIC0xNjksMTAgKzE1Myw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0No
YW5nZXMoKQogICAgIG1fcm9vdE5vZGVJRCA9IG1fcGVuZGluZ1Jvb3ROb2RlSUQ7CiAgICAgbV9m
b2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKICAgICAKLSAgICBmb3IgKGF1
dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KSB7Ci0gICAgICAgIGl0ZW0tPnNldFRyZWVJZGVudGlmaWVy
KG1fdHJlZUlEKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhcHBlbmRDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGl0ZW0tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShpdGVt
KSk7Ci0gICAgfQogCiAgICAgZm9yIChhdXRvIGl0ZW0gOiByZW1vdmVDb3B5KQogICAgICAgICBt
X3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5k
ZXggNmVlYzI2NDUxOTguLjZhYmQ3ODNjMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM3
LDE1ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLWNsYXNz
IEFYSXNvbGF0ZWRUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRU
cmVlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiB7CitjbGFzcyBBWElz
b2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVkVHJlZSgpOwogCi0gICAgc3RhdGljIFJl
ZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBh
Z2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0
ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJ
RCk7CiAKQEAgLTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAgIC8vIENhbGwgb24gQVggdGhyZWFk
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVBlbmRpbmdDaGFuZ2VzKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEluaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzcyhib29sKTsKICAg
ICBBWElzb2xhdGVkVHJlZUlEIHRyZWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
SUQ7IH0KIAogcHJpdmF0ZToKQEAgLTg2LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAgICBBWElzb2xh
dGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYSUQgbV9yb290Tm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07Ci0gICAgYm9vbCBt
X2luaXRpYWxSZXF1ZXN0SW5Qcm9ncmVzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IGUyZWY0MTIxMjI5Li5kOGRiYjlm
MmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWVOb2RlOjpzZXRUcmVlSWRlbnRpZmllcihBWElzb2xhdGVkVHJl
ZUlEIHRyZWVJZGVudGlmaWVyKQogewogICAgIG1fdHJlZUlkZW50aWZpZXIgPSB0cmVlSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChtX3Ry
ZWVJZGVudGlmaWVyKSkKLSAgICAgICAgbV9jYWNoZWRUcmVlID0gbWFrZVdlYWtQdHIodHJlZS5n
ZXQoKSk7CisgICAgICAgIG1fY2FjaGVkVHJlZSA9IHRyZWU7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UqIEFYSXNvbGF0ZWRUcmVlTm9kZTo6Zm9jdXNlZFVJRWxlbWVudCgpIGNv
bnN0CkBAIC0xMzIsNyArMTMyLDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRUcmVlTm9kZTo6cmVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY28KIHsKICAgICBh
dXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCi0gICAgICAgIFsmemVyb1JlY3RdIChPcHRpb25hbDxGbG9h
dFJlY3Q+IHR5cGVkVmFsdWUpIHsKKyAgICAgICAgWyZdIChPcHRpb25hbDxGbG9hdFJlY3Q+IHR5
cGVkVmFsdWUpIHsKICAgICAgICAgICAgIGlmICghdHlwZWRWYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRmxvYXRSZWN0IHsgfTsKICAgICAgICAgICAgIHJldHVybiB0eXBlZFZhbHVlLnZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCmluZGV4IDQzNzQ1MzU2Yzc5Li45MzRk
NjNmNGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBBY2Nlc3Np
YmlsaXR5T2JqZWN0OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZU5vZGUgZmluYWwgOiBwdWJsaWMg
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEFYSXNvbGF0ZWRUcmVlTm9kZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWElzb2xhdGVkVHJl
ZU5vZGU+IHsKK2NsYXNzIEFYSXNvbGF0ZWRUcmVlTm9kZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29s
YXRlZFRyZWVOb2RlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1l
IDogdWludDhfdCB7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBBWElEIG1faWRl
bnRpZmllcjsKICAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIEFYSXNvbGF0
ZWRUcmVlSUQgbV90cmVlSWRlbnRpZmllcjsKLSAgICBXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiBt
X2NhY2hlZFRyZWU7CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBtX2NhY2hlZFRyZWU7CiAg
ICAgVmVjdG9yPEFYSUQ+IG1fY2hpbGRyZW47CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBiNTNiNGFlMzE3ZC4uZGFm
MzRmMTUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAg
LTI4MCw3ICsyODAsNyBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QVhJc29sYXRlZFRyZWVOb2RlPj4mIGNoaQogewogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNoaWxkcmVuLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAg
ICAgICBhZGRDaGlsZFRvQXJyYXkoKmNoaWxkLCByZXN1bHQpCisgICAgICAgIGFkZENoaWxkVG9B
cnJheSgqY2hpbGQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGNi
MjIyYjRmYjg4Li4wMTUwZmNhZTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNH
UGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAg
ICAgICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZUNoaWxkcmVuLnNpemUo
KSk7CiAgICAgICAgIGF1dG8gdHJlZSA9IHRyZWVOb2RlLT50cmVlKCk7CiAgICAgICAgIGZvciAo
YXV0byBjaGlsZElEIDogbm9kZUNoaWxkcmVuKQotICAgICAgICAgICAgY2hpbGRyZW4udW5jaGVj
a2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZCkpOworICAgICAgICAgICAgY2hpbGRyZW4u
dW5jaGVja2VkQXBwZW5kKHRyZWUtPm5vZGVGb3JJRChjaGlsZElEKSk7CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGNoaWxkcmVuKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YmIwNzY3NzcyNzEuLjRhNTViYjNlNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5
LTEwLTE1ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAg
ICBBWDogTWFrZSBBWElzb2xhdGVkVHJlZSBjb21waWxlIGFnYWluCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI3MDIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU2MDg0OTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvYW5tYXJpZSBEaWdncy4K
KworICAgICAgICBSZS1zdWJtaXR0aW5nIHIyNTEwNDUgd2l0aCBhIGZpeCBmb3IgaW50ZXJuYWwg
YnVpbGRzLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL21hYy9BY2Nlc3NpYmlsaXR5UHJpdlNQ
SS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlIGlzb2xhdGVkVHJlZVJvb3RPYmplY3RdKToKKwogMjAxOS0xMC0xNSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rml4IHNldmVyYWwgR1RLIHRlc3RzIGluIC9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudCBjcmFzaGlu
ZyBzaW5jZSByMjQxOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9t
YWMvQWNjZXNzaWJpbGl0eVByaXZTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21h
Yy9BY2Nlc3NpYmlsaXR5UHJpdlNQSS5oCmluZGV4IGJiZjkxNzdiNTkyLi43ODRjZGEzYTMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FjY2Vzc2liaWxpdHlQ
cml2U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FjY2Vzc2liaWxp
dHlQcml2U1BJLmgKQEAgLTI5LDcgKzI5LDExIEBACiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmRlZiIKKworI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxISVNlcnZpY2VzL0FjY2Vzc2liaWxpdHlQcml2Lmg+
CisjZW5kaWYKKwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogCiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDQyNzNkYjVlYjJi
Li5kMGQ1NjU3YzRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5UHJpdlNQSS5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIK
ICNpbXBvcnQgIldLQXJyYXkuaCIKQEAgLTk2LDcgKzk3LDcgQEAKIHsKICAgICBpZiAoaXNNYWlu
VGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGF1dG8gY2FjaGUgPSBbc2VsZiBheE9iamVjdENhY2hl
XSkgewotICAgICAgICAgICAgYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVU
cmVlRm9yUGFnZUlkKG1fcGFnZUlELCAqY2FjaGUpOworICAgICAgICAgICAgYXV0byB0cmVlID0g
Y2FjaGUtPmdlbmVyYXRlSXNvbGF0ZWRBY2Nlc3NpYmlsaXR5VHJlZSgpOwogCiAgICAgICAgICAg
ICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGluaXRpYWxpemUgdGhlIHNl
Y29uZGFyeSB0aHJlYWQsCiAgICAgICAgICAgICAvLyBzbyBmdXR1cmUgcmVxdWVzdHMgY29tZSBp
biBvbiB0aGUgb3RoZXIgdGhyZWFkLgpAQCAtMTA1LDcgKzEwNiw3IEBACiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJvb3ROb2RlLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewot
ICAgICAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChtX3BhZ2VJ
RCk7CisgICAgICAgIGF1dG8gdHJlZSA9IFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9y
UGFnZUlEKG1fcGFnZUlEKTsKICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwog
ICAgICAgICBpZiAoYXV0byByb290Tm9kZSA9IHRyZWUtPnJvb3ROb2RlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcm9vdE5vZGUtPndyYXBwZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>