<?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>173338</bug_id>
          
          <creation_ts>2017-06-13 16:20:22 -0700</creation_ts>
          <short_desc>Using -[WebItemProviderPasteboard setItemProviders:] to swap out item providers before a drop breaks item provider loading</short_desc>
          <delta_ts>2017-06-16 20:13:55 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318882</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-13 16:20:22 -0700</bug_when>
    <thetext>Some internal editing clients need the ability to withhold a subset of a session&apos;s item providers from being handled by the page on drop. Currently, this results in WebItemProviderPasteboard being unable to load content, due to WebItemProviderPasteboard&apos;s list of preferred type identifiers to load not matching up with its list of item providers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319354</commentid>
    <comment_count>1</comment_count>
      <attachid>312928</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-14 16:18:14 -0700</bug_when>
    <thetext>Created attachment 312928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319355</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-14 16:18:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/32777720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319362</commentid>
    <comment_count>3</comment_count>
      <attachid>312932</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-14 16:30:44 -0700</bug_when>
    <thetext>Created attachment 312932
Rebase on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319405</commentid>
    <comment_count>4</comment_count>
      <attachid>312942</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-14 18:11:50 -0700</bug_when>
    <thetext>Created attachment 312942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319409</commentid>
    <comment_count>5</comment_count>
      <attachid>312942</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-14 18:29:41 -0700</bug_when>
    <thetext>Comment on attachment 312942
Patch

Much nicer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319615</commentid>
    <comment_count>6</comment_count>
      <attachid>312990</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-15 10:27:29 -0700</bug_when>
    <thetext>Created attachment 312990
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319624</commentid>
    <comment_count>7</comment_count>
      <attachid>312990</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-15 11:11:56 -0700</bug_when>
    <thetext>Comment on attachment 312990
Patch for landing

Clearing flags on attachment: 312990

Committed r218343: &lt;http://trac.webkit.org/changeset/218343&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312928</attachid>
            <date>2017-06-14 16:18:14 -0700</date>
            <delta_ts>2017-06-14 16:30:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173338-20170614161813.patch</filename>
            <type>text/plain</type>
            <size>40682</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyZDdmZmM3NjIxY2M1
MmMxMDIyZTVkMjU1MTczNjM0MDIzNWZmNy4uYWU5MGI0ODMyNjFkMDkxOTE4MGVjYmVmN2EzOTZj
OWM0ZDc3YjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE3LTA2LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRl
bSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgcmVwbGFjaW5nIHRoZSBsaXN0IG9m
IFVJSXRlbVByb3ZpZGVycyByaWdodCBiZWZvcmUgYSBkcm9wIGlzIGhhbmRsZWQgcmVzdWx0cyBp
bgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGZhaWxpbmcgdG8gbG9hZCBub24t
InB1YmxpYy5jb250ZW50Ii1jb25mb3JtYW50IGl0ZW1zLiBUaGlzIGlzIGJlY2F1c2UgRHJhZ0Nv
bnRyb2xsZXIKKyAgICAgICAgY29tcHV0ZXMgYW5kIHNlbmRzIHRvIHRoZSBVSSBwcm9jZXNzIGEg
bGlzdCBvZiBVVElzIHRvIGxvYWQgKHByZWZlcnJlZFR5cGVJZGVudGlmaWVyczogb25lIHR5cGUg
aWRlbnRpZmllciBmb3IKKyAgICAgICAgZWFjaCBpdGVtIHByb3ZpZGVyIGluIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQpLiBIb3dldmVyLCBpZiB0aGUgbGlzdCBvZiBpdGVtIHByb3ZpZGVycyBj
aGFuZ2VzIGltbWVkaWF0ZWx5CisgICAgICAgIGJlZm9yZSBhIGRyb3AgaXMgcGVyZm9ybWVkLCBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHdpbGwgZ2V0IGludG8gYW4gaW5jb25zaXN0ZW50IHN0
YXRlIHdoZXJlIGl0IGhhcyBhCisgICAgICAgIGRpZmZlcmVudCBudW1iZXIgb2YgcHJlZmVycmVk
IHR5cGUgaWRlbnRpZmllcnMgdG8gbG9hZCB0aGFuIGF2YWlsYWJsZSBpdGVtIHByb3ZpZGVycy4g
VGhpcyBjYXVzZXMKKyAgICAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB0byBmYWlsIHdo
ZW4gY2hvb3Npbmcgd2hhdCB0eXBlIGlkZW50aWZpZXJzIHRvIGxvYWQgZnJvbSBlYWNoIGl0ZW0g
cHJvdmlkZXIuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGluc3RlYWQgaGF2ZSB0aGUgd2Vi
IHByb2Nlc3MgcHJvcGFnYXRlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdHlwZSBpZGVudGlmaWVycyB0
byB0aGUgVUkgcHJvY2VzcywKKyAgICAgICAgd2hpY2ggaXMgYSBwcm9wZXJ0eSBvZiBvbmx5IHRo
ZSBkcm9wIGRlc3RpbmF0aW9uIHJhdGhlciB0aGFuIGJvdGggdGhlIGRlc3RpbmF0aW9uIGFuZCBp
dGVtIHByb3ZpZGVycy4gV2hlbgorICAgICAgICBwZXJmb3JtaW5nIGEgZHJvcCwgd2UgdGhlbiB1
c2UgdGhlIGN1cnJlbnQgaXRlbSBwcm92aWRlcnMgb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCB0byBjb25zdWx0IHRoaXMgbGlzdCBvZgorICAgICAgICBzdXBwb3J0ZWQgdHlwZSBpZGVudGlm
aWVycyB0byByZXNvbHZlIG91ciBsaXN0IG9mIHByZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIHRv
IGxvYWQuCisKKyAgICAgICAgR2xvYmFsbHkgcmVuYW1lcyB1cGRhdGVQcmVmZXJyZWRUeXBlSWRl
bnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLgorCisgICAgICAgIFRl
c3RzOgorICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZU92ZXJyaWRl
RHJvcEZpbGVVcGxvYWQKKyAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRXh0ZXJuYWxTb3Vy
Y2VPdmVycmlkZURyb3BJbnNlcnRVUkwKKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5k
bGluZ01ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dXBkYXRl
UHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVQcmVmZXJyZWRUeXBl
SWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IGluaXRdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZCB0eXBlSXNBcHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHR5cGVJZGVudGlmaWVyVG9Mb2FkRm9yUmVnaXN0
ZXJlZFR5cGVJZGVudGZpZXJzOl0pOgorCisgICAgICAgIEFkZCBsb2dpYyB0byByZXNvbHZlIHBy
ZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIGZyb20gYW4gaXRlbSBwcm92aWRlcnMgbGlzdCBvZiBy
ZWdpc3RlcmVkIHR5cGUgaWRlbnRpZmllcnMuCisgICAgICAgIFRoaXMgZm9ybWVybHkgZXhpc3Rl
ZCBvbiBEcmFnRGF0YS4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRv
QWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOnN5bmNocm9ub3VzVGltZW91
dDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVQcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tOgorCisgICAgICAgIFJlbW92ZSBwcmVmZXJyZWQgdHlwZSBpZGVudGlmaWVy
IHJlc29sdXRpb24gbG9naWMgZnJvbSBEcmFnRGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6dHlw
ZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKTogRGVsZXRlZC4K
KwogMjAxNy0wNi0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBsb2dnaW5nIGZvciBsYXlvdXQgdGVzdHMgd2hlbiByQUYgY2FsbGJhY2tzIGdldCBz
dXNwZW5kZWQgYW5kIHJlc3VtZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NTk1NmY1NzFmODNmOTMx
ZDc5M2Y4MTI0YzAwZDViZTU0YmU5NWI5Li42ZDEyOWRmNWQ5ZTY2NjgxNjk5ZjVkNmU0MWRjYmFl
NDk1ZjI1MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDYtMTQg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNpbmcg
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSB0byBzd2FwIG91
dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHByb3ZpZGVyIGxvYWRp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzMz
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI3Nzc3MjA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVycyB0byB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyk6IERl
bGV0ZWQuCisKIDIwMTctMDYtMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCBXM0MgU2VjdXJlIENvbnRleHRzIERyYWZ0IFNwZWNpZmljYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCAwYjA3MDI1MDdhMzQwYjA5MDAxMzBkYTA3ZjUyYTE2ZjRiOTg0YTIw
Li45MGQ4NzBlZTVkZmIyNmJmZThjNTA4M2JmMTA0YmVhMTlmYWY4MjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTctMDYtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNpbmcgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNl
dEl0ZW1Qcm92aWRlcnM6XSB0byBzd2FwIG91dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9w
IGJyZWFrcyBpdGVtIHByb3ZpZGVyIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzMzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI3
Nzc3MjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyB0byB1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMuIEFsc28sIGludHJvZHVjZQorICAgICAgICBfd2ViVmlldzp3aWxsUGVy
Zm9ybURyb3BXaXRoU2Vzc2lvbjogYXMgU1BJIG9uIFdLVUlEZWxlZ2F0ZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVycyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorCiAyMDE3LTA2LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggY2JlMTAzZGNlNDc3MWU4NTVhYTg4NGY3Y2M1
Njk4ZmI4ZTg2YmFkZS4uNDgxODNmOWM0MTU4ODhiNmVkMzg0ZDMxNDFhZjg3NDZmNDc4NjJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTMwOSw3ICszMDksNiBA
QCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3Bh
Z2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkp
KTsKIAotICAgIG1fcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzVG9Mb2FkID0geyB9OwogICAgIG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7
CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID09IERyYWdEZXN0aW5hdGlvbkFjdGlv
bk5vbmUpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2Fs
bCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwpAQCAtMzI0LDcgKzMyMyw3IEBAIERy
YWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJh
Z0hhbmRsaW5nTWV0aG9kOjpQYWdlTG9hZDsKICAgICB9CiAKLSAgICB1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QobV9kcmFnSGFuZGxpbmdNZXRob2Qs
IGRyYWdEYXRhKTsKKyAgICB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFu
ZGxpbmdNZXRob2QobV9kcmFnSGFuZGxpbmdNZXRob2QsIGRyYWdEYXRhKTsKICAgICByZXR1cm4g
ZHJhZ09wZXJhdGlvbjsKIH0KIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBFbGVtZW50KiBl
bGVtZW50VW5kZXJNb3VzZShEb2N1bWVudCogZG9jdW1lbnRVbmRlck1vdXNlLCBjb25zdCBJbnRQ
b2ludCYKIAogI2lmICFFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKIAotdm9pZCBEcmFnQ29udHJv
bGxlcjo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9k
KERyYWdIYW5kbGluZ01ldGhvZCwgY29uc3QgRHJhZ0RhdGEmKSBjb25zdAordm9pZCBEcmFnQ29u
dHJvbGxlcjo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0
aG9kKERyYWdIYW5kbGluZ01ldGhvZCwgY29uc3QgRHJhZ0RhdGEmKSBjb25zdAogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggZWFkZTZjNmRiOGVmMjMwNGZiYjY0
YmUyMDg0ZjZmOWY4YTJhYTQ1My4uMmRmNmY0MGY2NzdmYjU1MzQ0NWVlZGRiYjI2ZDM2OWY4M2U5
ZGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtOTksNyArOTksNyBA
QCBzdHJ1Y3QgRHJhZ1N0YXRlOwogICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgRHJhZ0ltYWdl
QWxwaGE7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0
IERyYWdEYXRhJikgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW5kbGluZ01ldGhvZCwgY29uc3QgRHJh
Z0RhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZy
YW1lKiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25z
dCBEcmFnRGF0YSYpOwogICAgICAgICBib29sIGNvbmNsdWRlRWRpdERyYWcoY29uc3QgRHJhZ0Rh
dGEmKTsKQEAgLTE0NSw3ICsxNDUsNiBAQCBzdHJ1Y3QgRHJhZ1N0YXRlOwogCiAgICAgICAgIERy
YWdEZXN0aW5hdGlvbkFjdGlvbiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbjsKICAgICAgICAgRHJh
Z1NvdXJjZUFjdGlvbiBtX2RyYWdTb3VyY2VBY3Rpb247Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+
IG1fcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzVG9Mb2FkOwogICAgICAgICBib29sIG1fZGlkSW5p
dGlhdGVEcmFnOwogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJhdGlvbjsg
Ly8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24g
d2l0aGluIFdlYktpdAogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IGNiMDlhMjJjNmNmMWQy
MDA2M2Y0N2JjYzcwNWJmODY1NzE5YzMxZjYuLmI4MTIxODg0MGFiM2EyZTZhNGNkZDg3YjVmZDFi
YzMzZDgwM2Q2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tCkBAIC00Miw2ICs0Miw4IEBACiAjaW1wb3J0ICJNYWluRnJhbWUuaCIKICNpbXBvcnQg
IlBhZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKKyNpbXBvcnQgIlBhc3RlYm9hcmRTdHJh
dGVneS5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSYW5nZS5o
IgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMDQsNyArMTA2LDcgQEAgdm9p
ZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVtRHJhZygpCiAKICNpZiBFTkFCTEUo
REFUQV9JTlRFUkFDVElPTikKIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlUHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW5kbGluZ01ldGhvZCBk
cmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkgY29uc3QKK3ZvaWQg
RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5k
bGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVk
VHlwZXM7CiAgICAgc3dpdGNoIChkcmFnSGFuZGxpbmdNZXRob2QpIHsKQEAgLTEyMyw3ICsxMjUs
NyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnNG
b3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBl
bmQoa1VUVHlwZUNvbnRlbnQpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZHJhZ0RhdGEu
dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKHN1cHBvcnRlZFR5cGVzKTsKKyAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhzdXBwb3J0ZWRUeXBlcywgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNTBjZWI4NmM1
MTE0NTFiNWI1NTRiZWY4NDg2OTA4MTYyMTliZjBjNy4uYWNmMzIyY2I5YzNkMjljOTRmYTkxN2M2
NDAzZjEwZWVkNjRjOWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC0xMTQs
OSArMTE0LDYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigp
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQcm9taXNlKCkgY29uc3Q7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpIGNvbnN0OwotI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShHVEspCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggM2M2ZGE2YzdiYWUyZjBjMGRjODRjY2Q5Mjc5ZTAzZWFm
YjI3OWQ0OS4uOWJmMjc5ZTVhZjIxZTQwOGI1MzFlZjkzZjAxODAxNmZmYjE2NTg3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDIz
ZjZmMzBjNTJkYThhYzYxNDgyMzUyZDQ5Njk4NGU1YjcxZWJkOTAuLmFmZGExNTVlZjEzNDQzYTkx
MWU4MzA3MGRkYzc3NzFiNWI1MjNkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBmaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgaW50IGluZGV4KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVByZWZlcnJl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3Ry
aW5nIHVuaXF1ZU5hbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fi
c3RyYWN0UGFzdGVib2FyZC5oCmluZGV4IGUxYzJjMmNhYWJiMjMzZGM1OGRkM2M0NjhjYzMwNTYz
MzA5YzczMTIuLmI3NDRmZTI1ZGVhOTM3MThhMjZhNGI5MWJmODY4MDM1NzFhMmY4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVn
ZXIpaW5kZXg7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBudW1i
ZXJPZkZpbGVzOwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJM
ICo+ICpmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbjsKLS0gKHZvaWQpdXBkYXRlUHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzOihOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXM7CistICh2b2lkKXVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVz
OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDc2Y2E5ODdiMzQ1NWVjNzkzNTg5NGExOTVlNDNiN2Vk
ODNkNmE3YzIuLjViODdlZDY4MWNlNzNmN2RhYTYyMzlhYWI3ODExMWI4MWNkNTQ0ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQpAQCAtNDU2LDE2ICs0NTYsMTYgQEAgVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVS
TChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1
cm4gKE5TVVJMICopdmFsdWU7CiB9CiAKLXZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQordm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7Ci0gICAgaWYgKCFbbV9wYXN0ZWJvYXJkIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzOild
KQorICAgIGlmICghW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczopXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
TlNNdXRhYmxlQXJyYXkgKnR5cGVzQXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6dHlwZXMuc2l6ZSgpXTsKICAgICBmb3IgKGF1dG8gdHlwZSA6IHR5cGVzKQogICAgICAg
ICBbdHlwZXNBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nICopdHlwZV07CiAKLSAgICBbbV9wYXN0
ZWJvYXJkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyczp0eXBlc0FycmF5XTsKKyAgICBb
bV9wYXN0ZWJvYXJkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczp0eXBlc0FycmF5XTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCAwZWI5OGFjY2E5YmM4ZGI3OTBjNjVlMTIyNWIx
MjNlMzA5MjA5NDVhLi5jNDdmNTVlNGI5NWQ4NDgwNmRmYjUwYTFiODQ4YzYwODcyNGVlMmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5tbQpAQCAtMTU2LDcgKzE1Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2l0ZW1Qcm92
aWRlcnM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9jYWNoZWRUeXBlSWRlbnRpZmllcnM7CiAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IF90eXBlVG9GaWxlVVJMTWFwczsKLSAgICBSZXRhaW5QdHI8
TlNBcnJheT4gX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyczsKKyAgICBSZXRhaW5QdHI8TlNBcnJh
eT4gX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVyczsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3Jl
Z2lzdHJhdGlvbkluZm9MaXN0czsKIH0KIApAQCAtMTc3LDE2ICsxNzcsMTUgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXQKICAgICAgICAgX2NoYW5nZUNvdW50ID0gMDsKICAgICAgICAgX3BlbmRpbmdP
cGVyYXRpb25Db3VudCA9IDA7CiAgICAgICAgIF90eXBlVG9GaWxlVVJMTWFwcyA9IGFkb3B0TlMo
W1tOU0FycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIF9wcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnMgPSBuaWw7CisgICAgICAgIF9zdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMgPSBuaWw7CiAgICAg
ICAgIF9yZWdpc3RyYXRpb25JbmZvTGlzdHMgPSBuaWw7CiAgICAgfQogICAgIHJldHVybiBzZWxm
OwogfQogCi0tICh2b2lkKXVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxO
U1N0cmluZyAqPiAqKXR5cGVzCistICh2b2lkKXVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
czooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVzCiB7Ci0gICAgaWYgKFtfaXRlbVByb3ZpZGVy
cyBjb3VudF0gPT0gdHlwZXMuY291bnQpCi0gICAgICAgIF9wcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnMgPSB0eXBlczsKKyAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzID0gdHlwZXM7CiB9CiAK
IC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKQEAgLTIyNSw5ICsyMjQsNiBAQCAtICh2b2lkKXNl
dEl0ZW1Qcm92aWRlcnM6KE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJz
CiAgICAgaWYgKF9pdGVtUHJvdmlkZXJzID09IGl0ZW1Qcm92aWRlcnMgfHwgW19pdGVtUHJvdmlk
ZXJzIGlzRXF1YWxUb0FycmF5Oml0ZW1Qcm92aWRlcnNdKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXRlbVByb3ZpZGVycy5jb3VudCAhPSBbX2l0ZW1Qcm92aWRlcnMgY291bnRdKQotICAg
ICAgICBfcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwotCiAgICAgX2l0ZW1Qcm92aWRl
cnMgPSBpdGVtUHJvdmlkZXJzOwogICAgIF9jaGFuZ2VDb3VudCsrOwogICAgIF9jYWNoZWRUeXBl
SWRlbnRpZmllcnMgPSBuaWw7CkBAIC00MDksNiArNDA1LDI5IEBAIHN0YXRpYyBOU1VSTCAqdGVt
cG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQoTlNVUkwgKnVybCwgTlNTdHJp
bmcgKnN1CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W3RlbXBvcmFyeURhdGFJ
bnRlcmFjdGlvbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2Vz
dGVkTmFtZSA/OiB1cmwubGFzdFBhdGhDb21wb25lbnRdXTsKIH0KIAorLSAoQk9PTCl0eXBlSXNB
cHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOihOU1N0cmluZyAqKXR5cGUKK3sKKyAgICAvLyBB
IHR5cGUgaXMgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSB0byBsb2FkIGlmIGl0IGNvbmZvcm1zIHRv
IG9uZSBvciBtb3JlIHN1cHBvcnRlZCB0eXBlcy4KKyAgICBmb3IgKE5TU3RyaW5nICpzdXBwb3J0
ZWRUeXBlSWRlbnRpZmllciBpbiBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLmdldCgpKSB7Cisg
ICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZil0eXBlLCAoQ0ZTdHJpbmdS
ZWYpc3VwcG9ydGVkVHlwZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworLSAoTlNTdHJpbmcgKil0eXBlSWRlbnRpZmll
clRvTG9hZEZvclJlZ2lzdGVyZWRUeXBlSWRlbnRmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAq
KXJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMKK3sKKyAgICBOU1N0cmluZyAqaGlnaGVzdEZpZGVs
aXR5Q29udGVudFR5cGUgPSBuaWw7CisgICAgZm9yIChOU1N0cmluZyAqcmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyIGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgaWYgKFtz
ZWxmIHR5cGVJc0FwcHJvcHJpYXRlRm9yU3VwcG9ydGVkVHlwZXM6cmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVyXSkKKyAgICAgICAgICAgIHJldHVybiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXI7CisK
KyAgICAgICAgaWYgKCFoaWdoZXN0RmlkZWxpdHlDb250ZW50VHlwZSAmJiBVVFR5cGVDb25mb3Jt
c1RvKChDRlN0cmluZ1JlZilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIsIGtVVFR5cGVDb250ZW50
KSkKKyAgICAgICAgICAgIGhpZ2hlc3RGaWRlbGl0eUNvbnRlbnRUeXBlID0gcmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVyOworICAgIH0KKyAgICByZXR1cm4gaGlnaGVzdEZpZGVsaXR5Q29udGVudFR5
cGU7Cit9CisKIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVS
THM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spYWN0aW9uCiB7CiAgICAgW3NlbGYgZG9B
ZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6YWN0aW9uIHN5bmNocm9ub3Vz
VGltZW91dDowXTsKQEAgLTQxOSw0MSArNDM4LDIyIEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQ
cm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2sp
CiAgICAgYXV0byBjaGFuZ2VDb3VudEJlZm9yZUxvYWRpbmcgPSBfY2hhbmdlQ291bnQ7CiAgICAg
YXV0byB0eXBlVG9GaWxlVVJMTWFwcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpbX2l0ZW1Qcm92aWRlcnMgY291bnRdXSk7CiAKLSAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGlmIChbX3ByZWZlcnJl
ZFR5cGVJZGVudGlmaWVycyBjb3VudF0gPT0gW19pdGVtUHJvdmlkZXJzIGNvdW50XSkKLSAgICAg
ICAgcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzID0gX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyczsK
LQogICAgIC8vIEZpcnN0LCBmaWd1cmUgb3V0IHdoaWNoIGl0ZW0gcHJvdmlkZXJzIHdlIHdhbnQg
dG8gdHJ5IGFuZCBsb2FkIGZpbGVzIGZyb20uCi0gICAgYXV0byBpdGVtUHJvdmlkZXJzV2l0aEZp
bGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBj
b250ZW50VHlwZUlkZW50aWZpZXJzVG9Mb2FkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7Ci0gICAgYXV0byBpbmRpY2VzT2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgW19pdGVtUHJvdmlk
ZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOltwcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMs
IGl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMsIGNvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQsIGlu
ZGljZXNPZkl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMsIHR5cGVUb0ZpbGVVUkxNYXBzXSAoVUlJdGVt
UHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7Ci0gICAg
ICAgIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSA9IG5pbDsKLQotICAg
ICAgICBpZiAocHJlZmVycmVkVHlwZUlkZW50aWZpZXJzICYmIFtpdGVtUHJvdmlkZXIucmVnaXN0
ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDpbcHJlZmVycmVkVHlwZUlkZW50aWZp
ZXJzIG9iamVjdEF0SW5kZXg6aW5kZXhdXSkKLSAgICAgICAgICAgIHR5cGVJZGVudGlmaWVyT2ZD
b250ZW50VG9TYXZlID0gW3ByZWZlcnJlZFR5cGVJZGVudGlmaWVycyBvYmplY3RBdEluZGV4Omlu
ZGV4XTsKLQotICAgICAgICBpZiAoIXR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlKSB7Ci0g
ICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGZpcnN0ICJwdWJsaWMuY29udGVudCItY29u
Zm9ybWFudCB0eXBlIGlkZW50aWZpZXIuCi0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICppZGVu
dGlmaWVyIGluIGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilpZGVudGlmaWVy
LCBrVVRUeXBlQ29udGVudCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAgICAgdHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUgPSBpZGVudGlmaWVyOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgIGF1dG8gaXRlbVByb3Zp
ZGVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gdHlwZUlkZW50aWZpZXJzVG9Mb2FkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBpbmRpY2VzT2ZpdGVtUHJvdmlkZXJzVG9Mb2FkID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQ+IHByb3RlY3RlZFNlbGYgPSBzZWxmOworICAgIFtfaXRlbVBy
b3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbcHJvdGVjdGVkU2VsZiwgaXRlbVBy
b3ZpZGVyc1RvTG9hZCwgdHlwZUlkZW50aWZpZXJzVG9Mb2FkLCBpbmRpY2VzT2ZpdGVtUHJvdmlk
ZXJzVG9Mb2FkLCB0eXBlVG9GaWxlVVJMTWFwc10gKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlk
ZXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgeworICAgICAgICBOU1N0cmluZyAqdHlwZUlk
ZW50aWZpZXJUb0xvYWQgPSBbcHJvdGVjdGVkU2VsZiB0eXBlSWRlbnRpZmllclRvTG9hZEZvclJl
Z2lzdGVyZWRUeXBlSWRlbnRmaWVyczppdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVyc107CisgICAgICAgIGlmICh0eXBlSWRlbnRpZmllclRvTG9hZCkgeworICAgICAgICAgICAg
W2l0ZW1Qcm92aWRlcnNUb0xvYWQgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlcl07CisgICAgICAgICAg
ICBbdHlwZUlkZW50aWZpZXJzVG9Mb2FkIGFkZE9iamVjdDp0eXBlSWRlbnRpZmllclRvTG9hZF07
CisgICAgICAgICAgICBbaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCBhZGRPYmplY3Q6QChp
bmRleCldOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGVJZGVudGlmaWVyT2ZDb250ZW50
VG9TYXZlKSB7Ci0gICAgICAgICAgICBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmplY3Q6
aXRlbVByb3ZpZGVyXTsKLSAgICAgICAgICAgIFtjb250ZW50VHlwZUlkZW50aWZpZXJzVG9Mb2Fk
IGFkZE9iamVjdDp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZV07Ci0gICAgICAgICAgICBb
aW5kaWNlc09mSXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmplY3Q6QChpbmRleCldOwotICAg
ICAgICB9Ci0KICAgICAgICAgW3R5cGVUb0ZpbGVVUkxNYXBzIGFkZE9iamVjdDpAeyB9XTsKICAg
ICB9XTsKIAotICAgIGlmICghW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgY291bnRdKSB7CisgICAg
aWYgKCFbaXRlbVByb3ZpZGVyc1RvTG9hZCBjb3VudF0pIHsKICAgICAgICAgYWN0aW9uKEBbIF0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDYxLDEwICs0NjEsMTAgQEAgLSAodm9pZClk
b0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVy
RmlsZUxvYWRCbG9jaykKICAgICBhdXRvIHNldEZpbGVVUkxzTG9jayA9IGFkb3B0TlMoW1tOU0xv
Y2sgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHN5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwogICAgIGF1dG8gZmlsZUxv
YWRpbmdHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwotICAg
IGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNXaXRoRmls
ZXMgY291bnRdOyArK2luZGV4KSB7Ci0gICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4g
aXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDppbmRl
eF07Ci0gICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdHlwZUlkZW50aWZpZXIgPSBbY29udGVu
dFR5cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKLSAgICAgICAgTlNV
SW50ZWdlciBpbmRleEluSXRlbVByb3ZpZGVyQXJyYXkgPSBbW2luZGljZXNPZkl0ZW1Qcm92aWRl
cnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDppbmRleF0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwor
ICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNUb0xv
YWQgY291bnRdOyArK2luZGV4KSB7CisgICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4g
aXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92aWRlcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF07
CisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdHlwZUlkZW50aWZpZXIgPSBbdHlwZUlkZW50
aWZpZXJzVG9Mb2FkIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgICAgICBOU1VJbnRlZ2VyIGlu
ZGV4SW5JdGVtUHJvdmlkZXJBcnJheSA9IFtbaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCBv
YmplY3RBdEluZGV4OmluZGV4XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CiAgICAgICAgIFJldGFp
blB0cjxOU1N0cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIgc3VnZ2VzdGVkTmFt
ZV07CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKGZpbGVMb2FkaW5nR3JvdXAuZ2V0KCkp
OwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3Jv
dXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdE
YXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmlu
ZGV4IGE0OWUxMzRmNWVhNjQ4NmE0YjFhMDRiZDNhYTNiODgxZWE0ZjEzYzUuLjIwZDEyOWQwNjdm
Yzc4NGZmNWQxZDNmZWZhZGU0ODg5NDgwZmVlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI5Miw0MyArMjkyLDYgQEAgU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikKLQotc3RhdGljIGJvb2wgdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWRUeXBlcykK
LXsKLSAgICBDRlN0cmluZ1JlZiBjZlR5cGUgPSB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuYXV0b3Jl
bGVhc2UoKTsKLSAgICBmb3IgKGF1dG8gc3VwcG9ydGVkVHlwZSA6IHN1cHBvcnRlZFR5cGVzKSB7
Ci0gICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNmVHlwZSwgc3VwcG9ydGVkVHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRHJhZ0RhdGE6OnVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpIGNvbnN0Ci17
Ci0gICAgVmVjdG9yPFN0cmluZz4gYmVzdFR5cGVJZGVudGlmaWVyczsKLSAgICBhdXRvJiBzdHJh
dGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7Ci0gICAg
dWludDY0X3QgaXRlbUNvdW50ID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9w
YXN0ZWJvYXJkTmFtZSk7Ci0gICAgZm9yICh1aW50NjRfdCBpdGVtSW5kZXggPSAwOyBpdGVtSW5k
ZXggPCBpdGVtQ291bnQ7ICsraXRlbUluZGV4KSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVJZGVudGlmaWVyczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXgodHlwZUlkZW50aWZpZXJzLCBpdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOwot
Ci0gICAgICAgIFN0cmluZyBiZXN0VHlwZUlkZW50aWZpZXIgPSBlbXB0eVN0cmluZygpOwotICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlSWRlbnRpZmllcnMpIHsKLSAgICAgICAgICAgIGlm
ICghdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyh0eXBlLCBzdXBwb3J0ZWRUeXBl
cykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGJlc3RUeXBlSWRl
bnRpZmllciA9IHR5cGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBi
ZXN0VHlwZUlkZW50aWZpZXJzLmFwcGVuZChiZXN0VHlwZUlkZW50aWZpZXIpOwotICAgIH0KLQot
ICAgIHN0cmF0ZWd5LnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhiZXN0VHlwZUlkZW50
aWZpZXJzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IDVlOTIzOGE5NzA2ZTE3ZjM3N2QxMGNlYTZmNmVjNWY1ZmQyMzdkY2IuLmFiMjY0YTZk
MjFjZjYzYTlkZmFmZThlZjk3OTZjYmFkZDQwNWVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2Vi
Q29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0
bGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5k
ZXggZmUzYjllYmM1ZjU1NmE4NjVkZjhiNDY4NDdlMmFkMDVmZmExNzQ0NS4uNWYwZGJlZmUwYzI2
MTg2ZDBiMDNkZGNiZjk3NjZmYzI4NWY5Nzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMjE2
LDkgKzIxNiw5IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVBy
ZWZlcnJlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CisgICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRp
ZmllcnMpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5k
ZXggZmM5NzZlZTQyMjU4YzNlYzExNjFjOGQyMmIwYzczMTdiMzIxNDM5MC4uN2E3YmEyZDE4NDI5
MGRiMjM3NDI3M2NkZWU2YmJjYzhjZmM3MTE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKIEBjbGFzcyBVSURyYWdJdGVtOwogQGNsYXNzIFVJVGFyZ2V0ZWREcmFnUHJldmll
dzsKIEBwcm90b2NvbCBVSURyYWdTZXNzaW9uOworQHByb3RvY29sIFVJRHJvcFNlc3Npb247CiAj
ZW5kaWYKIAogQHByb3RvY29sIFdLVUlEZWxlZ2F0ZVByaXZhdGUgPFdLVUlEZWxlZ2F0ZT4KQEAg
LTExMiw2ICsxMTMsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogI2lmIFRBUkdFVF9PU19JUEhP
TkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtIChVSVRh
cmdldGVkRHJhZ1ByZXZpZXcgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2aWV3
Rm9yTGlmdGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHNlc3Npb246KGlkIDxVSURyYWdTZXNz
aW9uPilzZXNzaW9uOwogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcHJldmlld0ZvckNhbmNlbGxpbmdJdGVtOihVSURyYWdJdGVtICopaXRl
bSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVsdFByZXZpZXc7Cist
IChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3
aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb247CiAj
ZW5kaWYKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2hhbmdlU2Fm
ZUFyZWFTaG91bGRBZmZlY3RPYnNjdXJlZEluc2V0czooQk9PTClzYWZlQXJlYVNob3VsZEFmZmVj
dE9ic2N1cmVkSW5zZXRzIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KaW5kZXggOWZmMDU2ZmJjOTVkMGU4NWQxMDIzZjUyMGQ2ODRkNzVk
M2Y5YjE0Zi4uNTFjYTE2YjU3NzFiYmIxMTgyNGViY2JjYWM0MWZiNTU0N2M4MzAzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQpAQCAtMTk4LDkgKzE5OCw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
CiAgICAgZmlsZW5hbWVzID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5maWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRl
bnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVu
dGlmaWVycyhpZGVudGlmaWVycyk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApp
bmRleCA5YmI2ZDU0Y2EyZDFmY2M4N2NjMmNkOWZiMTU5YmI0NDUyYmMwN2ZkLi44ZDc2ODkwYjMw
MzhkODdhMGJiNzAyMTAwZThmODY2Y2QyNjE3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwogICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGl0ZW1z
Q291bnQpOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwotICAgIHZv
aWQgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgdm9pZCB1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0MDEy
YWQ1YTNiMTZlNWNiYzFjYzZhNDQzMzIyMmFiNjk4MzFjZjk3Li5jMzg4MjkzZGQwODdkOGU5ODlk
YjdlODU5YjMzZjBjN2I3OGQ0MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBSZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2
NF90IHNpemUpCiAgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkKICAgICBHZXRGaWxlbmFtZXNGb3JEYXRhSW50
ZXJhY3Rpb24oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZW5h
bWVzKQotICAgIFVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQorICAgIFVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9h
cmROYW1lKQogICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1
aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4g
dHlwZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IDFhYTJkOGJlZTBkYjE3YzFmMjQ1NTI3ZDM5YTk5M2I5ODcyMjIwOTEuLjgyMTQwODI4MmJkMGQ2
NDU2OWU4M2VkZTI5YTQ3YzlkNzAyZDE4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKQEAgLTMyNCw5ICszMjQsOSBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbgogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldEZpbGVuYW1lc0ZvckRhdGFJbnRl
cmFjdGlvbihwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbjo6UmVwbHkoZmlsZW5hbWVzKSwgMCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpVcGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmRO
YW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0
ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9CiAK
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IDcyZGNmOWZmNDZlNzNkYzM2ZmMzNGViYzc4ZDE2Y2Q2ZThkZDVlM2Iu
LmY3OGE3MzExZDQ0MzQyYWIyOWUwOGM1NGE2NmE1OWFjYTBkMzNlYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEZpbGVu
YW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVByZWZlcnJl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGU5NmU1MzhhNDk5NTc2Yzg5OTYyZTkwZTM0YmUzYTQ4NGNiODdlMGIuLmJl
ODVjZTFjMTQ1NzA2YzQyZTNhOGU5MGMxOGI3YjU4NjAxN2VkZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0w
Ni0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2luZyAtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIHRvIHN3
YXAgb3V0IGl0ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJlYWtzIGl0ZW0gcHJvdmlkZXIg
bG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTczMzM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjc3NzcyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyB1bml0IHRlc3RzIHRv
IGVuc3VyZSB0aGF0IC1fd2ViVmlldzp3aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjogY2FuIGJl
IHVzZWQgdG8gZmlsdGVyIG91dCBkcmFnIGl0ZW1zCisgICAgICAgIHVzZWQgYnkgV2ViS2l0IHdo
ZW4gaGFuZGxpbmcgYSBkcm9wLiBUaGVzZSB0ZXN0cyBlbnN1cmUgdGhhdCBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIGlzIHN0aWxsIGFibGUgdG8gaGFuZGxlCisgICAgICAgIHRoZXNlIHJlbWFp
bmluZyBpdGVtcyBvbiBkcm9wLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
RGF0YUludGVyYWN0aW9uVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW06
CisKKyAgICAgICAgQWRkIC1vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2ssIHdoaWNoIGNhbiBiZSBz
ZXQgdG8gcHJvdmlkZSBjdXN0b20gaGFuZGxpbmcgb2YgZHJvcHBlZCBpdGVtcy4KKworICAgICAg
ICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX3dlYlZpZXc6d2lsbFBlcmZvcm1Ecm9wV2l0
aFNlc3Npb246XSk6CisKIDIwMTctMDYtMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCBXM0MgU2VjdXJlIENvbnRleHRzIERyYWZ0IFNwZWNp
ZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0KaW5kZXggYjQxZmQ5OTIzOTI0M2EyNzA3NzVlMTBhMTY1NDljZmUy
Yjg1MGJhNy4uMzk2MTliZjJiYTNhYjI3OTIzM2FhZDBjY2I2MzA2YWNjNTUwZDFkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVz
dHMubW0KQEAgLTY4Niw2ICs2ODYsNjQgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0
ZXJuYWxTb3VyY2VGaWxlVVJMKQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGRcbmZp
bGU6Ly8vc29tZS9maWxlL3RoYXQvaXMvbm90L3JlYWwiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lclRleHQiXSk7CiB9CiAKK1RFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9h
ZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CisKKyAg
ICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7CisgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1Jl
cHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKKyAgICBbc2ltdWxhdGVkSW1hZ2VJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworCisgICAgYXV0byBz
aW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CisgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVk
aXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
KyAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmZpcnN0
SFRNTERhdGFdOworCisgICAgYXV0byBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5T
KFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmll
dy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0T3ZlcnJpZGVQZXJm
b3JtRHJvcEJsb2NrOl5OU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKihpZCA8VUlEcm9wU2Vzc2lvbj4g
c2Vzc2lvbikKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUSgyVUwsIHNlc3Npb24uaXRlbXMuY291
bnQpOworICAgICAgICBVSURyYWdJdGVtICpmaXJzdEl0ZW0gPSBzZXNzaW9uLml0ZW1zWzBdOwor
ICAgICAgICBVSURyYWdJdGVtICpzZWNvbmRJdGVtID0gc2Vzc2lvbi5pdGVtc1sxXTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW2ZpcnN0SXRlbS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVycyBpc0VxdWFsOkBbIChOU1N0cmluZyAqKWtVVFR5cGVKUEVHIF1dKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3NlY29uZEl0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRp
ZmllcnMgaXNFcXVhbDpAWyAoTlNTdHJpbmcgKilrVVRUeXBlSFRNTCBdXSk7CisgICAgICAgIHJl
dHVybiBAWyBzZWNvbmRJdGVtIF07CisgICAgfV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlk
ZXIuZ2V0KCksIHNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW2RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgMzAwKSB0bzpDR1Bv
aW50TWFrZSgxMDAsIDMwMCldOworCisgICAgTlNTdHJpbmcgKm91dHB1dFZhbHVlID0gW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdOworICAgIEVY
UEVDVF9XS19TVFJFUSgidGV4dC9odG1sIiwgb3V0cHV0VmFsdWUuVVRGOFN0cmluZyk7Cit9CisK
K1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wSW5z
ZXJ0VVJMKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRl
ZGl0YWJsZSJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJn
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJdOworCisgICAgYXV0byBkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3Igc2V0T3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrOl5OU0FycmF5PFVJRHJhZ0l0ZW0g
Kj4gKihpZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKKyAgICB7CisgICAgICAgIE5TTXV0YWJs
ZUFycmF5PFVJRHJhZ0l0ZW0gKj4gKmFsbG93ZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CisgICAgICAgIGZvciAoVUlEcmFnSXRlbSAqaXRlbSBpbiBzZXNzaW9uLml0ZW1zKSB7Cisg
ICAgICAgICAgICBpZiAoW2l0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
cnMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZVVSTF0pCisgICAgICAgICAgICAg
ICAgW2FsbG93ZWRJdGVtcyBhZGRPYmplY3Q6aXRlbV07CisgICAgICAgIH0KKyAgICAgICAgRVhQ
RUNUX0VRKDFVTCwgYWxsb3dlZEl0ZW1zLmNvdW50KTsKKyAgICAgICAgcmV0dXJuIGFsbG93ZWRJ
dGVtczsKKyAgICB9XTsKKworICAgIGF1dG8gZmlyc3RJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
VUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbZmlyc3RJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJPYmplY3Q6QCJUaGlzIGlzIGEgc3RyaW5nLiIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRl
clJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gc2Vjb25kSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W3NlY29uZEl0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgZmlyc3RJdGVtUHJvdmlkZXIuZ2V0KCksIHNl
Y29uZEl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07
CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworfQor
CiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBPdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJh
dGlvbikKIHsKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5oCmluZGV4IDY5ZTRmOTYwYzgxNTlhM2U3NWU3MDY2ZmI2MTA4ZTZjOTZhYTQ0
ZGIuLjE4MDhhYTAwZmU1Nzg5NjI5OGRmMDJhNDUwZTkxMTUyNTJjNTk5YjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCkBAIC03
Niw2ICs3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBo
YXNlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzaG91bGRFbnN1cmVVSUFwcGxpY2F0
aW9uOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPEJPT0woX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKik+IHNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJsb2NrUHRyPE5TQXJyYXkgKihVSUl0ZW1Qcm92aWRlciAqLCBOU0FycmF5ICosIE5T
RGljdGlvbmFyeSAqKT4gY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooaWQgPFVJRHJvcFNlc3Npb24+KT4gb3ZlcnJpZGVQ
ZXJmb3JtRHJvcEJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBcnJheSAq
ZXh0ZXJuYWxJdGVtUHJvdmlkZXJzOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5T
VUludGVnZXIoTlNVSW50ZWdlciwgaWQpPiBvdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlv
bkJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNBcnJh
eSAqKT4gZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uQ29tcGxldGlvbkJsb2NrOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCmluZGV4
IDgzMDE0YTgwMTg4Y2NlNWJjOTdhMGI5N2NmNTViMjlhYzI2MjJlNWQuLjcwOTBmN2I4OTk0OGRj
N2I2ZjE2M2I2YmY0Njg0ZjFiNTYzOTAwYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KQEAgLTMyNiw2ICszMjYsMTEgQEAg
LSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG93Q3VzdG9tU2hlZXRGb3JF
bGVtZW50OihfV0tBY3RpdmF0ZWRFbGUKICAgICByZXR1cm4gc2VsZi5zaG93Q3VzdG9tQWN0aW9u
U2hlZXRCbG9jayhlbGVtZW50KTsKIH0KIAorLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246KGlk
IDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCit7CisgICAgcmV0dXJuIHNlbGYub3ZlcnJpZGVQZXJm
b3JtRHJvcEJsb2NrID8gc2VsZi5vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2soc2Vzc2lvbikgOiBz
ZXNzaW9uLml0ZW1zOworfQorCiAjcHJhZ21hIG1hcmsgLSBfV0tJbnB1dERlbGVnYXRlCiAKIC0g
KEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZm9jdXNTaG91bGRTdGFydElucHV0
U2Vzc2lvbjooaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4paW5mbwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312932</attachid>
            <date>2017-06-14 16:30:44 -0700</date>
            <delta_ts>2017-06-14 18:11:49 -0700</delta_ts>
            <desc>Rebase on master</desc>
            <filename>bug-173338-20170614163043.patch</filename>
            <type>text/plain</type>
            <size>41679</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBjYzMzMzM5YzQ5MTE3
NDA2NzhkMzkzNTc3ZjQ4Yjg0MmQ1NWI1NC4uZGU1ZjQwZWU3NzllZjQ5YWVmNzc0NTZmNjA0NWVj
N2I3YzM2ZDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE3LTA2LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRl
bSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgcmVwbGFjaW5nIHRoZSBsaXN0IG9m
IFVJSXRlbVByb3ZpZGVycyByaWdodCBiZWZvcmUgYSBkcm9wIGlzIGhhbmRsZWQgcmVzdWx0cyBp
bgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGZhaWxpbmcgdG8gbG9hZCBub24t
InB1YmxpYy5jb250ZW50Ii1jb25mb3JtYW50IGl0ZW1zLiBUaGlzIGlzIGJlY2F1c2UgRHJhZ0Nv
bnRyb2xsZXIKKyAgICAgICAgY29tcHV0ZXMgYW5kIHNlbmRzIHRvIHRoZSBVSSBwcm9jZXNzIGEg
bGlzdCBvZiBVVElzIHRvIGxvYWQgKHByZWZlcnJlZFR5cGVJZGVudGlmaWVyczogb25lIHR5cGUg
aWRlbnRpZmllciBmb3IKKyAgICAgICAgZWFjaCBpdGVtIHByb3ZpZGVyIGluIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQpLiBIb3dldmVyLCBpZiB0aGUgbGlzdCBvZiBpdGVtIHByb3ZpZGVycyBj
aGFuZ2VzIGltbWVkaWF0ZWx5CisgICAgICAgIGJlZm9yZSBhIGRyb3AgaXMgcGVyZm9ybWVkLCBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHdpbGwgZ2V0IGludG8gYW4gaW5jb25zaXN0ZW50IHN0
YXRlIHdoZXJlIGl0IGhhcyBhCisgICAgICAgIGRpZmZlcmVudCBudW1iZXIgb2YgcHJlZmVycmVk
IHR5cGUgaWRlbnRpZmllcnMgdG8gbG9hZCB0aGFuIGF2YWlsYWJsZSBpdGVtIHByb3ZpZGVycy4g
VGhpcyBjYXVzZXMKKyAgICAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB0byBmYWlsIHdo
ZW4gY2hvb3Npbmcgd2hhdCB0eXBlIGlkZW50aWZpZXJzIHRvIGxvYWQgZnJvbSBlYWNoIGl0ZW0g
cHJvdmlkZXIuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGluc3RlYWQgaGF2ZSB0aGUgd2Vi
IHByb2Nlc3MgcHJvcGFnYXRlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdHlwZSBpZGVudGlmaWVycyB0
byB0aGUgVUkgcHJvY2VzcywKKyAgICAgICAgd2hpY2ggaXMgYSBwcm9wZXJ0eSBvZiBvbmx5IHRo
ZSBkcm9wIGRlc3RpbmF0aW9uIHJhdGhlciB0aGFuIGJvdGggdGhlIGRlc3RpbmF0aW9uIGFuZCBp
dGVtIHByb3ZpZGVycy4gV2hlbgorICAgICAgICBwZXJmb3JtaW5nIGEgZHJvcCwgd2UgdGhlbiB1
c2UgdGhlIGN1cnJlbnQgaXRlbSBwcm92aWRlcnMgb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCB0byBjb25zdWx0IHRoaXMgbGlzdCBvZgorICAgICAgICBzdXBwb3J0ZWQgdHlwZSBpZGVudGlm
aWVycyB0byByZXNvbHZlIG91ciBsaXN0IG9mIHByZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIHRv
IGxvYWQuCisKKyAgICAgICAgR2xvYmFsbHkgcmVuYW1lcyB1cGRhdGVQcmVmZXJyZWRUeXBlSWRl
bnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLgorCisgICAgICAgIFRl
c3RzOgorICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZU92ZXJyaWRl
RHJvcEZpbGVVcGxvYWQKKyAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRXh0ZXJuYWxTb3Vy
Y2VPdmVycmlkZURyb3BJbnNlcnRVUkwKKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5k
bGluZ01ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dXBkYXRl
UHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVQcmVmZXJyZWRUeXBl
SWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IGluaXRdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZCB0eXBlSXNBcHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHR5cGVJZGVudGlmaWVyVG9Mb2FkRm9yUmVnaXN0
ZXJlZFR5cGVJZGVudGZpZXJzOl0pOgorCisgICAgICAgIEFkZCBsb2dpYyB0byByZXNvbHZlIHBy
ZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIGZyb20gYW4gaXRlbSBwcm92aWRlcnMgbGlzdCBvZiBy
ZWdpc3RlcmVkIHR5cGUgaWRlbnRpZmllcnMuCisgICAgICAgIFRoaXMgZm9ybWVybHkgZXhpc3Rl
ZCBvbiBEcmFnRGF0YS4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRv
QWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOnN5bmNocm9ub3VzVGltZW91
dDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVQcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tOgorCisgICAgICAgIFJlbW92ZSBwcmVmZXJyZWQgdHlwZSBpZGVudGlmaWVy
IHJlc29sdXRpb24gbG9naWMgZnJvbSBEcmFnRGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6dHlw
ZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKTogRGVsZXRlZC4K
KwogMjAxNy0wNi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBWaWRlbyBmbGFzaGVzIGJsYWNrIHdoZW4gc3dpdGNoaW5nIGJhY2sgdG8gYSB0YWIgaHR0cHM6
Ly93d3cuYXBwbGUuY29tL2hvbWVwb2QvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNDU5NTZmNTcxZjgz
ZjkzMWQ3OTNmODEyNGMwMGQ1YmU1NGJlOTViOS4uNmQxMjlkZjVkOWU2NjY4MTY5OWY1ZDZlNDFk
Y2JhZTQ5NWYyNTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2
LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVz
aW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dh
cCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBs
b2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzMzMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSB1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMp
OiBEZWxldGVkLgorCiAyMDE3LTA2LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgVzNDIFNlY3VyZSBDb250ZXh0cyBEcmFmdCBTcGVjaWZp
Y2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVlNjhlM2Q5Nzc4MGU4ODYxNDc1NzBjZDAxOThiZDM5ZDg4
ZjBhMS4uNGYyNmMwYjQzZmVmYTE3MDVjNTEzZWQ5MTE1MzdkMzBjMjk4OTRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA2LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3JlIGEg
ZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgdG8gdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzLiBBbHNvLCBpbnRyb2R1Y2UKKyAgICAgICAgX3dlYlZpZXc6d2ls
bFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246IGFzIFNQSSBvbiBXS1VJRGVsZWdhdGUuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKwogMjAxNy0wNi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYktpdCBmYWxzZWx5IHJlcG9ydHMgdGhhdCBhIHdlYiBwcm9jZXNzIGlzIHVucmVz
cG9uc2l2ZSBpZiB5b3UgY2xvc2UgYSBwYWdlIHNob3J0bHkgYWZ0ZXIgc3RvcHBpbmcgYSBsb2Fk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGNiZTEwM2RjZTQ3NzFl
ODU1YWE4ODRmN2NjNTY5OGZiOGU4NmJhZGUuLjQ4MTgzZjljNDE1ODg4YjZlZDM4NGQzMTQxYWY4
NzQ2ZjQ3ODYyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0z
MDksNyArMzA5LDYgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRP
clVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIG1vdXNlTW92ZWRJbnRv
RG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGll
bnRQb3NpdGlvbigpKSk7CiAKLSAgICBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9
IHsgfTsKICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbigpOwogICAgIGlmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9PSBEcmFnRGVz
dGluYXRpb25BY3Rpb25Ob25lKSB7CiAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7IC8vIEZJWE1F
OiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKT8KQEAgLTMyNCw3
ICszMjMsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBk
YXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICBtX2RyYWdIYW5kbGlu
Z01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfQogCi0gICAgdXBk
YXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hh
bmRsaW5nTWV0aG9kLCBkcmFnRGF0YSk7CisgICAgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hhbmRsaW5nTWV0aG9kLCBkcmFnRGF0YSk7
CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb247CiB9CiAKQEAgLTM2NSw3ICszNjQsNyBAQCBzdGF0
aWMgRWxlbWVudCogZWxlbWVudFVuZGVyTW91c2UoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3Vz
ZSwgY29uc3QgSW50UG9pbnQmCiAKICNpZiAhRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZv
aWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3QK
K3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRy
YWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29u
c3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGVhZGU2YzZk
YjhlZjIzMDRmYmI2NGJlMjA4NGY2ZjlmOGEyYWE0NTMuLjJkZjZmNDBmNjc3ZmI1NTM0NDVlZWRk
YmIyNmQzNjlmODNlOWRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAg
LTk5LDcgKzk5LDcgQEAgc3RydWN0IERyYWdTdGF0ZTsKICAgICAgICAgc3RhdGljIGNvbnN0IGZs
b2F0IERyYWdJbWFnZUFscGhhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5n
TWV0aG9kLCBjb25zdCBEcmFnRGF0YSYpIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRo
b2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3Q7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5w
dXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgICAgIGJvb2wgY2FuUHJv
Y2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICAgICAgYm9vbCBjb25jbHVkZUVkaXREcmFn
KGNvbnN0IERyYWdEYXRhJik7CkBAIC0xNDUsNyArMTQ1LDYgQEAgc3RydWN0IERyYWdTdGF0ZTsK
IAogICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247
CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnU291cmNlQWN0aW9uOwotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZDsKICAgICAgICAg
Ym9vbCBtX2RpZEluaXRpYXRlRHJhZzsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURy
YWdPcGVyYXRpb247IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20g
YSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQKICAgICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCBj
YjA5YTIyYzZjZjFkMjAwNjNmNDdiY2M3MDViZjg2NTcxOWMzMWY2Li5iODEyMTg4NDBhYjNhMmU2
YTRjZGQ4N2I1ZmQxYmMzM2Q4MDNkNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9E
cmFnQ29udHJvbGxlck1hYy5tbQpAQCAtNDIsNiArNDIsOCBAQAogI2ltcG9ydCAiTWFpbkZyYW1l
LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lt
cG9ydCAiUmFuZ2UuaCIKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA0LDcg
KzEwNiw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVw
ZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFu
ZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
IGNvbnN0Cit2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01l
dGhvZCwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHN1cHBvcnRlZFR5cGVzOwogICAgIHN3aXRjaCAoZHJhZ0hhbmRsaW5nTWV0aG9kKSB7CkBA
IC0xMjMsNyArMTI1LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlUHJlZmVycmVkVHlw
ZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KICAgICAgICAgc3VwcG9y
dGVkVHlwZXMuYXBwZW5kKGtVVFR5cGVDb250ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIGRyYWdEYXRhLnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhzdXBwb3J0ZWRUeXBl
cyk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMsIGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmlu
ZGV4IDUwY2ViODZjNTExNDUxYjViNTU0YmVmODQ4NjkwODE2MjE5YmYwYzcuLmFjZjMyMmNiOWMz
ZDI5Yzk0ZmE5MTdjNjQwM2YxMGVlZDY0YzllNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtMTE0LDkgKzExNCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zVVJMVHlw
ZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zUHJvbWlzZSgpIGNvbnN0Owog
I2VuZGlmCi0jaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgdm9pZCB1cGRhdGVQcmVm
ZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFR5cGVz
KSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDNjNmRhNmM3YmFlMmYwYzBkYzg0
Y2NkOTI3OWUwM2VhZmIyNzlkNDkuLjliZjI3OWU1YWYyMWU0MDhiNTMxZWY5M2YwMTgwMTZmZmIx
NjU4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAppbmRleCAyM2Y2ZjMwYzUyZGE4YWM2MTQ4MjM1MmQ0OTY5ODRlNWI3MWViZDkwLi5hZmRh
MTU1ZWYxMzQ0M2E5MTFlODMwNzBkZGM3NzcxYjViNTIzZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyB1bmlxdWVOYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRleCBlMWMyYzJjYWFiYjIzM2RjNThk
ZDNjNDY4Y2MzMDU2MzMwOWM3MzEyLi5iNzQ0ZmUyNWRlYTkzNzE4YTI2YTRiOTFiZjg2ODAzNTcx
YTJmODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQ
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oCkBAIC00NSw3ICs0NSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChO
U0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OihOU1VJbnRlZ2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBO
U0ludGVnZXIgbnVtYmVyT2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykg
TlNBcnJheTxOU1VSTCAqPiAqZmlsZVVSTHNGb3JEYXRhSW50ZXJhY3Rpb247Ci0tICh2b2lkKXVw
ZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVz
OworLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKil0eXBlczsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA3NmNhOTg3YjM0NTVlYzc5MzU4
OTRhMTk1ZTQzYjdlZDgzZDZhN2MyLi41Yjg3ZWQ2ODFjZTczZjdkYWE2MjM5YWFiNzgxMTFiODFj
ZDU0NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTQ1NiwxNiArNDU2LDE2IEBAIFVSTCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIFN0cmluZyYgdGl0
bGUpCiAgICAgcmV0dXJuIChOU1VSTCAqKXZhbHVlOwogfQogCi12b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIGlmICghW21fcGFz
dGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVyczopXSkKKyAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnR5cGVzLnNpemUoKV07CiAgICAgZm9yIChhdXRvIHR5cGUgOiB0
eXBlcykKICAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXR5cGVdOwog
Ci0gICAgW21fcGFzdGVib2FyZCB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM6dHlwZXNB
cnJheV07CisgICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6
dHlwZXNBcnJheV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggMGViOThhY2NhOWJjOGRi
NzkwYzY1ZTEyMjViMTIzZTMwOTIwOTQ1YS4uYzQ3ZjU1ZTRiOTVkODQ4MDZkZmI1MGExYjg0OGM2
MDg3MjRlZTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBAaW1wbGVt
ZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IF9pdGVtUHJvdmlkZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfY2FjaGVkVHlwZUlk
ZW50aWZpZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfdHlwZVRvRmlsZVVSTE1hcHM7Ci0g
ICAgUmV0YWluUHRyPE5TQXJyYXk+IF9wcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM7CisgICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9zdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IF9yZWdpc3RyYXRpb25JbmZvTGlzdHM7CiB9CiAKQEAgLTE3NywxNiArMTc3LDE1
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIF9jaGFuZ2VDb3VudCA9IDA7CiAgICAg
ICAgIF9wZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwogICAgICAgICBfdHlwZVRvRmlsZVVSTE1h
cHMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwotICAgICAgICBfcHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzID0gbmlsOworICAgICAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
ID0gbmlsOwogICAgICAgICBfcmVnaXN0cmF0aW9uSW5mb0xpc3RzID0gbmlsOwogICAgIH0KICAg
ICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZCl1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcworLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcwogewotICAgIGlmIChb
X2l0ZW1Qcm92aWRlcnMgY291bnRdID09IHR5cGVzLmNvdW50KQotICAgICAgICBfcHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzID0gdHlwZXM7CisgICAgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9
IHR5cGVzOwogfQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CkBAIC0yMjUsOSArMjI0LDYg
QEAgLSAodm9pZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycwogICAgIGlmIChfaXRlbVByb3ZpZGVycyA9PSBpdGVtUHJvdmlkZXJzIHx8
IFtfaXRlbVByb3ZpZGVycyBpc0VxdWFsVG9BcnJheTppdGVtUHJvdmlkZXJzXSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGl0ZW1Qcm92aWRlcnMuY291bnQgIT0gW19pdGVtUHJvdmlkZXJz
IGNvdW50XSkKLSAgICAgICAgX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVycyA9IG5pbDsKLQogICAg
IF9pdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBfY2hhbmdlQ291bnQrKzsKICAg
ICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwpAQCAtNDA5LDYgKzQwNSwyOSBAQCBzdGF0
aWMgTlNVUkwgKnRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TVVJM
ICp1cmwsIE5TU3RyaW5nICpzdQogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0
ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OnN1Z2dlc3RlZE5hbWUgPzogdXJsLmxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKKy0g
KEJPT0wpdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlczooTlNTdHJpbmcgKil0eXBl
Cit7CisgICAgLy8gQSB0eXBlIGlzIGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgdG8gbG9hZCBpZiBp
dCBjb25mb3JtcyB0byBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgdHlwZXMuCisgICAgZm9yIChOU1N0
cmluZyAqc3VwcG9ydGVkVHlwZUlkZW50aWZpZXIgaW4gX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cy5nZXQoKSkgeworICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpdHlw
ZSwgKENGU3RyaW5nUmVmKXN1cHBvcnRlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0gKE5TU3RyaW5nICop
dHlwZUlkZW50aWZpZXJUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50ZmllcnM6KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzCit7CisgICAgTlNTdHJpbmcg
KmhpZ2hlc3RGaWRlbGl0eUNvbnRlbnRUeXBlID0gbmlsOworICAgIGZvciAoTlNTdHJpbmcgKnJl
Z2lzdGVyZWRUeXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIGlmIChbc2VsZiB0eXBlSXNBcHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOnJlZ2lz
dGVyZWRUeXBlSWRlbnRpZmllcl0pCisgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyOworCisgICAgICAgIGlmICghaGlnaGVzdEZpZGVsaXR5Q29udGVudFR5cGUgJiYg
VVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyLCBr
VVRUeXBlQ29udGVudCkpCisgICAgICAgICAgICBoaWdoZXN0RmlkZWxpdHlDb250ZW50VHlwZSA9
IHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcjsKKyAgICB9CisgICAgcmV0dXJuIGhpZ2hlc3RGaWRl
bGl0eUNvbnRlbnRUeXBlOworfQorCiAtICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250
ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKWFjdGlvbgogewog
ICAgIFtzZWxmIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOmFjdGlv
biBzeW5jaHJvbm91c1RpbWVvdXQ6MF07CkBAIC00MTksNDEgKzQzOCwyMiBAQCAtICh2b2lkKWRv
QWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJG
aWxlTG9hZEJsb2NrKQogICAgIGF1dG8gY2hhbmdlQ291bnRCZWZvcmVMb2FkaW5nID0gX2NoYW5n
ZUNvdW50OwogICAgIGF1dG8gdHlwZVRvRmlsZVVSTE1hcHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W19pdGVtUHJvdmlkZXJzIGNvdW50XV0pOwog
Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IHByZWZlcnJlZFR5cGVJZGVudGlmaWVyczsKLSAgICBp
ZiAoW19wcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgY291bnRdID09IFtfaXRlbVByb3ZpZGVycyBj
b3VudF0pCi0gICAgICAgIHByZWZlcnJlZFR5cGVJZGVudGlmaWVycyA9IF9wcmVmZXJyZWRUeXBl
SWRlbnRpZmllcnM7Ci0KICAgICAvLyBGaXJzdCwgZmlndXJlIG91dCB3aGljaCBpdGVtIHByb3Zp
ZGVycyB3ZSB3YW50IHRvIHRyeSBhbmQgbG9hZCBmaWxlcyBmcm9tLgotICAgIGF1dG8gaXRlbVBy
b3ZpZGVyc1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIGF1dG8gY29udGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gaW5kaWNlc09mSXRlbVByb3ZpZGVy
c1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAg
IFtfaXRlbVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbcHJlZmVycmVkVHlw
ZUlkZW50aWZpZXJzLCBpdGVtUHJvdmlkZXJzV2l0aEZpbGVzLCBjb250ZW50VHlwZUlkZW50aWZp
ZXJzVG9Mb2FkLCBpbmRpY2VzT2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVzLCB0eXBlVG9GaWxlVVJM
TWFwc10gKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJP
T0wgKikgewotICAgICAgICBOU1N0cmluZyAqdHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUg
PSBuaWw7Ci0KLSAgICAgICAgaWYgKHByZWZlcnJlZFR5cGVJZGVudGlmaWVycyAmJiBbaXRlbVBy
b3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmplY3Q6W3ByZWZlcnJl
ZFR5cGVJZGVudGlmaWVycyBvYmplY3RBdEluZGV4OmluZGV4XV0pCi0gICAgICAgICAgICB0eXBl
SWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSA9IFtwcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgb2Jq
ZWN0QXRJbmRleDppbmRleF07Ci0KLSAgICAgICAgaWYgKCF0eXBlSWRlbnRpZmllck9mQ29udGVu
dFRvU2F2ZSkgewotICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBmaXJzdCAicHVibGlj
LmNvbnRlbnQiLWNvbmZvcm1hbnQgdHlwZSBpZGVudGlmaWVyLgotICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqaWRlbnRpZmllciBpbiBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVycykgewotICAgICAgICAgICAgICAgIGlmICghVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdS
ZWYpaWRlbnRpZmllciwga1VUVHlwZUNvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgIHR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlID0g
aWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICBh
dXRvIGl0ZW1Qcm92aWRlcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaW5kaWNlc09maXRlbVByb3ZpZGVy
c1RvTG9hZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJl
dGFpblB0cjxXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsK
KyAgICBbX2l0ZW1Qcm92aWRlcnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6W3Byb3RlY3Rl
ZFNlbGYsIGl0ZW1Qcm92aWRlcnNUb0xvYWQsIHR5cGVJZGVudGlmaWVyc1RvTG9hZCwgaW5kaWNl
c09maXRlbVByb3ZpZGVyc1RvTG9hZCwgdHlwZVRvRmlsZVVSTE1hcHNdIChVSUl0ZW1Qcm92aWRl
ciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsKKyAgICAgICAgTlNT
dHJpbmcgKnR5cGVJZGVudGlmaWVyVG9Mb2FkID0gW3Byb3RlY3RlZFNlbGYgdHlwZUlkZW50aWZp
ZXJUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50ZmllcnM6aXRlbVByb3ZpZGVyLnJlZ2lzdGVy
ZWRUeXBlSWRlbnRpZmllcnNdOworICAgICAgICBpZiAodHlwZUlkZW50aWZpZXJUb0xvYWQpIHsK
KyAgICAgICAgICAgIFtpdGVtUHJvdmlkZXJzVG9Mb2FkIGFkZE9iamVjdDppdGVtUHJvdmlkZXJd
OworICAgICAgICAgICAgW3R5cGVJZGVudGlmaWVyc1RvTG9hZCBhZGRPYmplY3Q6dHlwZUlkZW50
aWZpZXJUb0xvYWRdOworICAgICAgICAgICAgW2luZGljZXNPZml0ZW1Qcm92aWRlcnNUb0xvYWQg
YWRkT2JqZWN0OkAoaW5kZXgpXTsKICAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlSWRlbnRp
Zmllck9mQ29udGVudFRvU2F2ZSkgewotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlcnNXaXRoRmls
ZXMgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlcl07Ci0gICAgICAgICAgICBbY29udGVudFR5cGVJZGVu
dGlmaWVyc1RvTG9hZCBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmVdOwot
ICAgICAgICAgICAgW2luZGljZXNPZkl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgYWRkT2JqZWN0OkAo
aW5kZXgpXTsKLSAgICAgICAgfQotCiAgICAgICAgIFt0eXBlVG9GaWxlVVJMTWFwcyBhZGRPYmpl
Y3Q6QHsgfV07CiAgICAgfV07CiAKLSAgICBpZiAoIVtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGNv
dW50XSkgeworICAgIGlmICghW2l0ZW1Qcm92aWRlcnNUb0xvYWQgY291bnRdKSB7CiAgICAgICAg
IGFjdGlvbihAWyBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ2MSwxMCArNDYxLDEw
IEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdl
Ykl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAgICAgYXV0byBzZXRGaWxlVVJMc0xvY2sgPSBh
ZG9wdE5TKFtbTlNMb2NrIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBzeW5jaHJvbm91c0ZpbGVM
b2FkaW5nR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKICAg
ICBhdXRvIGZpbGVMb2FkaW5nR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2Ny
ZWF0ZSgpKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IFtpdGVtUHJv
dmlkZXJzV2l0aEZpbGVzIGNvdW50XTsgKytpbmRleCkgewotICAgICAgICBSZXRhaW5QdHI8VUlJ
dGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIG9iamVj
dEF0SW5kZXg6aW5kZXhdOwotICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlm
aWVyID0gW2NvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF07
Ci0gICAgICAgIE5TVUludGVnZXIgaW5kZXhJbkl0ZW1Qcm92aWRlckFycmF5ID0gW1tpbmRpY2Vz
T2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVzIG9iamVjdEF0SW5kZXg6aW5kZXhdIHVuc2lnbmVkSW50
ZWdlclZhbHVlXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IFtpdGVt
UHJvdmlkZXJzVG9Mb2FkIGNvdW50XTsgKytpbmRleCkgeworICAgICAgICBSZXRhaW5QdHI8VUlJ
dGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IFtpdGVtUHJvdmlkZXJzVG9Mb2FkIG9iamVjdEF0
SW5kZXg6aW5kZXhdOworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlmaWVy
ID0gW3R5cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICAgICAg
TlNVSW50ZWdlciBpbmRleEluSXRlbVByb3ZpZGVyQXJyYXkgPSBbW2luZGljZXNPZml0ZW1Qcm92
aWRlcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwog
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN1Z2dlc3RlZE5hbWUgPSBbaXRlbVByb3ZpZGVy
IHN1Z2dlc3RlZE5hbWVdOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihmaWxlTG9hZGlu
Z0dyb3VwLmdldCgpKTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoc3luY2hyb25vdXNG
aWxlTG9hZGluZ0dyb3VwLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQppbmRleCBhNDllMTM0ZjVlYTY0ODZhNGIxYTA0YmQzYWEzYjg4MWVhNGYxM2M1
Li4yMGQxMjlkMDY3ZmM3ODRmZjVkMWQzZmVmYWRlNDg4OTQ4MGZlZTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yOTIsNDMgKzI5Miw2IEBAIFN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRp
dGxlKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsgICAgICAgIAogfQogCi0jaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pCi0KLXN0YXRpYyBib29sIHR5cGVJc0FwcHJvcHJpYXRlRm9yU3Vw
cG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Vw
cG9ydGVkVHlwZXMpCi17Ci0gICAgQ0ZTdHJpbmdSZWYgY2ZUeXBlID0gdHlwZS5jcmVhdGVDRlN0
cmluZygpLmF1dG9yZWxlYXNlKCk7Ci0gICAgZm9yIChhdXRvIHN1cHBvcnRlZFR5cGUgOiBzdXBw
b3J0ZWRUeXBlcykgewotICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUsIHN1cHBv
cnRlZFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIERyYWdEYXRhOjp1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFR5
cGVzKSBjb25zdAotewotICAgIFZlY3RvcjxTdHJpbmc+IGJlc3RUeXBlSWRlbnRpZmllcnM7Ci0g
ICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpOwotICAgIHVpbnQ2NF90IGl0ZW1Db3VudCA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOwotICAgIGZvciAodWludDY0X3QgaXRlbUluZGV4
ID0gMDsgaXRlbUluZGV4IDwgaXRlbUNvdW50OyArK2l0ZW1JbmRleCkgewotICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlSWRlbnRpZmllcnM7Ci0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVJZGVudGlmaWVycywgaXRlbUluZGV4LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKLQotICAgICAgICBTdHJpbmcgYmVzdFR5cGVJZGVudGlmaWVyID0gZW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZUlkZW50aWZpZXJzKSB7Ci0g
ICAgICAgICAgICBpZiAoIXR5cGVJc0FwcHJvcHJpYXRlRm9yU3VwcG9ydGVkVHlwZXModHlwZSwg
c3VwcG9ydGVkVHlwZXMpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBiZXN0VHlwZUlkZW50aWZpZXIgPSB0eXBlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgYmVzdFR5cGVJZGVudGlmaWVycy5hcHBlbmQoYmVzdFR5cGVJZGVudGlmaWVy
KTsKLSAgICB9Ci0KLSAgICBzdHJhdGVneS51cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMo
YmVzdFR5cGVJZGVudGlmaWVycywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci19Ci0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCA1ZTkyMzhhOTcwNmUxN2YzNzdkMTBjZWE2ZjZlYzVmNWZkMjM3
ZGNiLi5hYjI2NGE2ZDIxY2Y2M2E5ZGZhZmU4ZWY5Nzk2Y2JhZGQ0MDVlYzAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGludCBnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCmluZGV4IGZlM2I5ZWJjNWY1NTZhODY1ZGY4YjQ2ODQ3ZTJhZDA1ZmZhMTc0NDUu
LjVmMGRiZWZlMGMyNjE4NmQwYjAzZGRjYmY5NzY2ZmMyODVmOTc4N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0KQEAgLTIxNiw5ICsyMTYsOSBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOworICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCmluZGV4IDlkZDFhNjZmZTFkMGNhYTU2ZWYxOTMwNDFkNDJhZTNiZGIzZjlmNmUu
LjQxOTViMDY0YjZkNWZhZTVhOGYyYWMyNmI1MjAwMGUxNDU5YWY4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCkBAIC00NCw2ICs0NCw3IEBACiBAY2xhc3MgVUlEcmFnSXRlbTsKIEBjbGFzcyBVSVRhcmdl
dGVkRHJhZ1ByZXZpZXc7CiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKK0Bwcm90b2NvbCBVSURy
b3BTZXNzaW9uOwogI2VuZGlmCiAKIEBwcm90b2NvbCBXS1VJRGVsZWdhdGVQcml2YXRlIDxXS1VJ
RGVsZWdhdGU+CkBAIC0xMTAsOCArMTExLDE0IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlv
bldhc0hhbmRsZWQ6KEJPT0wpaGFuZGxlZCBmb3JTZXNzaW9uOihpZClzZXNzaW9uIGl0ZW1Qcm92
aWRlcnM6KE5TQXJyYXkgKilpdGVtUHJvdmlkZXJzIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKIC0gKE5TVUludGVnZXIpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2ls
bFVwZGF0ZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvblRvT3BlcmF0aW9uOihOU1VJbnRlZ2VyKW9w
ZXJhdGlvbiBmb3JTZXNzaW9uOihpZClzZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMAorPDw8PDw8PCBIRUFECiAtIChVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2aWV3Rm9yTGlmdGluZ0l0ZW06
KFVJRHJhZ0l0ZW0gKilpdGVtIHNlc3Npb246KGlkIDxVSURyYWdTZXNzaW9uPilzZXNzaW9uIFdL
X0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKFVJVGFyZ2V0ZWREcmFnUHJldmll
dyAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHByZXZpZXdGb3JDYW5jZWxsaW5nSXRl
bTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFnUHJldmlldyAq
KWRlZmF1bHRQcmV2aWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKz09PT09
PT0KKy0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHByZXZpZXdGb3JMaWZ0aW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gc2Vzc2lvbjooaWQg
PFVJRHJhZ1Nlc3Npb24+KXNlc3Npb247CistIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06KFVJRHJh
Z0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0
UHJldmlldzsKKy0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJvcFdpdGhTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4p
c2Vzc2lvbjsKKz4+Pj4+Pj4gVXNpbmcgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0
ZW1Qcm92aWRlcnM6XSB0byBzd2FwIG91dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJy
ZWFrcyBpdGVtIHByb3ZpZGVyIGxvYWRpbmcKICNlbmRpZgogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRDaGFuZ2VTYWZlQXJlYVNob3VsZEFmZmVjdE9ic2N1cmVkSW5z
ZXRzOihCT09MKXNhZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHMgV0tfQVBJX0FWQUlM
QUJMRShpb3MoV0tfSU9TX1RCQSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA5ZmYw
NTZmYmM5NWQwZTg1ZDEwMjNmNTIwZDY4NGQ3NWQzZjliMTRmLi41MWNhMTZiNTc3MWJiYjExODI0
ZWJjYmNhYzQxZmI1NTQ3YzgzMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xOTgsOSArMTk4
LDkgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFj
dGlvbihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmQKICAgICBmaWxlbmFtZXMgPSBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbigpOwog
fQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkudXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKKyAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhpZGVudGlmaWVycyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDliYjZkNTRjYTJkMWZjYzg3Y2MyY2Q5
ZmIxNTliYjQ0NTJiYzA3ZmQuLjhkNzY4OTBiMzAzOGQ4N2EwYmI3MDIxMDBlOGY4NjZjZDI2MTc5
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCYg
c2l6ZSk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCB1aW50NjRfdCYgaXRlbXNDb3VudCk7CiAgICAgdm9pZCBnZXRGaWxlbmFt
ZXNGb3JEYXRhSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcyk7Ci0gICAgdm9pZCB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBnZXROdW1iZXJP
ZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBudW1iZXJPZkZp
bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQwMTJhZDVhM2IxNmU1Y2JjMWNjNmE0NDMzMjIyYWI2
OTgzMWNmOTcuLmMzODgyOTNkZDA4N2Q4ZTk4OWRiN2U4NTliMzNmMGM3Yjc4ZDQyM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJv
eHkgewogICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5n
IHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKICAgICBHZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50
KQogICAgIEdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpCi0gICAgVXBkYXRlUHJlZmVycmVkVHlw
ZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpCisgICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+
IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgR2V0UGFzdGVib2FyZFR5
cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMWFhMmQ4YmVlMGRiMTdjMWYyNDU1MjdkMzlh
OTkzYjk4NzIyMjA5MS4uODIxNDA4MjgyYmQwZDY0NTY5ZTgzZWRlMjlhNDdjOWQ3MDJkMThmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzI0LDkgKzMyNCw5IEBA
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rp
b24oVmVjdG9yPFN0cmluZz4mIGZpbGVuCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKHBhc3RlYm9hcmROYW1lKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
OjpSZXBseShmaWxlbmFtZXMpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRl
bnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlm
aWVycyhpZGVudGlmaWVycywgcGFzdGVib2FyZE5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVy
cywgcGFzdGVib2FyZE5hbWUpLCAwKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzJkY2Y5ZmY0NmU3
M2RjMzZmYzM0ZWJjNzhkMTZjZDZlOGRkNWUzYi4uZjc4YTczMTFkNDQzNDJhYjI5ZTA4YzU0YTY2
YTU5YWNhMGQzM2VjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02OCw3
ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29y
ZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjk1YTI4Mjc2YWUzM2Ri
MzgyNDFiZDFmZTEwOGNjYzg2OGYwZGJiNS4uNGE2YWUxOGZmMzgwYmIyYzFkYjBiNWY1ZTU0NGRk
YjE2NzIzNzA3YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3Jl
IGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZHMgbmV3IHVuaXQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgLV93ZWJWaWV3OndpbGxQ
ZXJmb3JtRHJvcFdpdGhTZXNzaW9uOiBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgb3V0IGRyYWcgaXRl
bXMKKyAgICAgICAgdXNlZCBieSBXZWJLaXQgd2hlbiBoYW5kbGluZyBhIGRyb3AuIFRoZXNlIHRl
c3RzIGVuc3VyZSB0aGF0IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgaXMgc3RpbGwgYWJsZSB0
byBoYW5kbGUKKyAgICAgICAgdGhlc2UgcmVtYWluaW5nIGl0ZW1zIG9uIGRyb3AuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKworICAgICAgICBBZGQgLW92ZXJyaWRlUGVy
Zm9ybURyb3BCbG9jaywgd2hpY2ggY2FuIGJlIHNldCB0byBwcm92aWRlIGN1c3RvbSBoYW5kbGlu
ZyBvZiBkcm9wcGVkIGl0ZW1zLgorCisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBfd2ViVmlldzp3aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjpdKToKKwogMjAxNy0wNi0xNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBmYWxzZWx5
IHJlcG9ydHMgdGhhdCBhIHdlYiBwcm9jZXNzIGlzIHVucmVzcG9uc2l2ZSBpZiB5b3UgY2xvc2Ug
YSBwYWdlIHNob3J0bHkgYWZ0ZXIgc3RvcHBpbmcgYSBsb2FkCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IGI0MWZk
OTkyMzkyNDNhMjcwNzc1ZTEwYTE2NTQ5Y2ZlMmI4NTBiYTcuLjM5NjE5YmYyYmEzYWIyNzkyMzNh
YWQwY2NiNjMwNmFjYzU1MGQxZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC02ODYsNiArNjg2LDY0IEBAIFRF
U1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlRmlsZVVSTCkKICAgICBFWFBF
Q1RfV0tfU1RSRVEoIkhlbGxvIHdvcmxkXG5maWxlOi8vL3NvbWUvZmlsZS90aGF0L2lzL25vdC9y
ZWFsIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJv
ZHkuaW5uZXJUZXh0Il0pOwogfQogCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5h
bFNvdXJjZU92ZXJyaWRlRHJvcEZpbGVVcGxvYWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJmaWxlLXVwbG9hZGluZyJdOworCisgICAgYXV0byBzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIE5TRGF0
YSAqaW1hZ2VEYXRhID0gVUlJbWFnZUpQRUdSZXByZXNlbnRhdGlvbih0ZXN0SWNvbkltYWdlKCks
IDAuNSk7CisgICAgW3NpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZUpQRUcgd2l0aERh
dGE6aW1hZ2VEYXRhXTsKKworICAgIGF1dG8gc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9IGFk
b3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIE5TRGF0YSAqZmlyc3RI
VE1MRGF0YSA9IFtAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+IiBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcg
KilrVVRUeXBlSFRNTCB3aXRoRGF0YTpmaXJzdEhUTUxEYXRhXTsKKworICAgIGF1dG8gZGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbZGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIHNldE92ZXJyaWRlUGVyZm9ybURyb3BCbG9jazpeTlNBcnJheTxVSURyYWdJ
dGVtICo+ICooaWQgPFVJRHJvcFNlc3Npb24+IHNlc3Npb24pCisgICAgeworICAgICAgICBFWFBF
Q1RfRVEoMlVMLCBzZXNzaW9uLml0ZW1zLmNvdW50KTsKKyAgICAgICAgVUlEcmFnSXRlbSAqZmly
c3RJdGVtID0gc2Vzc2lvbi5pdGVtc1swXTsKKyAgICAgICAgVUlEcmFnSXRlbSAqc2Vjb25kSXRl
bSA9IHNlc3Npb24uaXRlbXNbMV07CisgICAgICAgIEVYUEVDVF9UUlVFKFtmaXJzdEl0ZW0uaXRl
bVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgaXNFcXVhbDpAWyAoTlNTdHJpbmcg
KilrVVRUeXBlSlBFRyBdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtzZWNvbmRJdGVtLml0ZW1Q
cm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGlzRXF1YWw6QFsgKE5TU3RyaW5nICop
a1VUVHlwZUhUTUwgXV0pOworICAgICAgICByZXR1cm4gQFsgc2Vjb25kSXRlbSBdOworICAgIH1d
OworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OkBbIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyLmdldCgpLCBzaW11bGF0ZWRIVE1MSXRlbVBy
b3ZpZGVyLmdldCgpIF1dOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpD
R1BvaW50TWFrZSgyMDAsIDMwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKworICAgIE5T
U3RyaW5nICpvdXRwdXRWYWx1ZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJvdXRwdXQudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvaHRtbCIsIG91
dHB1dFZhbHVlLlVURjhTdHJpbmcpOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBF
eHRlcm5hbFNvdXJjZU92ZXJyaWRlRHJvcEluc2VydFVSTCkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAImF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUiXTsKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2Vz
KCkiXTsKKworICAgIGF1dG8gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0
KCldKTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldE92ZXJyaWRlUGVyZm9ybURy
b3BCbG9jazpeTlNBcnJheTxVSURyYWdJdGVtICo+ICooaWQgPFVJRHJvcFNlc3Npb24+IHNlc3Np
b24pCisgICAgeworICAgICAgICBOU011dGFibGVBcnJheTxVSURyYWdJdGVtICo+ICphbGxvd2Vk
SXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgICAgICBmb3IgKFVJRHJhZ0l0ZW0g
Kml0ZW0gaW4gc2Vzc2lvbi5pdGVtcykgeworICAgICAgICAgICAgaWYgKFtpdGVtLml0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAq
KWtVVFR5cGVVUkxdKQorICAgICAgICAgICAgICAgIFthbGxvd2VkSXRlbXMgYWRkT2JqZWN0Oml0
ZW1dOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUSgxVUwsIGFsbG93ZWRJdGVtcy5jb3Vu
dCk7CisgICAgICAgIHJldHVybiBhbGxvd2VkSXRlbXM7CisgICAgfV07CisKKyAgICBhdXRvIGZp
cnN0SXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgW2ZpcnN0SXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OkAiVGhpcyBpcyBhIHN0cmlu
Zy4iIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmls
aXR5QWxsXTsKKyAgICBhdXRvIHNlY29uZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzZWNvbmRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJP
YmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gdmlzaWJp
bGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOwor
ICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBb
IGZpcnN0SXRlbVByb3ZpZGVyLmdldCgpLCBzZWNvbmRJdGVtUHJvdmlkZXIuZ2V0KCkgXV07Cisg
ICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAw
KSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRw
czovL3dlYmtpdC5vcmcvIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImVkaXRvci50ZXh0Q29udGVudCJdKTsKK30KKwogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
T3ZlcnJpZGVEYXRhSW50ZXJhY3Rpb25PcGVyYXRpb24pCiB7CiAgICAgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCA2OWU0Zjk2MGM4
MTU5YTNlNzVlNzA2NmZiNjEwOGU2Yzk2YWE0NGRiLi4xODA4YWEwMGZlNTc4OTYyOThkZjAyYTQ1
MGU5MTE1MjUyYzU5OWI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuaApAQCAtNzYsNiArNzYsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
bG9ja1B0cjxCT09MKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0aW9u
U2hlZXRCbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooVUlJ
dGVtUHJvdmlkZXIgKiwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKik+IGNvbnZlcnRJdGVtUHJv
dmlkZXJzQmxvY2s7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNBcnJheSAqKGlk
IDxVSURyb3BTZXNzaW9uPik+IG92ZXJyaWRlUGVyZm9ybURyb3BCbG9jazsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIE5TQXJyYXkgKmV4dGVybmFsSXRlbVByb3ZpZGVyczsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU1VJbnRlZ2VyKE5TVUludGVnZXIsIGlkKT4gb3Zl
cnJpZGVEYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25CbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TQXJyYXkgKik+IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlv
bkNvbXBsZXRpb25CbG9jazsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvci5tbQppbmRleCA4MzAxNGE4MDE4OGNjZTViYzk3YTBiOTdjZjU1
YjI5YWMyNjIyZTVkLi43MDkwZjdiODk5NDhkYzdiNmYxNjNiNmJmNDY4NGYxYjU2MzkwMGIxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yLm1tCkBAIC0zMjYsNiArMzI2LDExIEBAIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlCiAgICAg
cmV0dXJuIHNlbGYuc2hvd0N1c3RvbUFjdGlvblNoZWV0QmxvY2soZWxlbWVudCk7CiB9CiAKKy0g
KE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdp
bGxQZXJmb3JtRHJvcFdpdGhTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbgorewor
ICAgIHJldHVybiBzZWxmLm92ZXJyaWRlUGVyZm9ybURyb3BCbG9jayA/IHNlbGYub3ZlcnJpZGVQ
ZXJmb3JtRHJvcEJsb2NrKHNlc3Npb24pIDogc2Vzc2lvbi5pdGVtczsKK30KKwogI3ByYWdtYSBt
YXJrIC0gX1dLSW5wdXREZWxlZ2F0ZQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxfV0tGb2N1c2VkRWxlbWVu
dEluZm8+KWluZm8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312942</attachid>
            <date>2017-06-14 18:11:50 -0700</date>
            <delta_ts>2017-06-14 18:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173338-20170614181149.patch</filename>
            <type>text/plain</type>
            <size>40910</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBjYzMzMzM5YzQ5MTE3
NDA2NzhkMzkzNTc3ZjQ4Yjg0MmQ1NWI1NC4uZGU1ZjQwZWU3NzllZjQ5YWVmNzc0NTZmNjA0NWVj
N2I3YzM2ZDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE3LTA2LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRl
bSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgcmVwbGFjaW5nIHRoZSBsaXN0IG9m
IFVJSXRlbVByb3ZpZGVycyByaWdodCBiZWZvcmUgYSBkcm9wIGlzIGhhbmRsZWQgcmVzdWx0cyBp
bgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGZhaWxpbmcgdG8gbG9hZCBub24t
InB1YmxpYy5jb250ZW50Ii1jb25mb3JtYW50IGl0ZW1zLiBUaGlzIGlzIGJlY2F1c2UgRHJhZ0Nv
bnRyb2xsZXIKKyAgICAgICAgY29tcHV0ZXMgYW5kIHNlbmRzIHRvIHRoZSBVSSBwcm9jZXNzIGEg
bGlzdCBvZiBVVElzIHRvIGxvYWQgKHByZWZlcnJlZFR5cGVJZGVudGlmaWVyczogb25lIHR5cGUg
aWRlbnRpZmllciBmb3IKKyAgICAgICAgZWFjaCBpdGVtIHByb3ZpZGVyIGluIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQpLiBIb3dldmVyLCBpZiB0aGUgbGlzdCBvZiBpdGVtIHByb3ZpZGVycyBj
aGFuZ2VzIGltbWVkaWF0ZWx5CisgICAgICAgIGJlZm9yZSBhIGRyb3AgaXMgcGVyZm9ybWVkLCBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHdpbGwgZ2V0IGludG8gYW4gaW5jb25zaXN0ZW50IHN0
YXRlIHdoZXJlIGl0IGhhcyBhCisgICAgICAgIGRpZmZlcmVudCBudW1iZXIgb2YgcHJlZmVycmVk
IHR5cGUgaWRlbnRpZmllcnMgdG8gbG9hZCB0aGFuIGF2YWlsYWJsZSBpdGVtIHByb3ZpZGVycy4g
VGhpcyBjYXVzZXMKKyAgICAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB0byBmYWlsIHdo
ZW4gY2hvb3Npbmcgd2hhdCB0eXBlIGlkZW50aWZpZXJzIHRvIGxvYWQgZnJvbSBlYWNoIGl0ZW0g
cHJvdmlkZXIuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGluc3RlYWQgaGF2ZSB0aGUgd2Vi
IHByb2Nlc3MgcHJvcGFnYXRlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdHlwZSBpZGVudGlmaWVycyB0
byB0aGUgVUkgcHJvY2VzcywKKyAgICAgICAgd2hpY2ggaXMgYSBwcm9wZXJ0eSBvZiBvbmx5IHRo
ZSBkcm9wIGRlc3RpbmF0aW9uIHJhdGhlciB0aGFuIGJvdGggdGhlIGRlc3RpbmF0aW9uIGFuZCBp
dGVtIHByb3ZpZGVycy4gV2hlbgorICAgICAgICBwZXJmb3JtaW5nIGEgZHJvcCwgd2UgdGhlbiB1
c2UgdGhlIGN1cnJlbnQgaXRlbSBwcm92aWRlcnMgb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCB0byBjb25zdWx0IHRoaXMgbGlzdCBvZgorICAgICAgICBzdXBwb3J0ZWQgdHlwZSBpZGVudGlm
aWVycyB0byByZXNvbHZlIG91ciBsaXN0IG9mIHByZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIHRv
IGxvYWQuCisKKyAgICAgICAgR2xvYmFsbHkgcmVuYW1lcyB1cGRhdGVQcmVmZXJyZWRUeXBlSWRl
bnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLgorCisgICAgICAgIFRl
c3RzOgorICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZU92ZXJyaWRl
RHJvcEZpbGVVcGxvYWQKKyAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRXh0ZXJuYWxTb3Vy
Y2VPdmVycmlkZURyb3BJbnNlcnRVUkwKKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5k
bGluZ01ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dXBkYXRl
UHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVQcmVmZXJyZWRUeXBl
SWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
IGluaXRdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQgc2V0SXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZCB0eXBlSXNBcHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHR5cGVJZGVudGlmaWVyVG9Mb2FkRm9yUmVnaXN0
ZXJlZFR5cGVJZGVudGZpZXJzOl0pOgorCisgICAgICAgIEFkZCBsb2dpYyB0byByZXNvbHZlIHBy
ZWZlcnJlZCB0eXBlIGlkZW50aWZpZXJzIGZyb20gYW4gaXRlbSBwcm92aWRlcnMgbGlzdCBvZiBy
ZWdpc3RlcmVkIHR5cGUgaWRlbnRpZmllcnMuCisgICAgICAgIFRoaXMgZm9ybWVybHkgZXhpc3Rl
ZCBvbiBEcmFnRGF0YS4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRv
QWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOnN5bmNocm9ub3VzVGltZW91
dDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB1cGRhdGVQcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tOgorCisgICAgICAgIFJlbW92ZSBwcmVmZXJyZWQgdHlwZSBpZGVudGlmaWVy
IHJlc29sdXRpb24gbG9naWMgZnJvbSBEcmFnRGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6dHlw
ZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKTogRGVsZXRlZC4K
KwogMjAxNy0wNi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBWaWRlbyBmbGFzaGVzIGJsYWNrIHdoZW4gc3dpdGNoaW5nIGJhY2sgdG8gYSB0YWIgaHR0cHM6
Ly93d3cuYXBwbGUuY29tL2hvbWVwb2QvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNDU5NTZmNTcxZjgz
ZjkzMWQ3OTNmODEyNGMwMGQ1YmU1NGJlOTViOS4uNmQxMjlkZjVkOWU2NjY4MTY5OWY1ZDZlNDFk
Y2JhZTQ5NWYyNTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2
LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVz
aW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dh
cCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBs
b2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzMzMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSB1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMp
OiBEZWxldGVkLgorCiAyMDE3LTA2LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgVzNDIFNlY3VyZSBDb250ZXh0cyBEcmFmdCBTcGVjaWZp
Y2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVlNjhlM2Q5Nzc4MGU4ODYxNDc1NzBjZDAxOThiZDM5ZDg4
ZjBhMS4uNGYyNmMwYjQzZmVmYTE3MDVjNTEzZWQ5MTE1MzdkMzBjMjk4OTRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA2LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRlbSBwcm92aWRlcnMgYmVmb3JlIGEg
ZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgdG8gdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzLiBBbHNvLCBpbnRyb2R1Y2UKKyAgICAgICAgX3dlYlZpZXc6d2ls
bFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246IGFzIFNQSSBvbiBXS1VJRGVsZWdhdGUuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKwogMjAxNy0wNi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYktpdCBmYWxzZWx5IHJlcG9ydHMgdGhhdCBhIHdlYiBwcm9jZXNzIGlzIHVucmVz
cG9uc2l2ZSBpZiB5b3UgY2xvc2UgYSBwYWdlIHNob3J0bHkgYWZ0ZXIgc3RvcHBpbmcgYSBsb2Fk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGNiZTEwM2RjZTQ3NzFl
ODU1YWE4ODRmN2NjNTY5OGZiOGU4NmJhZGUuLjQ4MTgzZjljNDE1ODg4YjZlZDM4NGQzMTQxYWY4
NzQ2ZjQ3ODYyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0z
MDksNyArMzA5LDYgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRP
clVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIG1vdXNlTW92ZWRJbnRv
RG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGll
bnRQb3NpdGlvbigpKSk7CiAKLSAgICBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9
IHsgfTsKICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbigpOwogICAgIGlmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9PSBEcmFnRGVz
dGluYXRpb25BY3Rpb25Ob25lKSB7CiAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7IC8vIEZJWE1F
OiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKT8KQEAgLTMyNCw3
ICszMjMsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBk
YXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICBtX2RyYWdIYW5kbGlu
Z01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfQogCi0gICAgdXBk
YXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hh
bmRsaW5nTWV0aG9kLCBkcmFnRGF0YSk7CisgICAgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hhbmRsaW5nTWV0aG9kLCBkcmFnRGF0YSk7
CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb247CiB9CiAKQEAgLTM2NSw3ICszNjQsNyBAQCBzdGF0
aWMgRWxlbWVudCogZWxlbWVudFVuZGVyTW91c2UoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3Vz
ZSwgY29uc3QgSW50UG9pbnQmCiAKICNpZiAhRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZv
aWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3QK
K3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRy
YWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29u
c3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGVhZGU2YzZk
YjhlZjIzMDRmYmI2NGJlMjA4NGY2ZjlmOGEyYWE0NTMuLjJkZjZmNDBmNjc3ZmI1NTM0NDVlZWRk
YmIyNmQzNjlmODNlOWRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAg
LTk5LDcgKzk5LDcgQEAgc3RydWN0IERyYWdTdGF0ZTsKICAgICAgICAgc3RhdGljIGNvbnN0IGZs
b2F0IERyYWdJbWFnZUFscGhhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5n
TWV0aG9kLCBjb25zdCBEcmFnRGF0YSYpIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRo
b2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3Q7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5w
dXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgICAgIGJvb2wgY2FuUHJv
Y2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICAgICAgYm9vbCBjb25jbHVkZUVkaXREcmFn
KGNvbnN0IERyYWdEYXRhJik7CkBAIC0xNDUsNyArMTQ1LDYgQEAgc3RydWN0IERyYWdTdGF0ZTsK
IAogICAgICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247
CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnU291cmNlQWN0aW9uOwotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZDsKICAgICAgICAg
Ym9vbCBtX2RpZEluaXRpYXRlRHJhZzsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURy
YWdPcGVyYXRpb247IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20g
YSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQKICAgICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCBj
YjA5YTIyYzZjZjFkMjAwNjNmNDdiY2M3MDViZjg2NTcxOWMzMWY2Li5iODEyMTg4NDBhYjNhMmU2
YTRjZGQ4N2I1ZmQxYmMzM2Q4MDNkNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9E
cmFnQ29udHJvbGxlck1hYy5tbQpAQCAtNDIsNiArNDIsOCBAQAogI2ltcG9ydCAiTWFpbkZyYW1l
LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lt
cG9ydCAiUmFuZ2UuaCIKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA0LDcg
KzEwNiw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVw
ZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFu
ZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
IGNvbnN0Cit2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01l
dGhvZCwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHN1cHBvcnRlZFR5cGVzOwogICAgIHN3aXRjaCAoZHJhZ0hhbmRsaW5nTWV0aG9kKSB7CkBA
IC0xMjMsNyArMTI1LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlUHJlZmVycmVkVHlw
ZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KICAgICAgICAgc3VwcG9y
dGVkVHlwZXMuYXBwZW5kKGtVVFR5cGVDb250ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIGRyYWdEYXRhLnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhzdXBwb3J0ZWRUeXBl
cyk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMsIGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmlu
ZGV4IDUwY2ViODZjNTExNDUxYjViNTU0YmVmODQ4NjkwODE2MjE5YmYwYzcuLmFjZjMyMmNiOWMz
ZDI5Yzk0ZmE5MTdjNjQwM2YxMGVlZDY0YzllNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtMTE0LDkgKzExNCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zVVJMVHlw
ZUlkZW50aWZpZXIoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zUHJvbWlzZSgpIGNvbnN0Owog
I2VuZGlmCi0jaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgdm9pZCB1cGRhdGVQcmVm
ZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFR5cGVz
KSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDNjNmRhNmM3YmFlMmYwYzBkYzg0
Y2NkOTI3OWUwM2VhZmIyNzlkNDkuLjliZjI3OWU1YWYyMWU0MDhiNTMxZWY5M2YwMTgwMTZmZmIx
NjU4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAppbmRleCAyM2Y2ZjMwYzUyZGE4YWM2MTQ4MjM1MmQ0OTY5ODRlNWI3MWViZDkwLi5hZmRh
MTU1ZWYxMzQ0M2E5MTFlODMwNzBkZGM3NzcxYjViNTIzZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyB1bmlxdWVOYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRleCBlMWMyYzJjYWFiYjIzM2RjNThk
ZDNjNDY4Y2MzMDU2MzMwOWM3MzEyLi5iNzQ0ZmUyNWRlYTkzNzE4YTI2YTRiOTFiZjg2ODAzNTcx
YTJmODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQ
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oCkBAIC00NSw3ICs0NSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChO
U0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OihOU1VJbnRlZ2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBO
U0ludGVnZXIgbnVtYmVyT2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykg
TlNBcnJheTxOU1VSTCAqPiAqZmlsZVVSTHNGb3JEYXRhSW50ZXJhY3Rpb247Ci0tICh2b2lkKXVw
ZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVz
OworLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKil0eXBlczsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA3NmNhOTg3YjM0NTVlYzc5MzU4
OTRhMTk1ZTQzYjdlZDgzZDZhN2MyLi41Yjg3ZWQ2ODFjZTczZjdkYWE2MjM5YWFiNzgxMTFiODFj
ZDU0NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTQ1NiwxNiArNDU2LDE2IEBAIFVSTCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIFN0cmluZyYgdGl0
bGUpCiAgICAgcmV0dXJuIChOU1VSTCAqKXZhbHVlOwogfQogCi12b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIGlmICghW21fcGFz
dGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVByZWZlcnJlZFR5cGVJ
ZGVudGlmaWVyczopXSkKKyAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnR5cGVzLnNpemUoKV07CiAgICAgZm9yIChhdXRvIHR5cGUgOiB0
eXBlcykKICAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXR5cGVdOwog
Ci0gICAgW21fcGFzdGVib2FyZCB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM6dHlwZXNB
cnJheV07CisgICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6
dHlwZXNBcnJheV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggMGViOThhY2NhOWJjOGRi
NzkwYzY1ZTEyMjViMTIzZTMwOTIwOTQ1YS4uYzQ3ZjU1ZTRiOTVkODQ4MDZkZmI1MGExYjg0OGM2
MDg3MjRlZTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBAaW1wbGVt
ZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IF9pdGVtUHJvdmlkZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfY2FjaGVkVHlwZUlk
ZW50aWZpZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfdHlwZVRvRmlsZVVSTE1hcHM7Ci0g
ICAgUmV0YWluUHRyPE5TQXJyYXk+IF9wcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM7CisgICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9zdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IF9yZWdpc3RyYXRpb25JbmZvTGlzdHM7CiB9CiAKQEAgLTE3NywxNiArMTc3LDE1
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIF9jaGFuZ2VDb3VudCA9IDA7CiAgICAg
ICAgIF9wZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwogICAgICAgICBfdHlwZVRvRmlsZVVSTE1h
cHMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwotICAgICAgICBfcHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzID0gbmlsOworICAgICAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
ID0gbmlsOwogICAgICAgICBfcmVnaXN0cmF0aW9uSW5mb0xpc3RzID0gbmlsOwogICAgIH0KICAg
ICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZCl1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcworLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcwogewotICAgIGlmIChb
X2l0ZW1Qcm92aWRlcnMgY291bnRdID09IHR5cGVzLmNvdW50KQotICAgICAgICBfcHJlZmVycmVk
VHlwZUlkZW50aWZpZXJzID0gdHlwZXM7CisgICAgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9
IHR5cGVzOwogfQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CkBAIC0yMjUsOSArMjI0LDYg
QEAgLSAodm9pZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycwogICAgIGlmIChfaXRlbVByb3ZpZGVycyA9PSBpdGVtUHJvdmlkZXJzIHx8
IFtfaXRlbVByb3ZpZGVycyBpc0VxdWFsVG9BcnJheTppdGVtUHJvdmlkZXJzXSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGl0ZW1Qcm92aWRlcnMuY291bnQgIT0gW19pdGVtUHJvdmlkZXJz
IGNvdW50XSkKLSAgICAgICAgX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVycyA9IG5pbDsKLQogICAg
IF9pdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBfY2hhbmdlQ291bnQrKzsKICAg
ICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwpAQCAtNDA5LDYgKzQwNSwyOSBAQCBzdGF0
aWMgTlNVUkwgKnRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TVVJM
ICp1cmwsIE5TU3RyaW5nICpzdQogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0
ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OnN1Z2dlc3RlZE5hbWUgPzogdXJsLmxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKKy0g
KEJPT0wpdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlczooTlNTdHJpbmcgKil0eXBl
Cit7CisgICAgLy8gQSB0eXBlIGlzIGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgdG8gbG9hZCBpZiBp
dCBjb25mb3JtcyB0byBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgdHlwZXMuCisgICAgZm9yIChOU1N0
cmluZyAqc3VwcG9ydGVkVHlwZUlkZW50aWZpZXIgaW4gX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cy5nZXQoKSkgeworICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpdHlw
ZSwgKENGU3RyaW5nUmVmKXN1cHBvcnRlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy0gKE5TU3RyaW5nICop
dHlwZUlkZW50aWZpZXJUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50ZmllcnM6KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzCit7CisgICAgTlNTdHJpbmcg
KmhpZ2hlc3RGaWRlbGl0eUNvbnRlbnRUeXBlID0gbmlsOworICAgIGZvciAoTlNTdHJpbmcgKnJl
Z2lzdGVyZWRUeXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIGlmIChbc2VsZiB0eXBlSXNBcHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzOnJlZ2lz
dGVyZWRUeXBlSWRlbnRpZmllcl0pCisgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyOworCisgICAgICAgIGlmICghaGlnaGVzdEZpZGVsaXR5Q29udGVudFR5cGUgJiYg
VVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyLCBr
VVRUeXBlQ29udGVudCkpCisgICAgICAgICAgICBoaWdoZXN0RmlkZWxpdHlDb250ZW50VHlwZSA9
IHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcjsKKyAgICB9CisgICAgcmV0dXJuIGhpZ2hlc3RGaWRl
bGl0eUNvbnRlbnRUeXBlOworfQorCiAtICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250
ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKWFjdGlvbgogewog
ICAgIFtzZWxmIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOmFjdGlv
biBzeW5jaHJvbm91c1RpbWVvdXQ6MF07CkBAIC00MTksNDEgKzQzOCwyMiBAQCAtICh2b2lkKWRv
QWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJG
aWxlTG9hZEJsb2NrKQogICAgIGF1dG8gY2hhbmdlQ291bnRCZWZvcmVMb2FkaW5nID0gX2NoYW5n
ZUNvdW50OwogICAgIGF1dG8gdHlwZVRvRmlsZVVSTE1hcHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W19pdGVtUHJvdmlkZXJzIGNvdW50XV0pOwog
Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IHByZWZlcnJlZFR5cGVJZGVudGlmaWVyczsKLSAgICBp
ZiAoW19wcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgY291bnRdID09IFtfaXRlbVByb3ZpZGVycyBj
b3VudF0pCi0gICAgICAgIHByZWZlcnJlZFR5cGVJZGVudGlmaWVycyA9IF9wcmVmZXJyZWRUeXBl
SWRlbnRpZmllcnM7Ci0KICAgICAvLyBGaXJzdCwgZmlndXJlIG91dCB3aGljaCBpdGVtIHByb3Zp
ZGVycyB3ZSB3YW50IHRvIHRyeSBhbmQgbG9hZCBmaWxlcyBmcm9tLgotICAgIGF1dG8gaXRlbVBy
b3ZpZGVyc1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIGF1dG8gY29udGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gaW5kaWNlc09mSXRlbVByb3ZpZGVy
c1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAg
IFtfaXRlbVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbcHJlZmVycmVkVHlw
ZUlkZW50aWZpZXJzLCBpdGVtUHJvdmlkZXJzV2l0aEZpbGVzLCBjb250ZW50VHlwZUlkZW50aWZp
ZXJzVG9Mb2FkLCBpbmRpY2VzT2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVzLCB0eXBlVG9GaWxlVVJM
TWFwc10gKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJP
T0wgKikgewotICAgICAgICBOU1N0cmluZyAqdHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUg
PSBuaWw7Ci0KLSAgICAgICAgaWYgKHByZWZlcnJlZFR5cGVJZGVudGlmaWVycyAmJiBbaXRlbVBy
b3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmplY3Q6W3ByZWZlcnJl
ZFR5cGVJZGVudGlmaWVycyBvYmplY3RBdEluZGV4OmluZGV4XV0pCi0gICAgICAgICAgICB0eXBl
SWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSA9IFtwcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgb2Jq
ZWN0QXRJbmRleDppbmRleF07Ci0KLSAgICAgICAgaWYgKCF0eXBlSWRlbnRpZmllck9mQ29udGVu
dFRvU2F2ZSkgewotICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBmaXJzdCAicHVibGlj
LmNvbnRlbnQiLWNvbmZvcm1hbnQgdHlwZSBpZGVudGlmaWVyLgotICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqaWRlbnRpZmllciBpbiBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVycykgewotICAgICAgICAgICAgICAgIGlmICghVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdS
ZWYpaWRlbnRpZmllciwga1VUVHlwZUNvbnRlbnQpKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgIHR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlID0g
aWRlbnRpZmllcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICBh
dXRvIGl0ZW1Qcm92aWRlcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaW5kaWNlc09maXRlbVByb3ZpZGVy
c1RvTG9hZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJl
dGFpblB0cjxXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsK
KyAgICBbX2l0ZW1Qcm92aWRlcnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6W3Byb3RlY3Rl
ZFNlbGYsIGl0ZW1Qcm92aWRlcnNUb0xvYWQsIHR5cGVJZGVudGlmaWVyc1RvTG9hZCwgaW5kaWNl
c09maXRlbVByb3ZpZGVyc1RvTG9hZCwgdHlwZVRvRmlsZVVSTE1hcHNdIChVSUl0ZW1Qcm92aWRl
ciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsKKyAgICAgICAgTlNT
dHJpbmcgKnR5cGVJZGVudGlmaWVyVG9Mb2FkID0gW3Byb3RlY3RlZFNlbGYgdHlwZUlkZW50aWZp
ZXJUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50ZmllcnM6aXRlbVByb3ZpZGVyLnJlZ2lzdGVy
ZWRUeXBlSWRlbnRpZmllcnNdOworICAgICAgICBpZiAodHlwZUlkZW50aWZpZXJUb0xvYWQpIHsK
KyAgICAgICAgICAgIFtpdGVtUHJvdmlkZXJzVG9Mb2FkIGFkZE9iamVjdDppdGVtUHJvdmlkZXJd
OworICAgICAgICAgICAgW3R5cGVJZGVudGlmaWVyc1RvTG9hZCBhZGRPYmplY3Q6dHlwZUlkZW50
aWZpZXJUb0xvYWRdOworICAgICAgICAgICAgW2luZGljZXNPZml0ZW1Qcm92aWRlcnNUb0xvYWQg
YWRkT2JqZWN0OkAoaW5kZXgpXTsKICAgICAgICAgfQotCi0gICAgICAgIGlmICh0eXBlSWRlbnRp
Zmllck9mQ29udGVudFRvU2F2ZSkgewotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlcnNXaXRoRmls
ZXMgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlcl07Ci0gICAgICAgICAgICBbY29udGVudFR5cGVJZGVu
dGlmaWVyc1RvTG9hZCBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmVdOwot
ICAgICAgICAgICAgW2luZGljZXNPZkl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgYWRkT2JqZWN0OkAo
aW5kZXgpXTsKLSAgICAgICAgfQotCiAgICAgICAgIFt0eXBlVG9GaWxlVVJMTWFwcyBhZGRPYmpl
Y3Q6QHsgfV07CiAgICAgfV07CiAKLSAgICBpZiAoIVtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGNv
dW50XSkgeworICAgIGlmICghW2l0ZW1Qcm92aWRlcnNUb0xvYWQgY291bnRdKSB7CiAgICAgICAg
IGFjdGlvbihAWyBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ2MSwxMCArNDYxLDEw
IEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdl
Ykl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAgICAgYXV0byBzZXRGaWxlVVJMc0xvY2sgPSBh
ZG9wdE5TKFtbTlNMb2NrIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBzeW5jaHJvbm91c0ZpbGVM
b2FkaW5nR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKICAg
ICBhdXRvIGZpbGVMb2FkaW5nR3JvdXAgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2Ny
ZWF0ZSgpKTsKLSAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IFtpdGVtUHJv
dmlkZXJzV2l0aEZpbGVzIGNvdW50XTsgKytpbmRleCkgewotICAgICAgICBSZXRhaW5QdHI8VUlJ
dGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIG9iamVj
dEF0SW5kZXg6aW5kZXhdOwotICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlm
aWVyID0gW2NvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF07
Ci0gICAgICAgIE5TVUludGVnZXIgaW5kZXhJbkl0ZW1Qcm92aWRlckFycmF5ID0gW1tpbmRpY2Vz
T2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVzIG9iamVjdEF0SW5kZXg6aW5kZXhdIHVuc2lnbmVkSW50
ZWdlclZhbHVlXTsKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IFtpdGVt
UHJvdmlkZXJzVG9Mb2FkIGNvdW50XTsgKytpbmRleCkgeworICAgICAgICBSZXRhaW5QdHI8VUlJ
dGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IFtpdGVtUHJvdmlkZXJzVG9Mb2FkIG9iamVjdEF0
SW5kZXg6aW5kZXhdOworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlmaWVy
ID0gW3R5cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICAgICAg
TlNVSW50ZWdlciBpbmRleEluSXRlbVByb3ZpZGVyQXJyYXkgPSBbW2luZGljZXNPZml0ZW1Qcm92
aWRlcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwog
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN1Z2dlc3RlZE5hbWUgPSBbaXRlbVByb3ZpZGVy
IHN1Z2dlc3RlZE5hbWVdOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihmaWxlTG9hZGlu
Z0dyb3VwLmdldCgpKTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoc3luY2hyb25vdXNG
aWxlTG9hZGluZ0dyb3VwLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQppbmRleCBhNDllMTM0ZjVlYTY0ODZhNGIxYTA0YmQzYWEzYjg4MWVhNGYxM2M1
Li4yMGQxMjlkMDY3ZmM3ODRmZjVkMWQzZmVmYWRlNDg4OTQ4MGZlZTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yOTIsNDMgKzI5Miw2IEBAIFN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRp
dGxlKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsgICAgICAgIAogfQogCi0jaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pCi0KLXN0YXRpYyBib29sIHR5cGVJc0FwcHJvcHJpYXRlRm9yU3Vw
cG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Vw
cG9ydGVkVHlwZXMpCi17Ci0gICAgQ0ZTdHJpbmdSZWYgY2ZUeXBlID0gdHlwZS5jcmVhdGVDRlN0
cmluZygpLmF1dG9yZWxlYXNlKCk7Ci0gICAgZm9yIChhdXRvIHN1cHBvcnRlZFR5cGUgOiBzdXBw
b3J0ZWRUeXBlcykgewotICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUsIHN1cHBv
cnRlZFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIERyYWdEYXRhOjp1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFR5
cGVzKSBjb25zdAotewotICAgIFZlY3RvcjxTdHJpbmc+IGJlc3RUeXBlSWRlbnRpZmllcnM7Ci0g
ICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpOwotICAgIHVpbnQ2NF90IGl0ZW1Db3VudCA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOwotICAgIGZvciAodWludDY0X3QgaXRlbUluZGV4
ID0gMDsgaXRlbUluZGV4IDwgaXRlbUNvdW50OyArK2l0ZW1JbmRleCkgewotICAgICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlSWRlbnRpZmllcnM7Ci0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVJZGVudGlmaWVycywgaXRlbUluZGV4LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKLQotICAgICAgICBTdHJpbmcgYmVzdFR5cGVJZGVudGlmaWVyID0gZW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZUlkZW50aWZpZXJzKSB7Ci0g
ICAgICAgICAgICBpZiAoIXR5cGVJc0FwcHJvcHJpYXRlRm9yU3VwcG9ydGVkVHlwZXModHlwZSwg
c3VwcG9ydGVkVHlwZXMpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBiZXN0VHlwZUlkZW50aWZpZXIgPSB0eXBlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgYmVzdFR5cGVJZGVudGlmaWVycy5hcHBlbmQoYmVzdFR5cGVJZGVudGlmaWVy
KTsKLSAgICB9Ci0KLSAgICBzdHJhdGVneS51cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMo
YmVzdFR5cGVJZGVudGlmaWVycywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci19Ci0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCA1ZTkyMzhhOTcwNmUxN2YzNzdkMTBjZWE2ZjZlYzVmNWZkMjM3
ZGNiLi5hYjI2NGE2ZDIxY2Y2M2E5ZGZhZmU4ZWY5Nzk2Y2JhZGQ0MDVlYzAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGludCBnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCmluZGV4IGZlM2I5ZWJjNWY1NTZhODY1ZGY4YjQ2ODQ3ZTJhZDA1ZmZhMTc0NDUu
LjVmMGRiZWZlMGMyNjE4NmQwYjAzZGRjYmY5NzY2ZmMyODVmOTc4N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0KQEAgLTIxNiw5ICsyMTYsOSBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOworICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCmluZGV4IDlkZDFhNjZmZTFkMGNhYTU2ZWYxOTMwNDFkNDJhZTNiZGIzZjlmNmUu
LjA3OTgyY2NhZWRhMDdmMjM2ZjNmMDNhODk4MTYzM2E5ODQ3NzE3YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCkBAIC00NCw2ICs0NCw3IEBACiBAY2xhc3MgVUlEcmFnSXRlbTsKIEBjbGFzcyBVSVRhcmdl
dGVkRHJhZ1ByZXZpZXc7CiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKK0Bwcm90b2NvbCBVSURy
b3BTZXNzaW9uOwogI2VuZGlmCiAKIEBwcm90b2NvbCBXS1VJRGVsZWdhdGVQcml2YXRlIDxXS1VJ
RGVsZWdhdGU+CkBAIC0xMTIsNiArMTEzLDcgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKICNpZiBU
QVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcHJldmlld0ZvckxpZnRpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSBzZXNzaW9uOihp
ZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CiAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZh
dWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmlldyBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7CistIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjooaWQgPFVJ
RHJvcFNlc3Npb24+KXNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwog
I2VuZGlmCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENoYW5nZVNh
ZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHM6KEJPT0wpc2FmZUFyZWFTaG91bGRBZmZl
Y3RPYnNjdXJlZEluc2V0cyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCmluZGV4IDlmZjA1NmZiYzk1ZDBlODVkMTAyM2Y1MjBkNjg0ZDc1
ZDNmOWIxNGYuLjUxY2ExNmI1NzcxYmJiMTE4MjRlYmNiY2FjNDFmYjU1NDdjODMwM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZAogICAgIGZpbGVuYW1lcyA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZmls
ZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAg
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVQcmVmZXJyZWRUeXBlSWRl
bnRpZmllcnMoaWRlbnRpZmllcnMpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgK
aW5kZXggOWJiNmQ1NGNhMmQxZmNjODdjYzJjZDlmYjE1OWJiNDQ1MmJjMDdmZC4uOGQ3Njg5MGIz
MDM4ZDg3YTBiYjcwMjEwMGU4Zjg2NmNkMjYxNzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsKICAgICB2b2lkIGdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBpdGVt
c0NvdW50KTsKICAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKLSAgICB2
b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIHZvaWQgdXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgdWludDY0X3QmIG51bWJlck9mRmlsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDAx
MmFkNWEzYjE2ZTVjYmMxY2M2YTQ0MzMyMjJhYjY5ODMxY2Y5Ny4uYzM4ODI5M2RkMDg3ZDhlOTg5
ZGI3ZTg1OWIzM2YwYzdiNzhkNDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMSw3ICszMSw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgUmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50
NjRfdCBzaXplKQogICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpCiAgICAgR2V0RmlsZW5hbWVzRm9yRGF0YUlu
dGVyYWN0aW9uKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVu
YW1lcykKLSAgICBVcGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4g
aWRlbnRpZmllcnMsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKKyAgICBVcGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkKICAgICBHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+
IHR5cGVzKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCAxYWEyZDhiZWUwZGIxN2MxZjI0NTUyN2QzOWE5OTNiOTg3MjIyMDkxLi44MjE0MDgyODJiZDBk
NjQ1NjllODNlZGUyOWE0N2M5ZDcwMmQxOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC0zMjQsOSArMzI0LDkgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW4KICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRGaWxlbmFtZXNGb3JEYXRhSW50
ZXJhY3Rpb24ocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb246OlJlcGx5KGZpbGVuYW1lcyksIDApOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6VXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJk
TmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDApOwogfQog
CiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCA3MmRjZjlmZjQ2ZTczZGMzNmZjMzRlYmM3OGQxNmNkNmU4ZGQ1ZTNi
Li5mNzhhNzMxMWQ0NDM0MmFiMjllMDhjNTRhNjZhNTlhY2EwZDMzZWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVQcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiOTVhMjgyNzZhZTMzZGIzODI0MWJkMWZlMTA4Y2NjODY4ZjBkYmI1Li40
YTZhZTE4ZmYzODBiYjJjMWRiMGI1ZjVlNTQ0ZGRiMTY3MjM3MDdiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTct
MDYtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNpbmcgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSB0byBz
d2FwIG91dCBpdGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHByb3ZpZGVy
IGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzMzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI3Nzc3MjA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdW5pdCB0ZXN0cyB0
byBlbnN1cmUgdGhhdCAtX3dlYlZpZXc6d2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246IGNhbiBi
ZSB1c2VkIHRvIGZpbHRlciBvdXQgZHJhZyBpdGVtcworICAgICAgICB1c2VkIGJ5IFdlYktpdCB3
aGVuIGhhbmRsaW5nIGEgZHJvcC4gVGhlc2UgdGVzdHMgZW5zdXJlIHRoYXQgV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZCBpcyBzdGlsbCBhYmxlIHRvIGhhbmRsZQorICAgICAgICB0aGVzZSByZW1h
aW5pbmcgaXRlbXMgb24gZHJvcC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1t
OgorCisgICAgICAgIEFkZCAtb3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrLCB3aGljaCBjYW4gYmUg
c2V0IHRvIHByb3ZpZGUgY3VzdG9tIGhhbmRsaW5nIG9mIGRyb3BwZWQgaXRlbXMuCisKKyAgICAg
ICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF93ZWJWaWV3OndpbGxQZXJmb3JtRHJvcFdp
dGhTZXNzaW9uOl0pOgorCiAyMDE3LTA2LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViS2l0IGZhbHNlbHkgcmVwb3J0cyB0aGF0IGEgd2ViIHByb2Nlc3Mg
aXMgdW5yZXNwb25zaXZlIGlmIHlvdSBjbG9zZSBhIHBhZ2Ugc2hvcnRseSBhZnRlciBzdG9wcGlu
ZyBhIGxvYWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0KaW5kZXggYjQxZmQ5OTIzOTI0M2EyNzA3NzVlMTBhMTY1NDljZmUy
Yjg1MGJhNy4uMzk2MTliZjJiYTNhYjI3OTIzM2FhZDBjY2I2MzA2YWNjNTUwZDFkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVz
dHMubW0KQEAgLTY4Niw2ICs2ODYsNjQgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0
ZXJuYWxTb3VyY2VGaWxlVVJMKQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGRcbmZp
bGU6Ly8vc29tZS9maWxlL3RoYXQvaXMvbm90L3JlYWwiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lclRleHQiXSk7CiB9CiAKK1RFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9h
ZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CisKKyAg
ICBhdXRvIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7CisgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1Jl
cHJlc2VudGF0aW9uKHRlc3RJY29uSW1hZ2UoKSwgMC41KTsKKyAgICBbc2ltdWxhdGVkSW1hZ2VJ
dGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworCisgICAgYXV0byBz
aW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CisgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVk
aXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
KyAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmZpcnN0
SFRNTERhdGFdOworCisgICAgYXV0byBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5T
KFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmll
dy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0T3ZlcnJpZGVQZXJm
b3JtRHJvcEJsb2NrOl5OU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKihpZCA8VUlEcm9wU2Vzc2lvbj4g
c2Vzc2lvbikKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUSgyVUwsIHNlc3Npb24uaXRlbXMuY291
bnQpOworICAgICAgICBVSURyYWdJdGVtICpmaXJzdEl0ZW0gPSBzZXNzaW9uLml0ZW1zWzBdOwor
ICAgICAgICBVSURyYWdJdGVtICpzZWNvbmRJdGVtID0gc2Vzc2lvbi5pdGVtc1sxXTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW2ZpcnN0SXRlbS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVycyBpc0VxdWFsOkBbIChOU1N0cmluZyAqKWtVVFR5cGVKUEVHIF1dKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW3NlY29uZEl0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRp
ZmllcnMgaXNFcXVhbDpAWyAoTlNTdHJpbmcgKilrVVRUeXBlSFRNTCBdXSk7CisgICAgICAgIHJl
dHVybiBAWyBzZWNvbmRJdGVtIF07CisgICAgfV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlk
ZXIuZ2V0KCksIHNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW2RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgMzAwKSB0bzpDR1Bv
aW50TWFrZSgxMDAsIDMwMCldOworCisgICAgTlNTdHJpbmcgKm91dHB1dFZhbHVlID0gW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdOworICAgIEVY
UEVDVF9XS19TVFJFUSgidGV4dC9odG1sIiwgb3V0cHV0VmFsdWUuVVRGOFN0cmluZyk7Cit9CisK
K1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wSW5z
ZXJ0VVJMKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRl
ZGl0YWJsZSJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJn
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJdOworCisgICAgYXV0byBkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3Igc2V0T3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrOl5OU0FycmF5PFVJRHJhZ0l0ZW0g
Kj4gKihpZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKKyAgICB7CisgICAgICAgIE5TTXV0YWJs
ZUFycmF5PFVJRHJhZ0l0ZW0gKj4gKmFsbG93ZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CisgICAgICAgIGZvciAoVUlEcmFnSXRlbSAqaXRlbSBpbiBzZXNzaW9uLml0ZW1zKSB7Cisg
ICAgICAgICAgICBpZiAoW2l0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
cnMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZVVSTF0pCisgICAgICAgICAgICAg
ICAgW2FsbG93ZWRJdGVtcyBhZGRPYmplY3Q6aXRlbV07CisgICAgICAgIH0KKyAgICAgICAgRVhQ
RUNUX0VRKDFVTCwgYWxsb3dlZEl0ZW1zLmNvdW50KTsKKyAgICAgICAgcmV0dXJuIGFsbG93ZWRJ
dGVtczsKKyAgICB9XTsKKworICAgIGF1dG8gZmlyc3RJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
VUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbZmlyc3RJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJPYmplY3Q6QCJUaGlzIGlzIGEgc3RyaW5nLiIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRl
clJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gc2Vjb25kSXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W3NlY29uZEl0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgZmlyc3RJdGVtUHJvdmlkZXIuZ2V0KCksIHNl
Y29uZEl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07
CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworfQor
CiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBPdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJh
dGlvbikKIHsKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5oCmluZGV4IDY5ZTRmOTYwYzgxNTlhM2U3NWU3MDY2ZmI2MTA4ZTZjOTZhYTQ0
ZGIuLjE4MDhhYTAwZmU1Nzg5NjI5OGRmMDJhNDUwZTkxMTUyNTJjNTk5YjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCkBAIC03
Niw2ICs3Niw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBo
YXNlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzaG91bGRFbnN1cmVVSUFwcGxpY2F0
aW9uOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPEJPT0woX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKik+IHNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJsb2NrUHRyPE5TQXJyYXkgKihVSUl0ZW1Qcm92aWRlciAqLCBOU0FycmF5ICosIE5T
RGljdGlvbmFyeSAqKT4gY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooaWQgPFVJRHJvcFNlc3Npb24+KT4gb3ZlcnJpZGVQ
ZXJmb3JtRHJvcEJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBcnJheSAq
ZXh0ZXJuYWxJdGVtUHJvdmlkZXJzOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5T
VUludGVnZXIoTlNVSW50ZWdlciwgaWQpPiBvdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlv
bkJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNBcnJh
eSAqKT4gZGF0YUludGVyYWN0aW9uT3BlcmF0aW9uQ29tcGxldGlvbkJsb2NrOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCmluZGV4
IDgzMDE0YTgwMTg4Y2NlNWJjOTdhMGI5N2NmNTViMjlhYzI2MjJlNWQuLjcwOTBmN2I4OTk0OGRj
N2I2ZjE2M2I2YmY0Njg0ZjFiNTYzOTAwYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KQEAgLTMyNiw2ICszMjYsMTEgQEAg
LSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG93Q3VzdG9tU2hlZXRGb3JF
bGVtZW50OihfV0tBY3RpdmF0ZWRFbGUKICAgICByZXR1cm4gc2VsZi5zaG93Q3VzdG9tQWN0aW9u
U2hlZXRCbG9jayhlbGVtZW50KTsKIH0KIAorLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246KGlk
IDxVSURyb3BTZXNzaW9uPilzZXNzaW9uCit7CisgICAgcmV0dXJuIHNlbGYub3ZlcnJpZGVQZXJm
b3JtRHJvcEJsb2NrID8gc2VsZi5vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2soc2Vzc2lvbikgOiBz
ZXNzaW9uLml0ZW1zOworfQorCiAjcHJhZ21hIG1hcmsgLSBfV0tJbnB1dERlbGVnYXRlCiAKIC0g
KEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZm9jdXNTaG91bGRTdGFydElucHV0
U2Vzc2lvbjooaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4paW5mbwo=
</data>
<flag name="review"
          id="333841"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312990</attachid>
            <date>2017-06-15 10:27:29 -0700</date>
            <delta_ts>2017-06-15 11:11:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173338-20170615102728.patch</filename>
            <type>text/plain</type>
            <size>40778</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M1NTViYzI1ZDkzYWMw
NGQ4NDQ5NGRhNTcyN2FhNWQ0OTFlOGFjMC4uYmJmNDdiNDU2NzBmNWQ4MjcwN2NkZjQ1ZDA2ODY2
M2Q0MGQ2YjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE3LTA2LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gdG8gc3dhcCBvdXQgaXRl
bSBwcm92aWRlcnMgYmVmb3JlIGEgZHJvcCBicmVha3MgaXRlbSBwcm92aWRlciBsb2FkaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMzgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzc3NzIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgQ3VycmVudGx5LCByZXBsYWNpbmcgdGhlIGxpc3Qgb2YgVUlJ
dGVtUHJvdmlkZXJzIHJpZ2h0IGJlZm9yZSBhIGRyb3AgaXMgaGFuZGxlZCByZXN1bHRzIGluCisg
ICAgICAgIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZmFpbGluZyB0byBsb2FkIG5vbi0icHVi
bGljLmNvbnRlbnQiLWNvbmZvcm1hbnQgaXRlbXMuIFRoaXMgaXMgYmVjYXVzZSBEcmFnQ29udHJv
bGxlcgorICAgICAgICBjb21wdXRlcyBhbmQgc2VuZHMgdG8gdGhlIFVJIHByb2Nlc3MgYSBsaXN0
IG9mIFVUSXMgdG8gbG9hZCAocHJlZmVycmVkVHlwZUlkZW50aWZpZXJzOiBvbmUgdHlwZSBpZGVu
dGlmaWVyIGZvcgorICAgICAgICBlYWNoIGl0ZW0gcHJvdmlkZXIgaW4gV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZCkuIEhvd2V2ZXIsIGlmIHRoZSBsaXN0IG9mIGl0ZW0gcHJvdmlkZXJzIGNoYW5n
ZXMgaW1tZWRpYXRlbHkKKyAgICAgICAgYmVmb3JlIGEgZHJvcCBpcyBwZXJmb3JtZWQsIFdlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQgd2lsbCBnZXQgaW50byBhbiBpbmNvbnNpc3RlbnQgc3RhdGUg
d2hlcmUgaXQgaGFzIGEKKyAgICAgICAgZGlmZmVyZW50IG51bWJlciBvZiBwcmVmZXJyZWQgdHlw
ZSBpZGVudGlmaWVycyB0byBsb2FkIHRoYW4gYXZhaWxhYmxlIGl0ZW0gcHJvdmlkZXJzLiBUaGlz
IGNhdXNlcworICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIGZhaWwgd2hlbiBj
aG9vc2luZyB3aGF0IHR5cGUgaWRlbnRpZmllcnMgdG8gbG9hZCBmcm9tIGVhY2ggaXRlbSBwcm92
aWRlci4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgaW5zdGVhZCBoYXZlIHRoZSB3ZWIgcHJv
Y2VzcyBwcm9wYWdhdGUgYSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlIGlkZW50aWZpZXJzIHRvIHRo
ZSBVSSBwcm9jZXNzLAorICAgICAgICB3aGljaCBpcyBhIHByb3BlcnR5IG9mIG9ubHkgdGhlIGRy
b3AgZGVzdGluYXRpb24gcmF0aGVyIHRoYW4gYm90aCB0aGUgZGVzdGluYXRpb24gYW5kIGl0ZW0g
cHJvdmlkZXJzLiBXaGVuCisgICAgICAgIHBlcmZvcm1pbmcgYSBkcm9wLCB3ZSB0aGVuIHVzZSB0
aGUgY3VycmVudCBpdGVtIHByb3ZpZGVycyBvbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRv
IGNvbnN1bHQgdGhpcyBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRlZCB0eXBlIGlkZW50aWZpZXJz
IHRvIHJlc29sdmUgb3VyIGxpc3Qgb2YgcHJlZmVycmVkIHR5cGUgaWRlbnRpZmllcnMgdG8gbG9h
ZC4KKworICAgICAgICBHbG9iYWxseSByZW5hbWVzIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlm
aWVycyB0byB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMuCisKKyAgICAgICAgVGVzdHM6
CisgICAgICAgIERhdGFJbnRlcmFjdGlvblRlc3RzLkV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9w
RmlsZVVwbG9hZAorICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZU92
ZXJyaWRlRHJvcEluc2VydFVSTAorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5n
TWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAg
ICAgICogcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRs
aW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVQcmVm
ZXJyZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVu
dGlmaWVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgaW5p
dF0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCBzZXRJdGVtUHJvdmlkZXJzOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkIHR5cGVJc0FwcHJvcHJpYXRlRm9yU3VwcG9ydGVkVHlwZXM6XSk6CisgICAgICAgICgtW1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgdHlwZUlkZW50aWZpZXJUb0xvYWRGb3JSZWdpc3RlcmVk
VHlwZUlkZW50ZmllcnM6XSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIHJlc29sdmUgcHJlZmVy
cmVkIHR5cGUgaWRlbnRpZmllcnMgZnJvbSBhbiBpdGVtIHByb3ZpZGVycyBsaXN0IG9mIHJlZ2lz
dGVyZWQgdHlwZSBpZGVudGlmaWVycy4KKyAgICAgICAgVGhpcyBmb3JtZXJseSBleGlzdGVkIG9u
IERyYWdEYXRhLgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZG9BZnRl
ckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6c3luY2hyb25vdXNUaW1lb3V0Ol0p
OgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHVwZGF0ZVByZWZlcnJlZFR5
cGVJZGVudGlmaWVyczpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisKKyAgICAgICAgUmVtb3ZlIHByZWZlcnJlZCB0eXBlIGlkZW50aWZpZXIgcmVz
b2x1dGlvbiBsb2dpYyBmcm9tIERyYWdEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjp0eXBlSXNB
cHByb3ByaWF0ZUZvclN1cHBvcnRlZFR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMpOiBEZWxldGVkLgorCiAy
MDE3LTA2LTE0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gR2VuZXJhdGUgYSBzaW11bGF0ZWQgY3Jhc2ggd2hlbiB0aGUgV2ViVGhyZWFkIHN0YXJ0
cyBpbiBNb2JpbGVTYWZhcmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NTk1NmY1NzFmODNmOTMxZDc5
M2Y4MTI0YzAwZDViZTU0YmU5NWI5Li5hZThiM2Q5NWVhZDYxMWJkNDY0MGQyMjBlZTdhOTUyOTgz
MmIxNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDYtMTQgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNpbmcgLVtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSB0byBzd2FwIG91dCBp
dGVtIHByb3ZpZGVycyBiZWZvcmUgYSBkcm9wIGJyZWFrcyBpdGVtIHByb3ZpZGVyIGxvYWRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzMzOAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI3Nzc3MjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbi4KKworICAgICAgICBSZW5hbWUgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZp
ZXJzIHRvIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKTogRGVsZXRlZC4K
KwogMjAxNy0wNi0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IFczQyBTZWN1cmUgQ29udGV4dHMgRHJhZnQgU3BlY2lmaWNhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGViMTYzNzFlZTc0Y2ExMzQ5NTU4OTNhNWRjYTYzMDMxMGQ2M2E1MDguLjNmYTE2
NjQ5ZmQ0YjFkNzE2ZWM4NmE4M2E3MGQ2MGM0MWJlMzgyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAxNy0wNi0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2luZyAtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVBy
b3ZpZGVyczpdIHRvIHN3YXAgb3V0IGl0ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJlYWtz
IGl0ZW0gcHJvdmlkZXIgbG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczMzM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjc3NzcyMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlbmFtZSB1cGRh
dGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMgdG8gdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzLiBBbHNvLCBpbnRyb2R1Y2UKKyAgICAgICAgX3dlYlZpZXc6d2lsbFBlcmZvcm1Ecm9wV2l0
aFNlc3Npb246IGFzIFNQSSBvbiBXS1VJRGVsZWdhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxNy0w
Ni0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gQ2xlYW51cCBoZWFkZXJzIGluY2x1ZGVzIGluIEdUSysgQVBJIGZpbGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGNiZTEwM2RjZTQ3NzFlODU1YWE4
ODRmN2NjNTY5OGZiOGU4NmJhZGUuLjQ4MTgzZjljNDE1ODg4YjZlZDM4NGQzMTQxYWY4NzQ2ZjQ3
ODYyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0zMDksNyAr
MzA5LDYgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0
ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1l
bnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3Np
dGlvbigpKSk7CiAKLSAgICBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IHsgfTsK
ICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IGRyYWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFj
dGlvbigpOwogICAgIGlmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9PSBEcmFnRGVzdGluYXRp
b25BY3Rpb25Ob25lKSB7CiAgICAgICAgIGNsZWFyRHJhZ0NhcmV0KCk7IC8vIEZJWE1FOiBXaHkg
bm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxscHRyKT8KQEAgLTMyNCw3ICszMjMs
NyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICBtX2RyYWdIYW5kbGluZ01ldGhv
ZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfQogCi0gICAgdXBkYXRlUHJl
ZmVycmVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hhbmRsaW5n
TWV0aG9kLCBkcmFnRGF0YSk7CisgICAgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9y
RHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hhbmRsaW5nTWV0aG9kLCBkcmFnRGF0YSk7CiAgICAg
cmV0dXJuIGRyYWdPcGVyYXRpb247CiB9CiAKQEAgLTM2NSw3ICszNjQsNyBAQCBzdGF0aWMgRWxl
bWVudCogZWxlbWVudFVuZGVyTW91c2UoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSwgY29u
c3QgSW50UG9pbnQmCiAKICNpZiAhRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZvaWQgRHJh
Z0NvbnRyb2xsZXI6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGlu
Z01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3QKK3ZvaWQg
RHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5k
bGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNvbnN0IERyYWdEYXRhJikgY29uc3QKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGVhZGU2YzZkYjhlZjIz
MDRmYmI2NGJlMjA4NGY2ZjlmOGEyYWE0NTMuLjJkZjZmNDBmNjc3ZmI1NTM0NDVlZWRkYmIyNmQz
NjlmODNlOWRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTk5LDcg
Kzk5LDcgQEAgc3RydWN0IERyYWdTdGF0ZTsKICAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IERy
YWdJbWFnZUFscGhhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVQcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5nTWV0aG9k
LCBjb25zdCBEcmFnRGF0YSYpIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QsIGNv
bnN0IERyYWdEYXRhJikgY29uc3Q7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVu
dEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgICAgIGJvb2wgY2FuUHJvY2Vzc0Ry
YWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICAgICAgYm9vbCBjb25jbHVkZUVkaXREcmFnKGNvbnN0
IERyYWdEYXRhJik7CkBAIC0xNDUsNyArMTQ1LDYgQEAgc3RydWN0IERyYWdTdGF0ZTsKIAogICAg
ICAgICBEcmFnRGVzdGluYXRpb25BY3Rpb24gbV9kcmFnRGVzdGluYXRpb25BY3Rpb247CiAgICAg
ICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnU291cmNlQWN0aW9uOwotICAgICAgICBWZWN0b3I8
U3RyaW5nPiBtX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVyc1RvTG9hZDsKICAgICAgICAgYm9vbCBt
X2RpZEluaXRpYXRlRHJhZzsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVy
YXRpb247IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3Vz
ZSBkb3duIHdpdGhpbiBXZWJLaXQKICAgICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCBjYjA5YTIy
YzZjZjFkMjAwNjNmNDdiY2M3MDViZjg2NTcxOWMzMWY2Li5iODEyMTg4NDBhYjNhMmU2YTRjZGQ4
N2I1ZmQxYmMzM2Q4MDNkNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9E
cmFnQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29u
dHJvbGxlck1hYy5tbQpAQCAtNDIsNiArNDIsOCBAQAogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAj
aW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJQYXN0ZWJv
YXJkU3RyYXRlZ3kuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAi
UmFuZ2UuaCIKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA0LDcgKzEwNiw3
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogCiAjaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVBy
ZWZlcnJlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdN
ZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpIGNvbnN0
Cit2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JE
cmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwg
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IHN1
cHBvcnRlZFR5cGVzOwogICAgIHN3aXRjaCAoZHJhZ0hhbmRsaW5nTWV0aG9kKSB7CkBAIC0xMjMs
NyArMTI1LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50
aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KICAgICAgICAgc3VwcG9ydGVkVHlw
ZXMuYXBwZW5kKGtVVFR5cGVDb250ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGRy
YWdEYXRhLnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhzdXBwb3J0ZWRUeXBlcyk7Cisg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoc3VwcG9ydGVkVHlwZXMsIGRyYWdEYXRhLnBhc3RlYm9hcmRO
YW1lKCkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDUw
Y2ViODZjNTExNDUxYjViNTU0YmVmODQ4NjkwODE2MjE5YmYwYzcuLmFjZjMyMmNiOWMzZDI5Yzk0
ZmE5MTdjNjQwM2YxMGVlZDY0YzllNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApA
QCAtMTE0LDkgKzExNCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zVVJMVHlwZUlkZW50
aWZpZXIoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zUHJvbWlzZSgpIGNvbnN0OwogI2VuZGlm
Ci0jaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgdm9pZCB1cGRhdGVQcmVmZXJyZWRU
eXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKSBjb25z
dDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDNjNmRhNmM3YmFlMmYwYzBkYzg0Y2NkOTI3
OWUwM2VhZmIyNzlkNDkuLjliZjI3OWU1YWYyMWU0MDhiNTMxZWY5M2YwMTgwMTZmZmIxNjU4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRl
eChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApp
bmRleCAyM2Y2ZjMwYzUyZGE4YWM2MTQ4MjM1MmQ0OTY5ODRlNWI3MWViZDkwLi5hZmRhMTU1ZWYx
MzQ0M2E5MTFlODMwNzBkZGM3NzcxYjViNTIzZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGludCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyB1bmlxdWVOYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRleCBlMWMyYzJjYWFiYjIzM2RjNThkZDNjNDY4
Y2MzMDU2MzMwOWM3MzEyLi5iNzQ0ZmUyNWRlYTkzNzE4YTI2YTRiOTFiZjg2ODAzNTcxYTJmODcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCkBAIC00NSw3ICs0NSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChOU0FycmF5
PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVn
ZXIgbnVtYmVyT2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJh
eTxOU1VSTCAqPiAqZmlsZVVSTHNGb3JEYXRhSW50ZXJhY3Rpb247Ci0tICh2b2lkKXVwZGF0ZVBy
ZWZlcnJlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVzOworLSAo
dm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4g
Kil0eXBlczsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA3NmNhOTg3YjM0NTVlYzc5MzU4OTRhMTk1
ZTQzYjdlZDgzZDZhN2MyLi41Yjg3ZWQ2ODFjZTczZjdkYWE2MjM5YWFiNzgxMTFiODFjZDU0NDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KQEAgLTQ1NiwxNiArNDU2LDE2IEBAIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIFN0cmluZyYgdGl0bGUpCiAg
ICAgcmV0dXJuIChOU1VSTCAqKXZhbHVlOwogfQogCi12b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
dXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewotICAgIGlmICghW21fcGFzdGVib2Fy
ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlm
aWVyczopXSkKKyAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KV0pCiAgICAgICAgIHJldHVybjsK
IAogICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnR5cGVzLnNpemUoKV07CiAgICAgZm9yIChhdXRvIHR5cGUgOiB0eXBlcykK
ICAgICAgICAgW3R5cGVzQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKXR5cGVdOwogCi0gICAg
W21fcGFzdGVib2FyZCB1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM6dHlwZXNBcnJheV07
CisgICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6dHlwZXNB
cnJheV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggMGViOThhY2NhOWJjOGRiNzkwYzY1
ZTEyMjViMTIzZTMwOTIwOTQ1YS4uMzA1NGQwYjU5MzMyZTM0NGZiZTdiY2M1Yjg4ZTIxNjVhZjdi
OTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBAaW1wbGVtZW50YXRp
b24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9p
dGVtUHJvdmlkZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfY2FjaGVkVHlwZUlkZW50aWZp
ZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfdHlwZVRvRmlsZVVSTE1hcHM7Ci0gICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9wcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM7CisgICAgUmV0YWluUHRy
PE5TQXJyYXk+IF9zdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk+IF9yZWdpc3RyYXRpb25JbmZvTGlzdHM7CiB9CiAKQEAgLTE3NywxNiArMTc3LDE1IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIF9jaGFuZ2VDb3VudCA9IDA7CiAgICAgICAgIF9w
ZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwogICAgICAgICBfdHlwZVRvRmlsZVVSTE1hcHMgPSBh
ZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwotICAgICAgICBfcHJlZmVycmVkVHlwZUlk
ZW50aWZpZXJzID0gbmlsOworICAgICAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzID0gbmls
OwogICAgICAgICBfcmVnaXN0cmF0aW9uSW5mb0xpc3RzID0gbmlsOwogICAgIH0KICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZCl1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnM6KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcworLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlcwogewotICAgIGlmIChbX2l0ZW1Q
cm92aWRlcnMgY291bnRdID09IHR5cGVzLmNvdW50KQotICAgICAgICBfcHJlZmVycmVkVHlwZUlk
ZW50aWZpZXJzID0gdHlwZXM7CisgICAgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9IHR5cGVz
OwogfQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CkBAIC0yMjUsOSArMjI0LDYgQEAgLSAo
dm9pZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICopaXRlbVBy
b3ZpZGVycwogICAgIGlmIChfaXRlbVByb3ZpZGVycyA9PSBpdGVtUHJvdmlkZXJzIHx8IFtfaXRl
bVByb3ZpZGVycyBpc0VxdWFsVG9BcnJheTppdGVtUHJvdmlkZXJzXSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGl0ZW1Qcm92aWRlcnMuY291bnQgIT0gW19pdGVtUHJvdmlkZXJzIGNvdW50
XSkKLSAgICAgICAgX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVycyA9IG5pbDsKLQogICAgIF9pdGVt
UHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBfY2hhbmdlQ291bnQrKzsKICAgICBfY2Fj
aGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwpAQCAtNDA5LDYgKzQwNSwyOSBAQCBzdGF0aWMgTlNV
UkwgKnRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TVVJMICp1cmws
IE5TU3RyaW5nICpzdQogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0ZW1wb3Jh
cnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OnN1Z2dlc3RlZE5hbWUgPzogdXJsLmxhc3RQYXRoQ29tcG9uZW50XV07CiB9CiAKKy0gKEJPT0wp
dHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlczooTlNTdHJpbmcgKil0eXBlCit7Cisg
ICAgLy8gQSB0eXBlIGlzIGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgdG8gbG9hZCBpZiBpdCBjb25m
b3JtcyB0byBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgdHlwZXMuCisgICAgZm9yIChOU1N0cmluZyAq
c3VwcG9ydGVkVHlwZUlkZW50aWZpZXIgaW4gX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycy5nZXQo
KSkgeworICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpdHlwZSwgKENG
U3RyaW5nUmVmKXN1cHBvcnRlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBZ
RVM7CisgICAgfQorICAgIHJldHVybiBOTzsKK30KKworLSAoTlNTdHJpbmcgKil0eXBlSWRlbnRp
ZmllclRvTG9hZEZvclJlZ2lzdGVyZWRUeXBlSWRlbnRmaWVyczooTlNBcnJheTxOU1N0cmluZyAq
PiAqKXJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMKK3sKKyAgICBOU1N0cmluZyAqaGlnaGVzdEZp
ZGVsaXR5Q29udGVudFR5cGUgPSBuaWw7CisgICAgZm9yIChOU1N0cmluZyAqcmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVyIGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgaWYg
KFtzZWxmIHR5cGVJc0FwcHJvcHJpYXRlRm9yU3VwcG9ydGVkVHlwZXM6cmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyXSkKKyAgICAgICAgICAgIHJldHVybiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXI7
CisKKyAgICAgICAgaWYgKCFoaWdoZXN0RmlkZWxpdHlDb250ZW50VHlwZSAmJiBVVFR5cGVDb25m
b3Jtc1RvKChDRlN0cmluZ1JlZilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIsIGtVVFR5cGVDb250
ZW50KSkKKyAgICAgICAgICAgIGhpZ2hlc3RGaWRlbGl0eUNvbnRlbnRUeXBlID0gcmVnaXN0ZXJl
ZFR5cGVJZGVudGlmaWVyOworICAgIH0KKyAgICByZXR1cm4gaGlnaGVzdEZpZGVsaXR5Q29udGVu
dFR5cGU7Cit9CisKIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmls
ZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spYWN0aW9uCiB7CiAgICAgW3NlbGYg
ZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6YWN0aW9uIHN5bmNocm9u
b3VzVGltZW91dDowXTsKQEAgLTQxOSw0MSArNDM4LDIyIEBAIC0gKHZvaWQpZG9BZnRlckxvYWRp
bmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxv
Y2spCiAgICAgYXV0byBjaGFuZ2VDb3VudEJlZm9yZUxvYWRpbmcgPSBfY2hhbmdlQ291bnQ7CiAg
ICAgYXV0byB0eXBlVG9GaWxlVVJMTWFwcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpbX2l0ZW1Qcm92aWRlcnMgY291bnRdXSk7CiAKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGlmIChbX3ByZWZl
cnJlZFR5cGVJZGVudGlmaWVycyBjb3VudF0gPT0gW19pdGVtUHJvdmlkZXJzIGNvdW50XSkKLSAg
ICAgICAgcHJlZmVycmVkVHlwZUlkZW50aWZpZXJzID0gX3ByZWZlcnJlZFR5cGVJZGVudGlmaWVy
czsKLQogICAgIC8vIEZpcnN0LCBmaWd1cmUgb3V0IHdoaWNoIGl0ZW0gcHJvdmlkZXJzIHdlIHdh
bnQgdG8gdHJ5IGFuZCBsb2FkIGZpbGVzIGZyb20uCi0gICAgYXV0byBpdGVtUHJvdmlkZXJzV2l0
aEZpbGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0
byBjb250ZW50VHlwZUlkZW50aWZpZXJzVG9Mb2FkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byBpbmRpY2VzT2ZJdGVtUHJvdmlkZXJzV2l0aEZpbGVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgW19pdGVtUHJv
dmlkZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOltwcmVmZXJyZWRUeXBlSWRlbnRpZmll
cnMsIGl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMsIGNvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQs
IGluZGljZXNPZkl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMsIHR5cGVUb0ZpbGVVUkxNYXBzXSAoVUlJ
dGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7Ci0g
ICAgICAgIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSA9IG5pbDsKLQot
ICAgICAgICBpZiAocHJlZmVycmVkVHlwZUlkZW50aWZpZXJzICYmIFtpdGVtUHJvdmlkZXIucmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDpbcHJlZmVycmVkVHlwZUlkZW50
aWZpZXJzIG9iamVjdEF0SW5kZXg6aW5kZXhdXSkKLSAgICAgICAgICAgIHR5cGVJZGVudGlmaWVy
T2ZDb250ZW50VG9TYXZlID0gW3ByZWZlcnJlZFR5cGVJZGVudGlmaWVycyBvYmplY3RBdEluZGV4
OmluZGV4XTsKLQotICAgICAgICBpZiAoIXR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlKSB7
Ci0gICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGZpcnN0ICJwdWJsaWMuY29udGVudCIt
Y29uZm9ybWFudCB0eXBlIGlkZW50aWZpZXIuCi0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpp
ZGVudGlmaWVyIGluIGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilpZGVudGlm
aWVyLCBrVVRUeXBlQ29udGVudCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICAgICAgdHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUgPSBpZGVudGlmaWVy
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgIGF1dG8gaXRlbVBy
b3ZpZGVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gdHlwZUlkZW50aWZpZXJzVG9Mb2FkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBpbmRpY2VzT2ZpdGVtUHJvdmlkZXJzVG9Mb2FkID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQ+IHByb3RlY3RlZFNlbGYgPSBzZWxmOworICAgIFtfaXRl
bVByb3ZpZGVycyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbcHJvdGVjdGVkU2VsZiwgaXRl
bVByb3ZpZGVyc1RvTG9hZCwgdHlwZUlkZW50aWZpZXJzVG9Mb2FkLCBpbmRpY2VzT2ZpdGVtUHJv
dmlkZXJzVG9Mb2FkLCB0eXBlVG9GaWxlVVJMTWFwc10gKFVJSXRlbVByb3ZpZGVyICppdGVtUHJv
dmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgeworICAgICAgICBOU1N0cmluZyAqdHlw
ZUlkZW50aWZpZXJUb0xvYWQgPSBbcHJvdGVjdGVkU2VsZiB0eXBlSWRlbnRpZmllclRvTG9hZEZv
clJlZ2lzdGVyZWRUeXBlSWRlbnRmaWVyczppdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVyc107CisgICAgICAgIGlmICh0eXBlSWRlbnRpZmllclRvTG9hZCkgeworICAgICAgICAg
ICAgW2l0ZW1Qcm92aWRlcnNUb0xvYWQgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlcl07CisgICAgICAg
ICAgICBbdHlwZUlkZW50aWZpZXJzVG9Mb2FkIGFkZE9iamVjdDp0eXBlSWRlbnRpZmllclRvTG9h
ZF07CisgICAgICAgICAgICBbaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCBhZGRPYmplY3Q6
QChpbmRleCldOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGVJZGVudGlmaWVyT2ZDb250
ZW50VG9TYXZlKSB7Ci0gICAgICAgICAgICBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmpl
Y3Q6aXRlbVByb3ZpZGVyXTsKLSAgICAgICAgICAgIFtjb250ZW50VHlwZUlkZW50aWZpZXJzVG9M
b2FkIGFkZE9iamVjdDp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZV07Ci0gICAgICAgICAg
ICBbaW5kaWNlc09mSXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmplY3Q6QChpbmRleCldOwot
ICAgICAgICB9Ci0KICAgICAgICAgW3R5cGVUb0ZpbGVVUkxNYXBzIGFkZE9iamVjdDpAeyB9XTsK
ICAgICB9XTsKIAotICAgIGlmICghW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgY291bnRdKSB7Cisg
ICAgaWYgKCFbaXRlbVByb3ZpZGVyc1RvTG9hZCBjb3VudF0pIHsKICAgICAgICAgYWN0aW9uKEBb
IF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDYxLDEwICs0NjEsMTAgQEAgLSAodm9p
ZClkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3Zp
ZGVyRmlsZUxvYWRCbG9jaykKICAgICBhdXRvIHNldEZpbGVVUkxzTG9jayA9IGFkb3B0TlMoW1tO
U0xvY2sgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHN5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91
cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwogICAgIGF1dG8gZmls
ZUxvYWRpbmdHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwot
ICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNXaXRo
RmlsZXMgY291bnRdOyArK2luZGV4KSB7Ci0gICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRl
cj4gaXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDpp
bmRleF07Ci0gICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdHlwZUlkZW50aWZpZXIgPSBbY29u
dGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKLSAgICAgICAg
TlNVSW50ZWdlciBpbmRleEluSXRlbVByb3ZpZGVyQXJyYXkgPSBbW2luZGljZXNPZkl0ZW1Qcm92
aWRlcnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDppbmRleF0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
OworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNU
b0xvYWQgY291bnRdOyArK2luZGV4KSB7CisgICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRl
cj4gaXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92aWRlcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRl
eF07CisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdHlwZUlkZW50aWZpZXIgPSBbdHlwZUlk
ZW50aWZpZXJzVG9Mb2FkIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgICAgICBOU1VJbnRlZ2Vy
IGluZGV4SW5JdGVtUHJvdmlkZXJBcnJheSA9IFtbaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9h
ZCBvYmplY3RBdEluZGV4OmluZGV4XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CiAgICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIgc3VnZ2VzdGVk
TmFtZV07CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKGZpbGVMb2FkaW5nR3JvdXAuZ2V0
KCkpOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihzeW5jaHJvbm91c0ZpbGVMb2FkaW5n
R3JvdXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1t
CmluZGV4IGE0OWUxMzRmNWVhNjQ4NmE0YjFhMDRiZDNhYTNiODgxZWE0ZjEzYzUuLjIwZDEyOWQw
NjdmYzc4NGZmNWQxZDNmZWZhZGU0ODg5NDgwZmVlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI5Miw0MyArMjkyLDYgQEAgU3RyaW5nIERyYWdE
YXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0
CiAgICAgcmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLSNpZiBFTkFCTEUoREFUQV9JTlRF
UkFDVElPTikKLQotc3RhdGljIGJvb2wgdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBl
cyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWRUeXBl
cykKLXsKLSAgICBDRlN0cmluZ1JlZiBjZlR5cGUgPSB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuYXV0
b3JlbGVhc2UoKTsKLSAgICBmb3IgKGF1dG8gc3VwcG9ydGVkVHlwZSA6IHN1cHBvcnRlZFR5cGVz
KSB7Ci0gICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNmVHlwZSwgc3VwcG9ydGVkVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRHJhZ0RhdGE6OnVwZGF0ZVByZWZlcnJlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpIGNvbnN0
Ci17Ci0gICAgVmVjdG9yPFN0cmluZz4gYmVzdFR5cGVJZGVudGlmaWVyczsKLSAgICBhdXRvJiBz
dHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7Ci0g
ICAgdWludDY0X3QgaXRlbUNvdW50ID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgZm9yICh1aW50NjRfdCBpdGVtSW5kZXggPSAwOyBpdGVt
SW5kZXggPCBpdGVtQ291bnQ7ICsraXRlbUluZGV4KSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVJZGVudGlmaWVyczsKLSAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9y
SXRlbUF0SW5kZXgodHlwZUlkZW50aWZpZXJzLCBpdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUp
OwotCi0gICAgICAgIFN0cmluZyBiZXN0VHlwZUlkZW50aWZpZXIgPSBlbXB0eVN0cmluZygpOwot
ICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlSWRlbnRpZmllcnMpIHsKLSAgICAgICAgICAg
IGlmICghdHlwZUlzQXBwcm9wcmlhdGVGb3JTdXBwb3J0ZWRUeXBlcyh0eXBlLCBzdXBwb3J0ZWRU
eXBlcykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGJlc3RUeXBl
SWRlbnRpZmllciA9IHR5cGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBiZXN0VHlwZUlkZW50aWZpZXJzLmFwcGVuZChiZXN0VHlwZUlkZW50aWZpZXIpOwotICAgIH0K
LQotICAgIHN0cmF0ZWd5LnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhiZXN0VHlwZUlk
ZW50aWZpZXJzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDVlOTIzOGE5NzA2ZTE3ZjM3N2QxMGNlYTZmNmVjNWY1ZmQyMzdkY2IuLmFiMjY0
YTZkMjFjZjYzYTlkZmFmZThlZjk3OTZjYmFkZDQwNWVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
KFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlUHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
aW5kZXggZmUzYjllYmM1ZjU1NmE4NjVkZjhiNDY4NDdlMmFkMDVmZmExNzQ0NS4uNWYwZGJlZmUw
YzI2MTg2ZDBiMDNkZGNiZjk3NjZmYzI4NWY5Nzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAt
MjE2LDkgKzIxNiw5IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0
ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CisgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRl
bnRpZmllcnMpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgK
aW5kZXggOWRkMWE2NmZlMWQwY2FhNTZlZjE5MzA0MWQ0MmFlM2JkYjNmOWY2ZS4uMDc5ODJjY2Fl
ZGEwN2YyMzZmM2YwM2E4OTgxNjMzYTk4NDc3MTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAKIEBjbGFzcyBVSURyYWdJdGVtOwogQGNsYXNzIFVJVGFyZ2V0ZWREcmFnUHJl
dmlldzsKIEBwcm90b2NvbCBVSURyYWdTZXNzaW9uOworQHByb3RvY29sIFVJRHJvcFNlc3Npb247
CiAjZW5kaWYKIAogQHByb3RvY29sIFdLVUlEZWxlZ2F0ZVByaXZhdGUgPFdLVUlEZWxlZ2F0ZT4K
QEAgLTExMiw2ICsxMTMsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogI2lmIFRBUkdFVF9PU19J
UEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCiAtIChV
SVRhcmdldGVkRHJhZ1ByZXZpZXcgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2
aWV3Rm9yTGlmdGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHNlc3Npb246KGlkIDxVSURyYWdT
ZXNzaW9uPilzZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHByZXZp
ZXdGb3JDYW5jZWxsaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFy
Z2V0ZWREcmFnUHJldmlldyAqKWRlZmF1bHRQcmV2aWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKKy0gKE5TQXJyYXk8VUlEcmFnSXRlbSAqPiAqKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtRHJvcFdpdGhTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lv
bj4pc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAjZW5kaWYKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2hhbmdlU2FmZUFyZWFTaG91
bGRBZmZlY3RPYnNjdXJlZEluc2V0czooQk9PTClzYWZlQXJlYVNob3VsZEFmZmVjdE9ic2N1cmVk
SW5zZXRzIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KaW5kZXggOWZmMDU2ZmJjOTVkMGU4NWQxMDIzZjUyMGQ2ODRkNzVkM2Y5YjE0Zi4u
NTFjYTE2YjU3NzFiYmIxMTgyNGViY2JjYWM0MWZiNTU0N2M4MzAzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtMTk4LDkgKzE5OCw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRGaWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkCiAgICAgZmls
ZW5hbWVzID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5maWxlbmFtZXNGb3JE
YXRhSW50ZXJhY3Rpb24oKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVBy
ZWZlcnJlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhp
ZGVudGlmaWVycyk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCA5YmI2
ZDU0Y2EyZDFmY2M4N2NjMmNkOWZiMTU5YmI0NDUyYmMwN2ZkLi44ZDc2ODkwYjMwMzhkODdhMGJi
NzAyMTAwZThmODY2Y2QyNjE3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGl0ZW1zQ291bnQpOwog
ICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwotICAgIHZvaWQgdXBkYXRl
UHJlZmVycmVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0
ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1
aW50NjRfdCYgbnVtYmVyT2ZGaWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0MDEyYWQ1YTNiMTZl
NWNiYzFjYzZhNDQzMzIyMmFiNjk4MzFjZjk3Li5jMzg4MjkzZGQwODdkOGU5ODlkYjdlODU5YjMz
ZjBjN2I3OGQ0MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWlu
dDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUp
CiAgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
dWludDY0X3QgaXRlbXNDb3VudCkKICAgICBHZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24o
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKQotICAg
IFVwZGF0ZVByZWZlcnJlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVy
cywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQorICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQog
ICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDFhYTJkOGJl
ZTBkYjE3YzFmMjQ1NTI3ZDM5YTk5M2I5ODcyMjIwOTEuLjgyMTQwODI4MmJkMGQ2NDU2OWU4M2Vk
ZTI5YTQ3YzlkNzAyZDE4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTMyNCw5ICszMjQsOSBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RmlsZW5h
bWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbgogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldEZpbGVuYW1l
c0ZvckRhdGFJbnRlcmFjdGlvbjo6UmVwbHkoZmlsZW5hbWVzKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVQcmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVQ
cmVmZXJyZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9CiAKIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IDcyZGNmOWZmNDZlNzNkYzM2ZmMzNGViYzc4ZDE2Y2Q2ZThkZDVlM2IuLmY3OGE3MzEx
ZDQ0MzQyYWIyOWUwOGM1NGE2NmE1OWFjYTBkMzNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRh
dGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVByZWZlcnJlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlG
b3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDJkN2MwYjRhYTcxM2RmZWZiNGNhYzhiZDc1M2YwNjBjOTE5YzhmZjMuLjQxZTAxMTA5MWU2
ZWFmNDZmYWNjYjgzMDUwMTViZTYyZDU3MzUxM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wNi0xNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBVc2luZyAtW1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIHRvIHN3YXAgb3V0IGl0
ZW0gcHJvdmlkZXJzIGJlZm9yZSBhIGRyb3AgYnJlYWtzIGl0ZW0gcHJvdmlkZXIgbG9hZGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMzM4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjc3NzcyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgbmV3IHVuaXQgdGVzdHMgdG8gZW5zdXJlIHRoYXQg
LV93ZWJWaWV3OndpbGxQZXJmb3JtRHJvcFdpdGhTZXNzaW9uOiBjYW4gYmUgdXNlZCB0byBmaWx0
ZXIgb3V0IGRyYWcgaXRlbXMKKyAgICAgICAgdXNlZCBieSBXZWJLaXQgd2hlbiBoYW5kbGluZyBh
IGRyb3AuIFRoZXNlIHRlc3RzIGVuc3VyZSB0aGF0IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
aXMgc3RpbGwgYWJsZSB0byBoYW5kbGUKKyAgICAgICAgdGhlc2UgcmVtYWluaW5nIGl0ZW1zIG9u
IGRyb3AuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rp
b25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKworICAgICAgICBB
ZGQgLW92ZXJyaWRlUGVyZm9ybURyb3BCbG9jaywgd2hpY2ggY2FuIGJlIHNldCB0byBwcm92aWRl
IGN1c3RvbSBoYW5kbGluZyBvZiBkcm9wcGVkIGl0ZW1zLgorCisgICAgICAgICgtW0RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBfd2ViVmlldzp3aWxsUGVyZm9ybURyb3BXaXRoU2Vzc2lvbjpdKToK
KwogMjAxNy0wNi0xNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl0gQ3Jhc2ggaW4gYWNjZXNzaWJpbGl0eSBsYXlvdXQgdGVzdC4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0K
aW5kZXggYjQxZmQ5OTIzOTI0M2EyNzA3NzVlMTBhMTY1NDljZmUyYjg1MGJhNy4uMzk2MTliZjJi
YTNhYjI3OTIzM2FhZDBjY2I2MzA2YWNjNTUwZDFkNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTY4Niw2ICs2
ODYsNjQgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VGaWxlVVJM
KQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGRcbmZpbGU6Ly8vc29tZS9maWxlL3Ro
YXQvaXMvbm90L3JlYWwiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5pbm5lclRleHQiXSk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVz
dHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9hZCkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CisKKyAgICBhdXRvIHNpbXVsYXRlZElt
YWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJ
Y29uSW1hZ2UoKSwgMC41KTsKKyAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBl
SlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworCisgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVBy
b3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgTlNE
YXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBbc2ltdWxhdGVkSFRN
TEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVy
OihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmZpcnN0SFRNTERhdGFdOworCisgICAg
YXV0byBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0T3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrOl5OU0Fy
cmF5PFVJRHJhZ0l0ZW0gKj4gKihpZCA8VUlEcm9wU2Vzc2lvbj4gc2Vzc2lvbikKKyAgICB7Cisg
ICAgICAgIEVYUEVDVF9FUSgyVUwsIHNlc3Npb24uaXRlbXMuY291bnQpOworICAgICAgICBVSURy
YWdJdGVtICpmaXJzdEl0ZW0gPSBzZXNzaW9uLml0ZW1zWzBdOworICAgICAgICBVSURyYWdJdGVt
ICpzZWNvbmRJdGVtID0gc2Vzc2lvbi5pdGVtc1sxXTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Zp
cnN0SXRlbS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyBpc0VxdWFsOkBb
IChOU1N0cmluZyAqKWtVVFR5cGVKUEVHIF1dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3NlY29u
ZEl0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgaXNFcXVhbDpAWyAo
TlNTdHJpbmcgKilrVVRUeXBlSFRNTCBdXSk7CisgICAgICAgIHJldHVybiBAWyBzZWNvbmRJdGVt
IF07CisgICAgfV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0
ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIuZ2V0KCksIHNpbXVsYXRl
ZEhUTUxJdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgMzAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCld
OworCisgICAgTlNTdHJpbmcgKm91dHB1dFZhbHVlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4
dC9odG1sIiwgb3V0cHV0VmFsdWUuVVRGOFN0cmluZyk7Cit9CisKK1RFU1QoRGF0YUludGVyYWN0
aW9uVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wSW5zZXJ0VVJMKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZSJdOworICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1v
dmVBbGxSYW5nZXMoKSJdOworCisgICAgYXV0byBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0T3ZlcnJp
ZGVQZXJmb3JtRHJvcEJsb2NrOl5OU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKihpZCA8VUlEcm9wU2Vz
c2lvbj4gc2Vzc2lvbikKKyAgICB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PFVJRHJhZ0l0ZW0g
Kj4gKmFsbG93ZWRJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAgIGZvciAo
VUlEcmFnSXRlbSAqaXRlbSBpbiBzZXNzaW9uLml0ZW1zKSB7CisgICAgICAgICAgICBpZiAoW2l0
ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmplY3Q6
KE5TU3RyaW5nICopa1VUVHlwZVVSTF0pCisgICAgICAgICAgICAgICAgW2FsbG93ZWRJdGVtcyBh
ZGRPYmplY3Q6aXRlbV07CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKDFVTCwgYWxsb3dl
ZEl0ZW1zLmNvdW50KTsKKyAgICAgICAgcmV0dXJuIGFsbG93ZWRJdGVtczsKKyAgICB9XTsKKwor
ICAgIGF1dG8gZmlyc3RJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbZmlyc3RJdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6QCJUaGlz
IGlzIGEgc3RyaW5nLiIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0
aW9uc1Zpc2liaWxpdHlBbGxdOworICAgIGF1dG8gc2Vjb25kSXRlbVByb3ZpZGVyID0gYWRvcHRO
UyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29uZEl0ZW1Qcm92aWRl
ciByZWdpc3Rlck9iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9y
Zy8iXSB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJp
bGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgZmlyc3RJdGVtUHJvdmlkZXIuZ2V0KCksIHNlY29uZEl0ZW1Qcm92aWRlci5n
ZXQoKSBdXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1h
a2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CisKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoImh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworfQorCiBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBPdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCmluZGV4
IDY5ZTRmOTYwYzgxNTlhM2U3NWU3MDY2ZmI2MTA4ZTZjOTZhYTQ0ZGIuLjE4MDhhYTAwZmU1Nzg5
NjI5OGRmMDJhNDUwZTkxMTUyNTJjNTk5YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCkBAIC03Niw2ICs3Niw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiBAcHJvcGVydHkg
KG5vbmF0b21pYykgQk9PTCBzaG91bGRFbnN1cmVVSUFwcGxpY2F0aW9uOwogQHByb3BlcnR5IChu
b25hdG9taWMpIEJsb2NrUHRyPEJPT0woX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKik+IHNob3dD
dXN0b21BY3Rpb25TaGVldEJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5T
QXJyYXkgKihVSUl0ZW1Qcm92aWRlciAqLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqKT4gY29u
dmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxO
U0FycmF5ICooaWQgPFVJRHJvcFNlc3Npb24+KT4gb3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrOwog
QHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBcnJheSAqZXh0ZXJuYWxJdGVtUHJvdmlk
ZXJzOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5TVUludGVnZXIoTlNVSW50ZWdl
ciwgaWQpPiBvdmVycmlkZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbkJsb2NrOwogQHByb3BlcnR5
IChub25hdG9taWMpIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNBcnJheSAqKT4gZGF0YUludGVyYWN0
aW9uT3BlcmF0aW9uQ29tcGxldGlvbkJsb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCmluZGV4IDgzMDE0YTgwMTg4Y2NlNWJj
OTdhMGI5N2NmNTViMjlhYzI2MjJlNWQuLjcwOTBmN2I4OTk0OGRjN2I2ZjE2M2I2YmY0Njg0ZjFi
NTYzOTAwYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFj
dGlvblNpbXVsYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IubW0KQEAgLTMyNiw2ICszMjYsMTEgQEAgLSAoQk9PTClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OihfV0tBY3RpdmF0
ZWRFbGUKICAgICByZXR1cm4gc2VsZi5zaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jayhlbGVtZW50
KTsKIH0KIAorLSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgd2lsbFBlcmZvcm1Ecm9wV2l0aFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilz
ZXNzaW9uCit7CisgICAgcmV0dXJuIHNlbGYub3ZlcnJpZGVQZXJmb3JtRHJvcEJsb2NrID8gc2Vs
Zi5vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2soc2Vzc2lvbikgOiBzZXNzaW9uLml0ZW1zOworfQor
CiAjcHJhZ21hIG1hcmsgLSBfV0tJbnB1dERlbGVnYXRlCiAKIC0gKEJPT0wpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZm9jdXNTaG91bGRTdGFydElucHV0U2Vzc2lvbjooaWQgPF9XS0Zv
Y3VzZWRFbGVtZW50SW5mbz4paW5mbwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>