<?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>215647</bug_id>
          
          <creation_ts>2020-08-19 08:31:54 -0700</creation_ts>
          <short_desc>Programmatic selection of text in a text field causes the highlight overlay to spill out</short_desc>
          <delta_ts>2020-08-23 18:52:02 -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>HTML Editing</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://codepen.io/ShaneHudson/pen/bGpeVPG</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1681339</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-08-19 08:31:54 -0700</bug_when>
    <thetext>Testcase at &lt;https://codepen.io/ShaneHudson/pen/bGpeVPG&gt; shows an issue where the selection is not clipped to the bounds of the text input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681340</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-19 08:32:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/67404979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681341</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-08-19 08:32:25 -0700</bug_when>
    <thetext>Noted at https://twitter.com/ShaneHudson/status/1296078597652914177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681346</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-19 08:35:32 -0700</bug_when>
    <thetext>This is likely because -[WKContentView _selectionClipRect] returns the null rect, since we&apos;re not showing any input view for a focused element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682071</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-21 16:49:11 -0700</bug_when>
    <thetext>(Note: one way to work around this is to programmatically focus() the readonly input before calling select() on it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682258</commentid>
    <comment_count>5</comment_count>
      <attachid>407080</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-23 13:31:09 -0700</bug_when>
    <thetext>Created attachment 407080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682261</commentid>
    <comment_count>6</comment_count>
      <attachid>407080</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-23 13:46:58 -0700</bug_when>
    <thetext>Comment on attachment 407080
Patch

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

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:796
&gt; +    auto selectionClipRect = [(UIView &lt;UITextInputPrivate&gt; *)contentView _selectionClipRect];

Casting to a type with a protocol without checking if the view implements the protocol seems peculiar. Normally we’d call respondsToProtocol in a case like this. Alternatively we could assert that and comment why we know it’s true. Or could leave it just like this if you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682265</commentid>
    <comment_count>7</comment_count>
      <attachid>407080</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-23 14:49:36 -0700</bug_when>
    <thetext>Comment on attachment 407080
Patch

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

Thanks for the review!

&gt;&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:796
&gt;&gt; +    auto selectionClipRect = [(UIView &lt;UITextInputPrivate&gt; *)contentView _selectionClipRect];
&gt; 
&gt; Casting to a type with a protocol without checking if the view implements the protocol seems peculiar. Normally we’d call respondsToProtocol in a case like this. Alternatively we could assert that and comment why we know it’s true. Or could leave it just like this if you prefer.

Sounds good — I&apos;ll add an assertion and comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682268</commentid>
    <comment_count>8</comment_count>
      <attachid>407082</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-08-23 15:19:59 -0700</bug_when>
    <thetext>Created attachment 407082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682275</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-23 18:52:01 -0700</bug_when>
    <thetext>Committed r266051: &lt;https://trac.webkit.org/changeset/266051&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407082.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407080</attachid>
            <date>2020-08-23 13:31:09 -0700</date>
            <delta_ts>2020-08-23 13:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215647-20200823133108.patch</filename>
            <type>text/plain</type>
            <size>30243</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjllN2U5NmQxY2ZhM2I2
NGZhNjNmODM2ZDcyMWZhYWY3ZmMwNDIzMy4uOTk3OTRjNmQ4MjU3MTg1MTZkMTAzZTBjMzJhMTUz
ZDVkMzk0MWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByb2dyYW1tYXRp
YyBzZWxlY3Rpb24gb2YgdGV4dCBpbiBhIHRleHQgZmllbGQgY2F1c2VzIHRoZSBoaWdobGlnaHQg
b3ZlcmxheSB0byBzcGlsbCBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTY0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjc0MDQ5Nzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYktp
dCBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oOiBFeHBvcnQgYSBoZWxwZXIgZnVuY3Rpb24uCisKIDIwMjAtMDgt
MjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNvbWUgRklYTUVzIGluIHRoZSBFdmVudEhhbmRsZXIgd2hlZWwgZXZlbnQgaGFuZGxpbmcgY29k
ZSBmb3IgYWxsIHRoZSB0aGluZ3MgdGhhdCBhcmUgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjgyM2QwMWYw
M2Q1NDFhM2M1YmJjZjdmYzdkMjJlYjlkYzBiNmM1OS4uN2MxZTk4NzE2ZGQzZmEyY2NkN2QwNWRh
NTQwZTQxMTA3MTM5YzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAyMC0wOC0yMyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9ncmFt
bWF0aWMgc2VsZWN0aW9uIG9mIHRleHQgaW4gYSB0ZXh0IGZpZWxkIGNhdXNlcyB0aGUgaGlnaGxp
Z2h0IG92ZXJsYXkgdG8gc3BpbGwgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU2NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NDA0OTc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVJS2l0
IGNvbnN1bHRzIHRoZSBTUEkgbWV0aG9kIGAtX3NlbGVjdGlvbkNsaXBSZWN0YCBvbiBXS0NvbnRl
bnRWaWV3IHRvIGRldGVybWluZSB0aGUgbWF4aW11bSBib3VuZHMgaW4gd2hpY2ggaXQKKyAgICAg
ICAgaXMgYWxsb3dlZCB0byBzaG93IHRleHQgc2VsZWN0aW9uIFVJIChpLmUuIHRoZSB0ZXh0IGNh
cmV0IHZpZXcsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3MsIGFuZCBzZWxlY3Rpb24KKyAgICAg
ICAgZ3JhYmJlcnMpLiBOb3JtYWxseSwgd2hlbiBjb250ZW50RWRpdGFibGUgZWxlbWVudHMgYW5k
IGVkaXRhYmxlIHRleHQgZm9ybSBjb250cm9scyBhcmUgZm9jdXNlZCwgd2UgcGx1bWIgdGhlCisg
ICAgICAgIGJvdW5kcyBvZiB0aGUgZm9jdXNlZCBlbGVtZW50IHRvIHRoZSBVSSBwcm9jZXNzIHZp
YSBgZm9jdXNlZEVsZW1lbnRSZWN0YCBpbiBlZGl0b3Igc3RhdGUncyBwb3N0IGxheW91dCBkYXRh
LgorICAgICAgICBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBzZWxlY3Rpb24gaXMgaW5zaWRl
IGEgcmVhZG9ubHkgdGV4dCBmaWVsZCB0aGF0IGlzICpub3QqIGZvY3VzZWQ7IHRoaXMgY2F1c2Vz
IHVzIHRvCisgICAgICAgIHJldHVybiBgQ0dSZWN0TnVsbGAgZnJvbSBgLV9zZWxlY3Rpb25DbGlw
UmVjdGAsIHdoaWNoIG1lYW5zIHRoYXQgVUlLaXQgc2VsZWN0aW9uIFVJIGlzIG5vdCBjbGlwcGVk
IGF0IGFsbCBhbmQKKyAgICAgICAgaW5zdGVhZCBvdmVyZmxvd3MgdGhlIGJvdW5kcyBvZiB0aGUg
aW5wdXQgZWxlbWVudC4KKworICAgICAgICBUbyBmaXggdGhpcywgcmVhcnJhbmdlIHNvbWUgbG9n
aWMgaW4gYFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGVgIGluIGBXZWJQYWdlSU9TLm1t
YCBzdWNoIHRoYXQgd2UgY29tcHV0ZQorICAgICAgICBhbmQgc2VuZCB0aGUgc2VsZWN0aW9uIGNs
aXBwaW5nIHJlY3QgaWYgdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgYSB0ZXh0IGZvcm0gY29udHJv
bCwgZXZlbiBpZiBpdCBpcyBub3QgdGhlCisgICAgICAgIGZvY3VzZWQgZWxlbWVudC4gSW4gZG9p
bmcgdGhpcywgd2UgYWxzbyByZW5hbWUgc29tZSBjb25mdXNpbmdseS1uYW1lZCBtZW1iZXJzIGlu
IGBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGFgCisgICAgICAgIChzZWUgYmVsb3cgZm9yIG1v
cmUgZGV0YWlsKS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0
LWFsbC1pbi1yZWFkb25seS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy5odG1sCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisKKyAgICAgICAgQWRkIGEgZGVjbGFyYXRp
b24gZm9yIGAtX3NlbGVjdGlvbkNsaXBSZWN0YC4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBT
aGFyZWQvRWRpdG9yU3RhdGUuaDoKKworICAgICAgICBTcGxpdCB0aGUgZXhpc3RpbmcgcmVjdCBt
ZW1iZXIgYGZvY3VzZWRFbGVtZW50UmVjdGAgaW50byB0d286IGBzZWxlY3Rpb25DbGlwUmVjdGAg
b24gaU9TLCBhbmQKKyAgICAgICAgYHNlbGVjdGlvbkJvdW5kaW5nUmVjdGAgb24gbWFjT1MuIFBy
ZXZpb3VzbHksIGBmb2N1c2VkRWxlbWVudFJlY3RgIHdhcyBzZXQgdG8gdGhlIGZvY3VzZWQgZWxl
bWVudCdzIGJvdW5kaW5nCisgICAgICAgIHJlY3Qgb24gaU9TIChhcyBleHBlY3RlZCksIGJ1dCBv
biBtYWNPUywgd2Ugc2V0IHRvIHRoZSBib3VuZHMgb2YgdGhlIHJhbmdlZCBvciBjYXJldCBzZWxl
Y3Rpb247IHdlIHByb2NlZWQgdG8KKyAgICAgICAgdXNlIHRoaXMgcmVjdCB0byBtZWFuIHRoZSBi
b3VuZHMgb2YgdGhlIHNlbGVjdGlvbiBhbnl3YXlzIGluIG1hY09TLXNwZWNpZmljIGNvZGUsIHNv
IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8ganVzdAorICAgICAgICBtb3ZlIHRoaXMgaW50byB0aGUg
bWFjT1Mtc3BlY2lmaWMgc2VjdGlvbi4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGFmdGVyIHRo
ZSBiZWxvdyBjaGFuZ2UgaW4gV2ViUGFnZUlPUywgYGZvY3VzZWRFbGVtZW50UmVjdGAgaXMgbm8g
bG9uZ2VyIHNwZWNpZmljIHRvIHRoZSBmb2N1c2VkCisgICAgICAgIGVsZW1lbnQsIHNvIHJlbmFt
ZSBpdCBpbnN0ZWFkIHRvIGBzZWxlY3Rpb25DbGlwUmVjdGAgaW5zdGVhZC4gSW4gYFdLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbWAsIHRoaXMgcmVjdCBpcworICAgICAgICBlZmZlY3RpdmVseSBv
bmx5IHVzZWQgaW4gdHdvIHdheXM6IGFzIHRoZSBzZWxlY3Rpb24gY2xpcCByZWN0IGZvciBVSUtp
dCwgYW5kIHRvIGRldGVybWluZSBpZiB0aGUgc2VsZWN0aW9uIHdvdWxkCisgICAgICAgIGJlIGNv
bXBsZXRlbHkgY2xpcHBlZCBhbnl3YXlzIChpbiB3aGljaCBjYXNlIHdlIHN1cHByZXNzIFVJS2l0
IHRleHQgaW50ZXJhY3Rpb25zKSwgc28gYHNlbGVjdGlvbkNsaXBSZWN0YCBpcyBhCisgICAgICAg
IG5hbWUgdGhhdCBpcyBzdWl0YWJsZSBmb3IgYm90aCBwdXJwb3Nlcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld1Rlc3RpbmdNYWMubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfY2FuZGlkYXRlUmVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKworICAgICAgICBSZW5hbWUgYGZvY3VzZWRFbGVtZW50UmVjdGAgdG8gYHNlbGVj
dGlvbkJvdW5kaW5nUmVjdGAgb24gbWFjT1MuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhhbmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorCisgICAgICAgIFJlbmFtZSBgZm9jdXNlZEVs
ZW1lbnRSZWN0YCB0byBgc2VsZWN0aW9uQ2xpcFJlY3RgIG9uIGlPUy4KKworICAgICAgICAoV2Vi
S2l0OjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0aW9uQ2xpcFJlY3RdKToKKworICAgICAgICBD
aGFuZ2UgdGhpcyB0byBub3QgcmVxdWlyZSBhIGZvY3VzZWQgZWxlbWVudCB3aGVuIHJldHVybmlu
ZyB0aGUgc2VsZWN0aW9uIGNsaXAgcmVjdCwgYW5kIGluc3RlYWQgcmV0dXJuIHRoZQorICAgICAg
ICBlZGl0b3Igc3RhdGUncyBzZWxlY3Rpb24gY2xpcCByZWN0IGFzIGxvbmcgYXMgaXQgaXMgbm90
IGVtcHR5LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZVNlbGVjdGlvbkFzc2lz
dGFudFN1cHByZXNzaW9uU3RhdGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgY29kZSB0byBjb21wdXRl
IGFuZCBzZW5kIHNlbGVjdGlvbkNsaXBSZWN0IGFzIGxvbmcgYXMgdGhlIHNlbGVjdGlvbiBpcyBp
bnNpZGUgYSBmb3JtIGNvbnRyb2wgb3IKKyAgICAgICAgZWRpdGluZyBob3N0IChub3QganVzdCB3
aGVuIHRoZXJlIGlzIGEgZm9jdXNlZCBlbGVtZW50KS4gQWxzbyBsZWF2ZSBhIGRyaXZlLWJ5IEZJ
WE1FIGFib3V0IHVzaW5nIHRoZSBmb2N1c2VkCisgICAgICAgIGVsZW1lbnQgKGluc3RlYWQgb2Yg
dGhlIHNlbGVjdGlvbiBjb250YWluZXIgbm9kZSkgd2hlbiBjb21wdXRpbmcgdGhlIGNhcmV0IGNv
bG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToK
KwogMjAyMC0wOC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIFVuYWJsZSB0byBjb3B5IHRleHQgZnJvbSB0aGUgZnVuY3Rpb24gYnJv
d3NlciBwYW5lbCBpbiBOdW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYWQzMWExZjY2MGM2OWUwMGVjMzMzYzExNzBiMzQ0
MThkN2Q4YmNjMi4uMDg1NjUzNjlkMTQzZmY3YTk5NDA0Y2E2YTkwZTA1M2JlZjVmZDZkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApA
QCAtMTczLDcgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWluTGVuZ3RoIHsgLTEgfTsK
IH07CiAKLUhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRy
b2woY29uc3QgUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtp
dFNQSS5oCmluZGV4IGJmNDI3MDhjZGE5ODNlNDcwZWNlMTFiNmQxMTc5ZjBlMGZkY2FlMWUuLjg5
NjAwOWQwYmIwY2IxOWUyODZjNzYyYTNhYWFiYzE3YmVhNDRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC00ODcsNiArNDg3LDcgQEAgdHlwZWRlZiBl
bnVtIHsKIC0gKHZvaWQpbW9kaWZpZXJGbGFnc0RpZENoYW5nZUZyb206KFVJS2V5TW9kaWZpZXJG
bGFncylvbGRGbGFncyB0bzooVUlLZXlNb2RpZmllckZsYWdzKW5ld0ZsYWdzOwogI2VuZGlmCiBA
cHJvcGVydHkgKG5vbmF0b21pYykgVUlUZXh0R3JhbnVsYXJpdHkgc2VsZWN0aW9uR3JhbnVsYXJp
dHk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBfc2VsZWN0aW9uQ2xp
cFJlY3Q7CiBAcmVxdWlyZWQKIC0gKEJPT0wpaGFzQ29udGVudDsKIC0gKEJPT0wpaGFzU2VsZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IDE0YjA4ZDgwMTA2ZmUx
NzFiMTBkMDY2ZDJiZWU2ZTQ4NThlOGI2NzEuLjY2NTk4NTdkMzEzYWE3M2I2OTFhMGNmNzM2ZmU0
MGVlOWE3Nzg2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKQEAgLTk1LDcg
Kzk1LDYgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0Owog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBmb2N1c2VkRWxlbWVu
dFJlY3Q7CiAgICAgZW5jb2RlciA8PCBzZWxlY3RlZFRleHRMZW5ndGg7CiAgICAgZW5jb2RlciA8
PCB0ZXh0QWxpZ25tZW50OwogICAgIGVuY29kZXIgPDwgdGV4dENvbG9yOwpAQCAtMTAzLDYgKzEw
Miw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYmFzZVdyaXRpbmdEaXJlY3Rpb247
CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGVuY29kZXIgPDwgc2VsZWN0
aW9uQ2xpcFJlY3Q7CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdEVuZDsKICAgICBlbmNvZGVy
IDw8IHNlbGVjdGlvblJlY3RzOwogICAgIGVuY29kZXIgPDwgbWFya2VkVGV4dFJlY3RzOwpAQCAt
MTI1LDYgKzEyNSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uRW5k
SXNBdFBhcmFncmFwaEJvdW5kYXJ5OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwogICAgIGVuY29kZXIgPDwgY2FuZGlkYXRl
UmVxdWVzdFN0YXJ0UG9zaXRpb247CiAgICAgZW5jb2RlciA8PCBwYXJhZ3JhcGhDb250ZXh0Rm9y
Q2FuZGlkYXRlUmVxdWVzdDsKICAgICBlbmNvZGVyIDw8IHN0cmluZ0ZvckNhbmRpZGF0ZVJlcXVl
c3Q7CkBAIC0xNDksOCArMTUwLDYgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXREYXRhJgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5mb2N1c2VkRWxlbWVudFJlY3QpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRl
eHRBbGlnbm1lbnQpKQpAQCAtMTYzLDYgKzE2Miw4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RM
YXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25DbGlwUmVjdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJl
Y3RBdEVuZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5zZWxlY3Rpb25SZWN0cykpCkBAIC0yMDUsNiArMjA2LDkgQEAgYm9vbCBFZGl0b3JT
dGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RM
YXlvdXREYXRhJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRpbmdSZWN0
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2FuZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTI3Myw4ICsyNzcsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiY2FyZXRSZWN0QXRTdGFydCIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2Fy
ZXRSZWN0QXRTdGFydCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoZWRp
dG9yU3RhdGUucG9zdExheW91dERhdGEoKS5mb2N1c2VkRWxlbWVudFJlY3QgIT0gSW50UmVjdCgp
KQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZvY3VzZWRFbGVtZW50UmVjdCIsIGVkaXRvclN0
YXRlLnBvc3RMYXlvdXREYXRhKCkuZm9jdXNlZEVsZW1lbnRSZWN0KTsKICAgICBpZiAoZWRpdG9y
U3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3RlZFRleHRMZW5ndGgpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgic2VsZWN0ZWRUZXh0TGVuZ3RoIiwgZWRpdG9yU3RhdGUucG9zdExheW91dERh
dGEoKS5zZWxlY3RlZFRleHRMZW5ndGgpOwogICAgIGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0
RGF0YSgpLnRleHRBbGlnbm1lbnQgIT0gTm9BbGlnbm1lbnQpCkBAIC0yODcsNiArMjg5LDggQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRWRpdG9yU3RhdGUm
IGVkaXRvclN0YXRlKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJhc2VXcml0aW5nRGlyZWN0
aW9uIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5i
YXNlV3JpdGluZ0RpcmVjdGlvbikpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCku
c2VsZWN0aW9uQ2xpcFJlY3QgIT0gSW50UmVjdCgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNlbGVjdGlvbkNsaXBSZWN0IiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3Rp
b25DbGlwUmVjdCk7CiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRS
ZWN0QXRFbmQgIT0gSW50UmVjdCgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNhcmV0UmVj
dEF0RW5kIiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCk7CiAg
ICAgaWYgKCFlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzLmlzRW1w
dHkoKSkKQEAgLTMxOSw2ICszMjMsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY2FyZXRDb2xvciIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRD
b2xvcik7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGVkaXRvclN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uQm91bmRpbmdSZWN0ICE9IEludFJlY3QoKSkKKyAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25Cb3VuZGluZ1JlY3QiLCBlZGl0b3JTdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvbkJvdW5kaW5nUmVjdCk7CiAgICAgaWYgKGVkaXRvclN0
YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FuZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24pCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2FuZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24iLCBlZGl0
b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLmNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uKTsK
ICAgICBpZiAoZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5wYXJhZ3JhcGhDb250ZXh0Rm9y
Q2FuZGlkYXRlUmVxdWVzdC5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmlu
ZGV4IDkzMzZmMjZiZWY4OTFiYmEwMjY1NDJhMTM4YzcxYmU4ZjZjNTMyZDYuLmVjZTY3NjQ1NjVk
MjllNTExYzFmMDdmYjk2NTA4MjM3ODFhNWVkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuaApAQCAtODIsNyArODIsNiBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBXZWJD
b3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0U3RhcnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBmb2N1c2VkRWxlbWVudFJlY3Q7CiAgICAgICAg
IHVpbnQ2NF90IHNlbGVjdGVkVGV4dExlbmd0aCB7IDAgfTsKICAgICAgICAgdWludDMyX3QgdGV4
dEFsaWdubWVudCB7IE5vQWxpZ25tZW50IH07CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIHRleHRD
b2xvciB7IFdlYkNvcmU6OkNvbG9yOjpibGFjayB9OwpAQCAtOTAsNiArODksNyBAQCBzdHJ1Y3Qg
RWRpdG9yU3RhdGUgewogICAgICAgICBXZWJDb3JlOjpXcml0aW5nRGlyZWN0aW9uIGJhc2VXcml0
aW5nRGlyZWN0aW9uIHsgV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlvbjo6TmF0dXJhbCB9OwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBz
ZWxlY3Rpb25DbGlwUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVu
ZDsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3Rz
OwogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gbWFya2VkVGV4dFJlY3Rz
OwpAQCAtMTEyLDYgKzExMiw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIGJvb2wg
c2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5IHsgZmFsc2UgfTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25Cb3VuZGlu
Z1JlY3Q7CiAgICAgICAgIHVpbnQ2NF90IGNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uIHsg
MCB9OwogICAgICAgICBTdHJpbmcgcGFyYWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3Q7
CiAgICAgICAgIFN0cmluZyBzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdUZXN0aW5nTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdUZXN0aW5nTWFjLm1tCmlu
ZGV4IDJkODQxMzI3NTJjODBiNzEyNmYzNjAzODA1YTU3YTQxZDUwNzI0MmIuLjQxZjg1ZjEzMDE0
NjViZDdkNmJhZTMxYWE0MmJkMGNjNDI2ODAzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3VGVzdGluZ01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld1Rlc3RpbmdNYWMubW0KQEAgLTgwLDcgKzgw
LDcgQEAgLSAodm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5T
UmFuZ2UpcmVwbGFjZW1lbnRSYW5nZQogCiAtIChOU1JlY3QpX2NhbmRpZGF0ZVJlY3QKIHsKLSAg
ICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5mb2N1c2VkRWxl
bWVudFJlY3Q7CisgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRh
KCkuc2VsZWN0aW9uQm91bmRpbmdSZWN0OwogfQogCiAtICh2b2lkKXZpZXdEaWRDaGFuZ2VFZmZl
Y3RpdmVBcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDU2MDg3NTg0YzEwNzNiNmNlNTE2YTQ4ZmJlYzUwMGE5ZmQyYjFmMzguLmJj
MDk1MTY4OWE5N2QzYTdiMGFjNDQxMDA3YTdmZTZmYWRhZTQ4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1
ZW5jZU51bWJlciwgTlNBcnJheTxOUwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgTlNSYW5n
ZSBzZWxlY3RlZFJhbmdlID0gTlNNYWtlUmFuZ2UocG9zdExheW91dERhdGEuY2FuZGlkYXRlUmVx
dWVzdFN0YXJ0UG9zaXRpb24sIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkVGV4dExlbmd0aCk7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBvZmZzZXRTZWxlY3Rpb25SZWN0ID0gcG9zdExheW91dERhdGEu
Zm9jdXNlZEVsZW1lbnRSZWN0OworICAgIFdlYkNvcmU6OkludFJlY3Qgb2Zmc2V0U2VsZWN0aW9u
UmVjdCA9IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkJvdW5kaW5nUmVjdDsKICAgICBvZmZzZXRT
ZWxlY3Rpb25SZWN0Lm1vdmUoMCwgb2Zmc2V0U2VsZWN0aW9uUmVjdC5oZWlnaHQoKSk7CiAKICAg
ICBbY2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSgpIHNldENhbmRpZGF0ZXM6Y2FuZGlkYXRlcyBm
b3JTZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2UgaW5TdHJpbmc6cG9zdExheW91dERhdGEucGFy
YWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QgcmVjdDpvZmZzZXRTZWxlY3Rpb25SZWN0
IHZpZXc6bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA0M2E1ZWQ2NTIwZGFkYTBhNDlhYzYwZGU1NTBiODIxMmQwNjhkZWU1
Li5jNjM5ZTBhYjk1YTNmMjU5MDhlMTllOTQzYTU0OWQzMTE0ZjRiMmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTIxNSw3ICsyMTUsNyBAQCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlv
bkRyYXdpbmdJbmZvKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKICAgICBhdXRvJiBw
b3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCk7CiAgICAgY2FyZXRS
ZWN0ID0gcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQ7CiAgICAgc2VsZWN0aW9uUmVjdHMg
PSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0czsKLSAgICBzZWxlY3Rpb25DbGlwUmVjdCA9
IHBvc3RMYXlvdXREYXRhLmZvY3VzZWRFbGVtZW50UmVjdDsKKyAgICBzZWxlY3Rpb25DbGlwUmVj
dCA9IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkNsaXBSZWN0OwogfQogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8mIGEsIGNvbnN0IFdLU2VsZWN0
aW9uRHJhd2luZ0luZm8mIGIpCkBAIC0yMDU2LDEzICsyMDU2LDEzIEBAIC0gKFVJVmlldyAqKWlu
cHV0Vmlld0ZvcldlYlZpZXcKIAogLSAoQ0dSZWN0KV9zZWxlY3Rpb25DbGlwUmVjdAogewotICAg
IGlmICghc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBDR1JlY3ROdWxs
OwotCiAgICAgaWYgKF9wYWdlLT53YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRl
QWZ0ZXJGb2N1c2luZ0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmludGVyYWN0aW9uUmVjdDsKIAotICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5wb3N0TGF5b3V0RGF0YSgpLmZvY3VzZWRFbGVtZW50UmVjdDsKKyAgICBpZiAoIV9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uQ2xpcFJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEo
KS5zZWxlY3Rpb25DbGlwUmVjdDsKKworICAgIHJldHVybiBDR1JlY3ROdWxsOwogfQogCiBzdGF0
aWMgQk9PTCBpc0J1aWx0SW5TY3JvbGxWaWV3R2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVj
b2duaXplciAqcmVjb2duaXplcikKQEAgLTY1ODYsNyArNjU4Niw3IEBAIC0gKHZvaWQpX3VwZGF0
ZVNlbGVjdGlvbkFzc2lzdGFudFN1cHByZXNzaW9uU3RhdGUKICAgICAgICAgICAgIGVkaXRhYmxl
Um9vdElzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IFlFUzsKIAogICAgICAgICBpZiAoc2Vs
Zi5faGFzRm9jdXNlZEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudEFyZWEgPSBw
b3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKTsK
KyAgICAgICAgICAgIGF1dG8gZWxlbWVudEFyZWEgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25D
bGlwUmVjdC5hcmVhPFJlY29yZE92ZXJmbG93PigpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50
QXJlYS5oYXNPdmVyZmxvd2VkKCkgJiYgZWxlbWVudEFyZWEgPCBtaW5pbXVtRm9jdXNlZEVsZW1l
bnRBcmVhRm9yU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnQpCiAgICAgICAgICAgICAgICAg
Zm9jdXNlZEVsZW1lbnRJc1Rvb1NtYWxsID0gWUVTOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGYwNWVm
Mzg0YzhhOGRjN2M1ZDkzNTNiYmMyOTk0MWNlZDgzYmI3MTUuLjlmZDFmZDM5ZDgyZjU4ODg0MjVi
NzFlNjM5ODBlZjQ3N2IwOTZkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMTIsMTYgKzMxMiwxNiBAQCB2b2lkIFdl
YlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYg
cmVzdWx0KSBjb25zdAogICAgIHBvc3RMYXlvdXREYXRhLmluc2lkZUZpeGVkUG9zaXRpb24gPSBz
dGFydE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gfHwgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3Np
dGlvbjsKICAgICBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBpZiAobV9mb2N1
c2VkRWxlbWVudCAmJiBtX2ZvY3VzZWRFbGVtZW50LT5yZW5kZXJlcigpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogVGhlIGNhcmV0IGNvbG9yIHN0eWxlIHNob3VsZCBiZSBjb21wdXRlZCB1c2lu
ZyB0aGUgc2VsZWN0aW9uIGNhcmV0J3MgY29udGFpbmVyCisgICAgICAgICAgICAvLyByYXRoZXIg
dGhhbiB0aGUgZm9jdXNlZCBlbGVtZW50LiBUaGlzIGNhdXNlcyBjYXJldCBjb2xvcnMgaW4gZWRp
dGFibGUgY2hpbGRyZW4gdG8gYmUKKyAgICAgICAgICAgIC8vIGlnbm9yZWQgaW4gZmF2b3Igb2Yg
dGhlIGVkaXRpbmcgaG9zdCdzIGNhcmV0IGNvbG9yLgogICAgICAgICAgICAgYXV0byYgcmVuZGVy
ZXIgPSAqbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLmZvY3VzZWRFbGVtZW50UmVjdCA9IHJvb3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JF
bGVtZW50KCptX2ZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNh
cmV0Q29sb3IgPSBDYXJldEJhc2U6OmNvbXB1dGVDYXJldENvbG9yKHJlbmRlcmVyLnN0eWxlKCks
IHJlbmRlcmVyLmVsZW1lbnQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5pc0Nv
bnRlbnRFZGl0YWJsZSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZWRpdGFibGVSb290T3JGb3Jt
Q29udHJvbCA9IG1ha2VSZWZQdHIoc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVkaXRh
YmxlUm9vdE9yRm9ybUNvbnRyb2wtPnNoYWRvd0hvc3QoKSkpCi0gICAgICAgICAgICAgICAgICAg
IGVkaXRhYmxlUm9vdE9yRm9ybUNvbnRyb2wgPSBlZGl0YWJsZVJvb3RPckZvcm1Db250cm9sLT5z
aGFkb3dIb3N0KCk7Ci0gICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEuZWRpdGFibGVSb290
SXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVkID0gaXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVk
KCplZGl0YWJsZVJvb3RPckZvcm1Db250cm9sKTsKLSAgICAgICAgICAgIH0KKworICAgICAgICBp
ZiAoYXV0byBlZGl0YWJsZVJvb3RPckZvcm1Db250cm9sID0gbWFrZVJlZlB0cihlbmNsb3NpbmdU
ZXh0Rm9ybUNvbnRyb2woc2VsZWN0aW9uLnN0YXJ0KCkpID86IHNlbGVjdGlvbi5yb290RWRpdGFi
bGVFbGVtZW50KCkpKSB7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25DbGlw
UmVjdCA9IHJvb3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KCplZGl0YWJsZVJvb3RP
ckZvcm1Db250cm9sKTsKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmVkaXRhYmxlUm9vdElz
VHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBp
c1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWQoKmVkaXRhYmxlUm9vdE9yRm9ybUNvbnRyb2wpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxhaW5U
ZXh0KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5z
ZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDkyOTNm
ZDNjZjFiZjM0NWVlZDUwNjlhODkwMGVlN2I0YWRhNjMzNDEuLmZmNzQwZjVmZWNkMzczMjU0MjUw
OTM2ZWU4ZDFhYTgzMGVlZmQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xNjUsMTEgKzE2NSwxMCBAQCB2b2lkIFdl
YlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYg
cmVzdWx0KSBjb25zdAogCiAgICAgYXV0byBxdWFkcyA9IFJlbmRlck9iamVjdDo6YWJzb2x1dGVU
ZXh0UXVhZHMoKnNlbGVjdGVkUmFuZ2UpOwogICAgIGlmICghcXVhZHMuaXNFbXB0eSgpKQotICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSBmcmFtZS52aWV3KCktPmNv
bnRlbnRzVG9XaW5kb3cocXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7Ci0gICAgZWxz
ZSB7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkJvdW5kaW5nUmVjdCA9IGZyYW1l
LnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
KTsKKyAgICBlbHNlIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CiAgICAgICAgIC8vIFF1YWRz
IHdpbGwgYmUgZW1wdHkgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoLgotICAgICAgICBpZiAo
c2VsZWN0aW9uLmlzQ2FyZXQoKSkKLSAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmZvY3VzZWRF
bGVtZW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmcmFtZS5zZWxlY3Rp
b24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxl
Y3Rpb25Cb3VuZGluZ1JlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coZnJhbWUu
c2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYWFiZjNlMjNiZWFk
ZDlkOTc5NTMxN2NiOWFhOTA3MTZlNjA1YzIyLi4zNWYyYmJjOTM4MzIzYWUzNjZiZGQwMWIyODdi
ZjE0ZmRlYWY4YjMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDgtMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvZ3JhbW1hdGljIHNlbGVjdGlvbiBvZiB0
ZXh0IGluIGEgdGV4dCBmaWVsZCBjYXVzZXMgdGhlIGhpZ2hsaWdodCBvdmVybGF5IHRvIHNwaWxs
IG91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NzQwNDk3OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6Y2xpcFNlbGVjdGlvblZpZXdS
ZWN0VG9Db250ZW50Vmlldyk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNs
aXAgVUlLaXQgc2VsZWN0aW9uIFVJIHJlY3RzIChmb3IgY2FyZXRzLCBzZWxlY3Rpb24gZ3JhYmJl
cnMsIGFuZCByYW5nZWQgc2VsZWN0aW9uCisgICAgICAgIGhpZ2hsaWdodHMpIHRvIHRoZSBjb250
ZW50IHZpZXcncyAoV0tDb250ZW50VmlldydzKSBib3VuZHMsIGFzIHdlbGwgYXMgdGhlIHNlbGVj
dGlvbiBjbGlwIHJlY3QgaWYgaXQgaXMgbm9ubnVsbC4KKworICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmll
d1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbGVj
dGlvbkNhcmV0Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXJJT1M6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKwogMjAyMC0wOC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFVu
YWJsZSB0byBjb3B5IHRleHQgZnJvbSB0aGUgZnVuY3Rpb24gYnJvd3NlciBwYW5lbCBpbiBOdW1i
ZXJzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0KaW5kZXggMzI5MGI2MWY5OTM0ZjU3Y2RmMjI4OWZkODU4OWNlM2JiM2IxNjk5ZC4u
YWIxYTNlYjI5ZDhkNWE0MmVjM2MxZTRiNDU0YTUyZjc5ZTY0MTQ1OCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNzkw
LDI0ICs3OTAsMzIgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjp0ZXh0U2Vs
ZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29u
dGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFy
eSh3ZWJWaWV3KCkuX3VpVGV4dENhcmV0UmVjdCkgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4
dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVS
ZWYsIG51bGxwdHIpOwogfQogCitzdGF0aWMgdm9pZCBjbGlwU2VsZWN0aW9uVmlld1JlY3RUb0Nv
bnRlbnRWaWV3KENHUmVjdCYgcmVjdCwgVUlWaWV3ICpjb250ZW50VmlldykKK3sKKyAgICByZWN0
ID0gQ0dSZWN0SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJvdW5kcywgcmVjdCk7CisgICAgYXV0
byBzZWxlY3Rpb25DbGlwUmVjdCA9IFsoVUlWaWV3IDxVSVRleHRJbnB1dFByaXZhdGU+ICopY29u
dGVudFZpZXcgX3NlbGVjdGlvbkNsaXBSZWN0XTsKKyAgICBpZiAoIUNHUmVjdElzTnVsbChzZWxl
Y3Rpb25DbGlwUmVjdCkpCisgICAgICAgIHJlY3QgPSBDR1JlY3RJbnRlcnNlY3Rpb24oc2VsZWN0
aW9uQ2xpcFJlY3QsIHJlY3QpOworfQorCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkgY29uc3QKIHsKICAgICBVSVZpZXcg
KmNvbnRlbnRWaWV3ID0gcGxhdGZvcm1Db250ZW50VmlldygpOwogICAgIFVJVmlldyAqc2VsZWN0
aW9uUmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVyYWN0aW9u
QXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07Ci0gICAgYXV0byBmcmFtZUluQ29u
dGVudENvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpbW3NlbGVj
dGlvblJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJzdGFydEdyYWJiZXIiXSBmcmFtZV0gdG9W
aWV3OmNvbnRlbnRWaWV3XTsKLSAgICBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzID0gQ0dSZWN0
SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJvdW5kcywgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRl
cyk7CisgICAgYXV0byBmcmFtZUluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IFtzZWxlY3Rpb25S
YW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxlY3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQYXRo
OkAic3RhcnRHcmFiYmVyIl0gZnJhbWVdIHRvVmlldzpjb250ZW50Vmlld107CisgICAgY2xpcFNl
bGVjdGlvblZpZXdSZWN0VG9Db250ZW50VmlldyhmcmFtZUluQ29udGVudFZpZXdDb29yZGluYXRl
cywgY29udGVudFZpZXcpOwogICAgIGF1dG8ganNDb250ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRl
eHQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFs
dWVXaXRoT2JqZWN0OnRvTlNEaWN0aW9uYXJ5KGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMpIGlu
Q29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzQ29udGV4
dF1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOworICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QoanND
b250ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNv
bnRlbnRWaWV3Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOmpzQ29udGV4dF1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOwogfQogCiBK
U09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3
UmVjdCgpIGNvbnN0CiB7CiAgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IHBsYXRmb3JtQ29udGVu
dFZpZXcoKTsKICAgICBVSVZpZXcgKnNlbGVjdGlvblJhbmdlVmlldyA9IFtjb250ZW50VmlldyB2
YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJhbmdl
VmlldyJdOwotICAgIGF1dG8gZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IFtzZWxlY3Rpb25S
YW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxlY3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQYXRo
OkAiZW5kR3JhYmJlciJdIGZyYW1lXSB0b1ZpZXc6Y29udGVudFZpZXddOwotICAgIGZyYW1lSW5D
b250ZW50Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oY29udGVudFZpZXcuYm91bmRz
LCBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzKTsKKyAgICBhdXRvIGZyYW1lSW5Db250ZW50Vmll
d0Nvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpbW3NlbGVjdGlv
blJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJlbmRHcmFiYmVyIl0gZnJhbWVdIHRvVmlldzpj
b250ZW50Vmlld107CisgICAgY2xpcFNlbGVjdGlvblZpZXdSZWN0VG9Db250ZW50VmlldyhmcmFt
ZUluQ29udGVudFZpZXdDb29yZGluYXRlcywgY29udGVudFZpZXcpOwogICAgIGF1dG8ganNDb250
ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRleHQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0
KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnRvTlNEaWN0aW9uYXJ5KGZyYW1l
SW5Db250ZW50Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOmpzQ29udGV4dF1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOworICAgIHJl
dHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpb
SlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzQ29udGV4dF1dLkpTVmFs
dWVSZWYsIG51bGxwdHIpOwogfQogCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6
OnNlbGVjdGlvbkNhcmV0Vmlld1JlY3QoKSBjb25zdApAQCAtODE1LDYgKzgyMyw3IEBAIEpTT2Jq
ZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNv
bnN0CiAgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IHBsYXRmb3JtQ29udGVudFZpZXcoKTsKICAg
ICBVSVZpZXcgKmNhcmV0VmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJpbnRl
cmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LmNhcmV0VmlldyJdOwogICAgIGF1dG8gcmVj
dEluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IENHUmVjdEludGVyc2VjdGlvbihbY2FyZXRWaWV3
IGNvbnZlcnRSZWN0OmNhcmV0Vmlldy5ib3VuZHMgdG9WaWV3OmNvbnRlbnRWaWV3XSwgY29udGVu
dFZpZXcuYm91bmRzKTsKKyAgICBjbGlwU2VsZWN0aW9uVmlld1JlY3RUb0NvbnRlbnRWaWV3KHJl
Y3RJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMsIGNvbnRlbnRWaWV3KTsKICAgICByZXR1cm4gSlNW
YWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDp0b05TRGljdGlvbmFyeShyZWN0SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzKSBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpz
Q29udGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKQEAgLTgyNyw2ICs4MzYsNyBA
QCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbGVjdGlvblJhbmdlVmlld1Jl
Y3RzKCkgY29uc3QKICAgICBmb3IgKGlkIHRleHRSZWN0SW5mbyBpbiB0ZXh0UmVjdEluZm9BcnJh
eSkgewogICAgICAgICBOU1ZhbHVlICpyZWN0VmFsdWUgPSBbdGV4dFJlY3RJbmZvIHZhbHVlRm9y
S2V5UGF0aDpAInJlY3QiXTsKICAgICAgICAgYXV0byByYW5nZVJlY3RJbkNvbnRlbnRWaWV3Q29v
cmRpbmF0ZXMgPSBbcmFuZ2VWaWV3IGNvbnZlcnRSZWN0OnJlY3RWYWx1ZS5DR1JlY3RWYWx1ZSB0
b1ZpZXc6Y29udGVudFZpZXddOworICAgICAgICBjbGlwU2VsZWN0aW9uVmlld1JlY3RUb0NvbnRl
bnRWaWV3KHJhbmdlUmVjdEluQ29udGVudFZpZXdDb29yZGluYXRlcywgY29udGVudFZpZXcpOwog
ICAgICAgICBbcmVjdHNBc0RpY3Rpb25hcmllcyBhZGRPYmplY3Q6dG9OU0RpY3Rpb25hcnkoQ0dS
ZWN0SW50ZXJzZWN0aW9uKHJhbmdlUmVjdEluQ29udGVudFZpZXdDb29yZGluYXRlcywgY29udGVu
dFZpZXcuYm91bmRzKSldOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29u
dGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpyZWN0c0FzRGljdGlv
bmFyaWVzLmdldCgpIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250
ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA2YTI5MzhkMTUyNmY4MzM2NWQ5NDU1ZWVmNTk0YzcyNDEyODE0YzgyLi40ZDRhOGI1ZWQ0
Yzk2ZjQxMjYyZmRhMTBkNTJmMzNmMGM1OGY0YTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjAtMDgtMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUHJvZ3JhbW1hdGljIHNlbGVjdGlvbiBvZiB0ZXh0IGluIGEgdGV4dCBmaWVsZCBjYXVzZXMg
dGhlIGhpZ2hsaWdodCBvdmVybGF5IHRvIHNwaWxsIG91dAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82NzQwNDk3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3QtYWxsLWluLXJlYWRvbmx5LWlucHV0
LWRvZXMtbm90LW92ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1hbGwtaW4tcmVhZG9ubHktaW5wdXQtZG9lcy1ub3Qtb3Zl
cmZsb3cuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IGxheW91dCB0ZXN0IHRvIHZl
cmlmeSB0aGF0IHRoZSB3aWR0aCBvZiB0aGUgc2VsZWN0aW9uIHZpZXcgZG9lcyBub3QgZXhjZWVk
IHRoZSB3aWR0aCBvZiB0aGUgcmVhZG9ubHkKKyAgICAgICAgaW5wdXQgY29udGFpbmluZyB0aGUg
c2VsZWN0ZWQgdGV4dC4KKworICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAg
ICAgICh3aW5kb3cuVUlIZWxwZXIuYXN5bmMgd2FpdEZvclNlbGVjdGlvblRvQXBwZWFyKToKKwor
ICAgICAgICBBZGp1c3QgdGhpcyBVSUhlbHBlciBmdW5jdGlvbiB0byBhZGRpdGlvbmFsbHkgcmVz
b2x2ZSB0byB0aGUgc2VsZWN0aW9uIHJlY3RzLCBzbyB0aGF0IGl0IHdvbid0IGJlIG5lY2Vzc2Fy
eSBmb3IKKyAgICAgICAgY2FsbGVycyB0byBhc2sgZm9yIHRoZSBzZWxlY3Rpb24gdmlldyByZWN0
cyBzZXBhcmF0ZWx5IGFmdGVyIHdhaXRpbmcgZm9yIHNlbGVjdGlvbiB2aWV3cyB0byBhcHBlYXIu
CisKIDIwMjAtMDgtMjEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIEFsaWduICJsZW5ndGgiIHByb3BlcnRpZXMgb2YgZnVuY3Rpb24gcHJvdG90eXBl
cyB3aXRoIHRoZSBzcGVjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9pb3Mvc2VsZWN0LWFsbC1pbi1yZWFkb25seS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1p
bi1yZWFkb25seS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzQ2MTkxNzlkNDM4NjYyMDIzNWMwYWVhNjA2YTM4MTNjOGJmYjFmOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3QtYWxsLWluLXJl
YWRvbmx5LWlucHV0LWRvZXMtbm90LW92ZXJmbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gdmlld3MgYXJlIGNsaXBwZWQg
dG8gdGhlIGJvdW5kcyBvZiBhIHJlYWRvbmx5IGlucHV0LiBUbyBtYW51YWxseSBydW4gdGhlIHRl
c3QsIHRhcCB0aGUgJ1NlbGVjdCcgYnV0dG9uLCBhbmQgdGhlbiB0YXAgdGhlIGlucHV0LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzZWxlY3Rpb25SZWN0cy5sZW5ndGgg
aXMgMQorUEFTUyBpbnB1dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCBpcyA+PSBzZWxl
Y3Rpb25SZWN0c1swXS53aWR0aAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2lvcy9zZWxlY3QtYWxsLWluLXJlYWRvbmx5LWlucHV0LWRvZXMtbm90LW92ZXJmbG93Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1pbi1yZWFkb25s
eS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MjNiNzEyYjA4N2Fm
MDExODdiZDUzMDk1ODQwYmY0MzRjZTg3NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1pbi1yZWFkb25seS1pbnB1dC1kb2Vz
LW5vdC1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPHN0eWxlPgoraW5wdXQsIGJ1dHRvbiB7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIHdpZHRoOiAxMjBweDsKKyAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgICA8aW5wdXQgcmVh
ZG9ubHkgdmFsdWU9IkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlw
aXNjaW5nIGVsaXQuIEN1cmFiaXR1ciBzZWQgbGFvcmVldCBlcmF0LiBJbiBoYWMgaGFiaXRhc3Nl
IHBsYXRlYSBkaWN0dW1zdC4gVmVzdGlidWx1bSB0cmlzdGlxdWUsIGxhY3VzIHNlZCBwZWxsZW50
ZXNxdWUgdmVoaWN1bGEsIHB1cnVzIHF1YW0gaW50ZXJkdW0gc2FwaWVuLCBwaGFyZXRyYSBtb2xl
c3RpZSBhbnRlIG5pYmggdXQgdmVsaXQuIFZpdmFtdXMgZXUgbGFjdXMgZXN0LiBQcm9pbiBhdCBh
cmN1IHZlbCB1cm5hIGlhY3VsaXMgY29tbW9kby4gU2VkIHRyaXN0aXF1ZSBuaXNsIG5lYyB0b3J0
b3IgbW9sZXN0aWUgYWxpcXVldC4iPgorICAgIDxidXR0b24+U2VsZWN0PC9idXR0b24+Cis8L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgc2VsZWN0aW9uIHZpZXdzIGFyZSBjbGlwcGVkIHRvIHRoZSBib3VuZHMgb2YgYSByZWFkb25s
eSBpbnB1dC4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCB0YXAgdGhlICdTZWxlY3QnIGJ1dHRv
biwgYW5kIHRoZW4gdGFwIHRoZSBpbnB1dC4iKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgaW5wdXQgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOworICAgIGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImJ1dHRvbiIpOworICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
ICgpID0+IHsKKyAgICAgICAgaW5wdXQuc2VsZWN0KCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhd2FpdCBVSUhlbHBlci5h
Y3RpdmF0ZUVsZW1lbnQoYnV0dG9uKTsKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1l
bnQoaW5wdXQpOworICAgIHNlbGVjdGlvblJlY3RzID0gYXdhaXQgVUlIZWxwZXIud2FpdEZvclNl
bGVjdGlvblRvQXBwZWFyKCk7CisKKyAgICBzaG91bGRCZSgic2VsZWN0aW9uUmVjdHMubGVuZ3Ro
IiwgIjEiKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiaW5wdXQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkud2lkdGgiLCAic2VsZWN0aW9uUmVjdHNbMF0ud2lkdGgiKTsKKworICAg
IGlucHV0LnJlbW92ZSgpOworICAgIGJ1dHRvbi5yZW1vdmUoKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30pOworPC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggZWRhMDg5YTlmOGMzNTllMTNiOTJmMzVi
OWJjYTJhODIyMTQ3YmQ1ZS4uZGE0YWQ3MDRmMGI3NTRlMThkNzliMWU5YzYyNjIwZjQyZWZhY2E3
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC0xMjQzLDggKzEyNDMsOSBAQCB3
aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAKICAgICBzdGF0aWMgYXN5bmMgd2Fp
dEZvclNlbGVjdGlvblRvQXBwZWFyKCkgewogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICAgICAgaWYgKChhd2FpdCB0aGlzLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLmxlbmd0aCA+
IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBsZXQgc2VsZWN0aW9uUmVj
dHMgPSBhd2FpdCB0aGlzLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCk7CisgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uUmVjdHMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
ZWN0aW9uUmVjdHM7CiAgICAgICAgIH0KICAgICB9CiAK
</data>
<flag name="review"
          id="422442"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407082</attachid>
            <date>2020-08-23 15:19:59 -0700</date>
            <delta_ts>2020-08-23 18:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215647-20200823151958.patch</filename>
            <type>text/plain</type>
            <size>30446</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjllN2U5NmQxY2ZhM2I2
NGZhNjNmODM2ZDcyMWZhYWY3ZmMwNDIzMy4uYThmNDBmNWVhODBjNTA1OTZiMmE5NDA2NzQwODA4
MjA5OGUwMzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFByb2dyYW1tYXRp
YyBzZWxlY3Rpb24gb2YgdGV4dCBpbiBhIHRleHQgZmllbGQgY2F1c2VzIHRoZSBoaWdobGlnaHQg
b3ZlcmxheSB0byBzcGlsbCBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTY0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjc0MDQ5Nzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgU2VlIFdlYktpdCBD
aGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oOiBFeHBvcnQgYSBoZWxwZXIgZnVuY3Rpb24uCisKIDIwMjAtMDgtMjEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNv
bWUgRklYTUVzIGluIHRoZSBFdmVudEhhbmRsZXIgd2hlZWwgZXZlbnQgaGFuZGxpbmcgY29kZSBm
b3IgYWxsIHRoZSB0aGluZ3MgdGhhdCBhcmUgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjgyM2QwMWYwM2Q1
NDFhM2M1YmJjZjdmYzdkMjJlYjlkYzBiNmM1OS4uNWVkMDI2Y2ZlNDdkZTYxNGViMGFiNTJmNTkz
NTMzZjQwMGJjNDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAyMC0wOC0yMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9ncmFtbWF0
aWMgc2VsZWN0aW9uIG9mIHRleHQgaW4gYSB0ZXh0IGZpZWxkIGNhdXNlcyB0aGUgaGlnaGxpZ2h0
IG92ZXJsYXkgdG8gc3BpbGwgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU2NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NDA0OTc5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVJS2l0IGNvbnN1
bHRzIHRoZSBTUEkgbWV0aG9kIGAtX3NlbGVjdGlvbkNsaXBSZWN0YCBvbiBXS0NvbnRlbnRWaWV3
IHRvIGRldGVybWluZSB0aGUgbWF4aW11bSBib3VuZHMgaW4gd2hpY2ggaXQKKyAgICAgICAgaXMg
YWxsb3dlZCB0byBzaG93IHRleHQgc2VsZWN0aW9uIFVJIChpLmUuIHRoZSB0ZXh0IGNhcmV0IHZp
ZXcsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3MsIGFuZCBzZWxlY3Rpb24KKyAgICAgICAgZ3Jh
YmJlcnMpLiBOb3JtYWxseSwgd2hlbiBjb250ZW50RWRpdGFibGUgZWxlbWVudHMgYW5kIGVkaXRh
YmxlIHRleHQgZm9ybSBjb250cm9scyBhcmUgZm9jdXNlZCwgd2UgcGx1bWIgdGhlCisgICAgICAg
IGJvdW5kcyBvZiB0aGUgZm9jdXNlZCBlbGVtZW50IHRvIHRoZSBVSSBwcm9jZXNzIHZpYSBgZm9j
dXNlZEVsZW1lbnRSZWN0YCBpbiBlZGl0b3Igc3RhdGUncyBwb3N0IGxheW91dCBkYXRhLgorICAg
ICAgICBIb3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBzZWxlY3Rpb24gaXMgaW5zaWRlIGEgcmVh
ZG9ubHkgdGV4dCBmaWVsZCB0aGF0IGlzICpub3QqIGZvY3VzZWQ7IHRoaXMgY2F1c2VzIHVzIHRv
CisgICAgICAgIHJldHVybiBgQ0dSZWN0TnVsbGAgZnJvbSBgLV9zZWxlY3Rpb25DbGlwUmVjdGAs
IHdoaWNoIG1lYW5zIHRoYXQgVUlLaXQgc2VsZWN0aW9uIFVJIGlzIG5vdCBjbGlwcGVkIGF0IGFs
bCBhbmQKKyAgICAgICAgaW5zdGVhZCBvdmVyZmxvd3MgdGhlIGJvdW5kcyBvZiB0aGUgaW5wdXQg
ZWxlbWVudC4KKworICAgICAgICBUbyBmaXggdGhpcywgcmVhcnJhbmdlIHNvbWUgbG9naWMgaW4g
YFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGVgIGluIGBXZWJQYWdlSU9TLm1tYCBzdWNo
IHRoYXQgd2UgY29tcHV0ZQorICAgICAgICBhbmQgc2VuZCB0aGUgc2VsZWN0aW9uIGNsaXBwaW5n
IHJlY3QgaWYgdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgYSB0ZXh0IGZvcm0gY29udHJvbCwgZXZl
biBpZiBpdCBpcyBub3QgdGhlCisgICAgICAgIGZvY3VzZWQgZWxlbWVudC4gSW4gZG9pbmcgdGhp
cywgd2UgYWxzbyByZW5hbWUgc29tZSBjb25mdXNpbmdseS1uYW1lZCBtZW1iZXJzIGluIGBFZGl0
b3JTdGF0ZTo6UG9zdExheW91dERhdGFgCisgICAgICAgIChzZWUgYmVsb3cgZm9yIG1vcmUgZGV0
YWlsKS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1p
bi1yZWFkb25seS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy5odG1sCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisKKyAgICAgICAgQWRkIGEgZGVjbGFyYXRpb24gZm9y
IGAtX3NlbGVjdGlvbkNsaXBSZWN0YC4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBTaGFyZWQv
RWRpdG9yU3RhdGUuaDoKKworICAgICAgICBTcGxpdCB0aGUgZXhpc3RpbmcgcmVjdCBtZW1iZXIg
YGZvY3VzZWRFbGVtZW50UmVjdGAgaW50byB0d286IGBzZWxlY3Rpb25DbGlwUmVjdGAgb24gaU9T
LCBhbmQKKyAgICAgICAgYHNlbGVjdGlvbkJvdW5kaW5nUmVjdGAgb24gbWFjT1MuIFByZXZpb3Vz
bHksIGBmb2N1c2VkRWxlbWVudFJlY3RgIHdhcyBzZXQgdG8gdGhlIGZvY3VzZWQgZWxlbWVudCdz
IGJvdW5kaW5nCisgICAgICAgIHJlY3Qgb24gaU9TIChhcyBleHBlY3RlZCksIGJ1dCBvbiBtYWNP
Uywgd2Ugc2V0IHRvIHRoZSBib3VuZHMgb2YgdGhlIHJhbmdlZCBvciBjYXJldCBzZWxlY3Rpb247
IHdlIHByb2NlZWQgdG8KKyAgICAgICAgdXNlIHRoaXMgcmVjdCB0byBtZWFuIHRoZSBib3VuZHMg
b2YgdGhlIHNlbGVjdGlvbiBhbnl3YXlzIGluIG1hY09TLXNwZWNpZmljIGNvZGUsIHNvIGl0IG1h
a2VzIG1vcmUgc2Vuc2UgdG8ganVzdAorICAgICAgICBtb3ZlIHRoaXMgaW50byB0aGUgbWFjT1Mt
c3BlY2lmaWMgc2VjdGlvbi4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGFmdGVyIHRoZSBiZWxv
dyBjaGFuZ2UgaW4gV2ViUGFnZUlPUywgYGZvY3VzZWRFbGVtZW50UmVjdGAgaXMgbm8gbG9uZ2Vy
IHNwZWNpZmljIHRvIHRoZSBmb2N1c2VkCisgICAgICAgIGVsZW1lbnQsIHNvIHJlbmFtZSBpdCBp
bnN0ZWFkIHRvIGBzZWxlY3Rpb25DbGlwUmVjdGAgaW5zdGVhZC4gSW4gYFdLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbWAsIHRoaXMgcmVjdCBpcworICAgICAgICBlZmZlY3RpdmVseSBvbmx5IHVz
ZWQgaW4gdHdvIHdheXM6IGFzIHRoZSBzZWxlY3Rpb24gY2xpcCByZWN0IGZvciBVSUtpdCwgYW5k
IHRvIGRldGVybWluZSBpZiB0aGUgc2VsZWN0aW9uIHdvdWxkCisgICAgICAgIGJlIGNvbXBsZXRl
bHkgY2xpcHBlZCBhbnl3YXlzIChpbiB3aGljaCBjYXNlIHdlIHN1cHByZXNzIFVJS2l0IHRleHQg
aW50ZXJhY3Rpb25zKSwgc28gYHNlbGVjdGlvbkNsaXBSZWN0YCBpcyBhCisgICAgICAgIG5hbWUg
dGhhdCBpcyBzdWl0YWJsZSBmb3IgYm90aCBwdXJwb3Nlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1dLV2ViVmlld1Rlc3RpbmdNYWMubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
Y2FuZGlkYXRlUmVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKworICAgICAgICBSZW5hbWUgYGZvY3VzZWRFbGVtZW50UmVjdGAgdG8gYHNlbGVjdGlvbkJv
dW5kaW5nUmVjdGAgb24gbWFjT1MuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhh
bmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorCisgICAgICAgIFJlbmFtZSBgZm9jdXNlZEVsZW1lbnRS
ZWN0YCB0byBgc2VsZWN0aW9uQ2xpcFJlY3RgIG9uIGlPUy4KKworICAgICAgICAoV2ViS2l0OjpX
S1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2VsZWN0aW9uQ2xpcFJlY3RdKToKKworICAgICAgICBDaGFuZ2Ug
dGhpcyB0byBub3QgcmVxdWlyZSBhIGZvY3VzZWQgZWxlbWVudCB3aGVuIHJldHVybmluZyB0aGUg
c2VsZWN0aW9uIGNsaXAgcmVjdCwgYW5kIGluc3RlYWQgcmV0dXJuIHRoZQorICAgICAgICBlZGl0
b3Igc3RhdGUncyBzZWxlY3Rpb24gY2xpcCByZWN0IGFzIGxvbmcgYXMgaXQgaXMgbm90IGVtcHR5
LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZVNlbGVjdGlvbkFzc2lzdGFudFN1
cHByZXNzaW9uU3RhdGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3Rh
dGUgY29uc3QpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgY29kZSB0byBjb21wdXRlIGFuZCBz
ZW5kIHNlbGVjdGlvbkNsaXBSZWN0IGFzIGxvbmcgYXMgdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUg
YSBmb3JtIGNvbnRyb2wgb3IKKyAgICAgICAgZWRpdGluZyBob3N0IChub3QganVzdCB3aGVuIHRo
ZXJlIGlzIGEgZm9jdXNlZCBlbGVtZW50KS4gQWxzbyBsZWF2ZSBhIGRyaXZlLWJ5IEZJWE1FIGFi
b3V0IHVzaW5nIHRoZSBmb2N1c2VkCisgICAgICAgIGVsZW1lbnQgKGluc3RlYWQgb2YgdGhlIHNl
bGVjdGlvbiBjb250YWluZXIgbm9kZSkgd2hlbiBjb21wdXRpbmcgdGhlIGNhcmV0IGNvbG9yLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKwogMjAy
MC0wOC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbbWFjT1NdIFVuYWJsZSB0byBjb3B5IHRleHQgZnJvbSB0aGUgZnVuY3Rpb24gYnJvd3NlciBw
YW5lbCBpbiBOdW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggYWQzMWExZjY2MGM2OWUwMGVjMzMzYzExNzBiMzQ0MThkN2Q4
YmNjMi4uMDg1NjUzNjlkMTQzZmY3YTk5NDA0Y2E2YTkwZTA1M2JlZjVmZDZkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTcz
LDcgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbWluTGVuZ3RoIHsgLTEgfTsKIH07CiAK
LUhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29u
c3QgUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9p
b3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CmluZGV4IGJmNDI3MDhjZGE5ODNlNDcwZWNlMTFiNmQxMTc5ZjBlMGZkY2FlMWUuLjg5NjAwOWQw
YmIwY2IxOWUyODZjNzYyYTNhYWFiYzE3YmVhNDRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC00ODcsNiArNDg3LDcgQEAgdHlwZWRlZiBlbnVtIHsK
IC0gKHZvaWQpbW9kaWZpZXJGbGFnc0RpZENoYW5nZUZyb206KFVJS2V5TW9kaWZpZXJGbGFncylv
bGRGbGFncyB0bzooVUlLZXlNb2RpZmllckZsYWdzKW5ld0ZsYWdzOwogI2VuZGlmCiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgVUlUZXh0R3JhbnVsYXJpdHkgc2VsZWN0aW9uR3JhbnVsYXJpdHk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUmVjdCBfc2VsZWN0aW9uQ2xpcFJlY3Q7
CiBAcmVxdWlyZWQKIC0gKEJPT0wpaGFzQ29udGVudDsKIC0gKEJPT0wpaGFzU2VsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IDE0YjA4ZDgwMTA2ZmUxNzFiMTBk
MDY2ZDJiZWU2ZTQ4NThlOGI2NzEuLjY2NTk4NTdkMzEzYWE3M2I2OTFhMGNmNzM2ZmU0MGVlOWE3
Nzg2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKQEAgLTk1LDcgKzk1LDYg
QEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0OwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBmb2N1c2VkRWxlbWVudFJlY3Q7
CiAgICAgZW5jb2RlciA8PCBzZWxlY3RlZFRleHRMZW5ndGg7CiAgICAgZW5jb2RlciA8PCB0ZXh0
QWxpZ25tZW50OwogICAgIGVuY29kZXIgPDwgdGV4dENvbG9yOwpAQCAtMTAzLDYgKzEwMiw3IEBA
IHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYmFzZVdyaXRpbmdEaXJlY3Rpb247CiAjZW5k
aWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uQ2xp
cFJlY3Q7CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdEVuZDsKICAgICBlbmNvZGVyIDw8IHNl
bGVjdGlvblJlY3RzOwogICAgIGVuY29kZXIgPDwgbWFya2VkVGV4dFJlY3RzOwpAQCAtMTI1LDYg
KzEyNSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uRW5kSXNBdFBh
cmFncmFwaEJvdW5kYXJ5OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIGVuY29kZXIg
PDwgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwogICAgIGVuY29kZXIgPDwgY2FuZGlkYXRlUmVxdWVz
dFN0YXJ0UG9zaXRpb247CiAgICAgZW5jb2RlciA8PCBwYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlk
YXRlUmVxdWVzdDsKICAgICBlbmNvZGVyIDw8IHN0cmluZ0ZvckNhbmRpZGF0ZVJlcXVlc3Q7CkBA
IC0xNDksOCArMTUwLDYgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXREYXRhJgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5mb2N1c2VkRWxlbWVudFJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHRBbGln
bm1lbnQpKQpAQCAtMTYzLDYgKzE2Miw4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25DbGlwUmVjdCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdEVu
ZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5zZWxlY3Rpb25SZWN0cykpCkBAIC0yMDUsNiArMjA2LDkgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6
UG9zdExheW91dERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXRE
YXRhJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRpbmdSZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2Fu
ZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTI3Myw4ICsyNzcsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
Y2FyZXRSZWN0QXRTdGFydCIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRSZWN0
QXRTdGFydCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoZWRpdG9yU3Rh
dGUucG9zdExheW91dERhdGEoKS5mb2N1c2VkRWxlbWVudFJlY3QgIT0gSW50UmVjdCgpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImZvY3VzZWRFbGVtZW50UmVjdCIsIGVkaXRvclN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuZm9jdXNlZEVsZW1lbnRSZWN0KTsKICAgICBpZiAoZWRpdG9yU3RhdGUu
cG9zdExheW91dERhdGEoKS5zZWxlY3RlZFRleHRMZW5ndGgpCiAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2VsZWN0ZWRUZXh0TGVuZ3RoIiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5z
ZWxlY3RlZFRleHRMZW5ndGgpOwogICAgIGlmIChlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgp
LnRleHRBbGlnbm1lbnQgIT0gTm9BbGlnbm1lbnQpCkBAIC0yODcsNiArMjg5LDggQEAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRv
clN0YXRlKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJhc2VXcml0aW5nRGlyZWN0aW9uIiwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5iYXNlV3Jp
dGluZ0RpcmVjdGlvbikpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0
aW9uQ2xpcFJlY3QgIT0gSW50UmVjdCgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNlbGVj
dGlvbkNsaXBSZWN0IiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25DbGlw
UmVjdCk7CiAgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRSZWN0QXRF
bmQgIT0gSW50UmVjdCgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNhcmV0UmVjdEF0RW5k
IiwgZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5jYXJldFJlY3RBdEVuZCk7CiAgICAgaWYg
KCFlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkK
QEAgLTMxOSw2ICszMjMsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiY2FyZXRDb2xvciIsIGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuY2FyZXRDb2xvcik7
CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGVkaXRvclN0YXRlLnBvc3RMYXlv
dXREYXRhKCkuc2VsZWN0aW9uQm91bmRpbmdSZWN0ICE9IEludFJlY3QoKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzZWxlY3Rpb25Cb3VuZGluZ1JlY3QiLCBlZGl0b3JTdGF0ZS5wb3N0TGF5
b3V0RGF0YSgpLnNlbGVjdGlvbkJvdW5kaW5nUmVjdCk7CiAgICAgaWYgKGVkaXRvclN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuY2FuZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24pCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY2FuZGlkYXRlUmVxdWVzdFN0YXJ0UG9zaXRpb24iLCBlZGl0b3JTdGF0
ZS5wb3N0TGF5b3V0RGF0YSgpLmNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uKTsKICAgICBp
ZiAoZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5wYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlk
YXRlUmVxdWVzdC5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDkz
MzZmMjZiZWY4OTFiYmEwMjY1NDJhMTM4YzcxYmU4ZjZjNTMyZDYuLmVjZTY3NjQ1NjVkMjllNTEx
YzFmMDdmYjk2NTA4MjM3ODFhNWVkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApA
QCAtODIsNyArODIsNiBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IGNhcmV0UmVjdEF0U3RhcnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgV2ViQ29yZTo6SW50UmVjdCBmb2N1c2VkRWxlbWVudFJlY3Q7CiAgICAgICAgIHVpbnQ2
NF90IHNlbGVjdGVkVGV4dExlbmd0aCB7IDAgfTsKICAgICAgICAgdWludDMyX3QgdGV4dEFsaWdu
bWVudCB7IE5vQWxpZ25tZW50IH07CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIHRleHRDb2xvciB7
IFdlYkNvcmU6OkNvbG9yOjpibGFjayB9OwpAQCAtOTAsNiArODksNyBAQCBzdHJ1Y3QgRWRpdG9y
U3RhdGUgewogICAgICAgICBXZWJDb3JlOjpXcml0aW5nRGlyZWN0aW9uIGJhc2VXcml0aW5nRGly
ZWN0aW9uIHsgV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlvbjo6TmF0dXJhbCB9OwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25DbGlwUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVuZDsKICAg
ICAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzOwogICAg
ICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gbWFya2VkVGV4dFJlY3RzOwpAQCAt
MTEyLDYgKzExMiw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIGJvb2wgc2VsZWN0
aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5IHsgZmFsc2UgfTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25Cb3VuZGluZ1JlY3Q7
CiAgICAgICAgIHVpbnQ2NF90IGNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uIHsgMCB9Owog
ICAgICAgICBTdHJpbmcgcGFyYWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3Q7CiAgICAg
ICAgIFN0cmluZyBzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdUZXN0aW5nTWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdUZXN0aW5nTWFjLm1tCmluZGV4IDJk
ODQxMzI3NTJjODBiNzEyNmYzNjAzODA1YTU3YTQxZDUwNzI0MmIuLjQxZjg1ZjEzMDE0NjViZDdk
NmJhZTMxYWE0MmJkMGNjNDI2ODAzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tXZWJWaWV3VGVzdGluZ01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld1Rlc3RpbmdNYWMubW0KQEAgLTgwLDcgKzgwLDcgQEAg
LSAodm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2Up
cmVwbGFjZW1lbnRSYW5nZQogCiAtIChOU1JlY3QpX2NhbmRpZGF0ZVJlY3QKIHsKLSAgICByZXR1
cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5mb2N1c2VkRWxlbWVudFJl
Y3Q7CisgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2Vs
ZWN0aW9uQm91bmRpbmdSZWN0OwogfQogCiAtICh2b2lkKXZpZXdEaWRDaGFuZ2VFZmZlY3RpdmVB
cHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDU2MDg3NTg0YzEwNzNiNmNlNTE2YTQ4ZmJlYzUwMGE5ZmQyYjFmMzguLmJjMDk1MTY4
OWE5N2QzYTdiMGFjNDQxMDA3YTdmZTZmYWRhZTQ4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpoYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKE5TSW50ZWdlciBzZXF1ZW5jZU51
bWJlciwgTlNBcnJheTxOUwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgTlNSYW5nZSBzZWxl
Y3RlZFJhbmdlID0gTlNNYWtlUmFuZ2UocG9zdExheW91dERhdGEuY2FuZGlkYXRlUmVxdWVzdFN0
YXJ0UG9zaXRpb24sIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkVGV4dExlbmd0aCk7Ci0gICAgV2Vi
Q29yZTo6SW50UmVjdCBvZmZzZXRTZWxlY3Rpb25SZWN0ID0gcG9zdExheW91dERhdGEuZm9jdXNl
ZEVsZW1lbnRSZWN0OworICAgIFdlYkNvcmU6OkludFJlY3Qgb2Zmc2V0U2VsZWN0aW9uUmVjdCA9
IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkJvdW5kaW5nUmVjdDsKICAgICBvZmZzZXRTZWxlY3Rp
b25SZWN0Lm1vdmUoMCwgb2Zmc2V0U2VsZWN0aW9uUmVjdC5oZWlnaHQoKSk7CiAKICAgICBbY2Fu
ZGlkYXRlTGlzdFRvdWNoQmFySXRlbSgpIHNldENhbmRpZGF0ZXM6Y2FuZGlkYXRlcyBmb3JTZWxl
Y3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2UgaW5TdHJpbmc6cG9zdExheW91dERhdGEucGFyYWdyYXBo
Q29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QgcmVjdDpvZmZzZXRTZWxlY3Rpb25SZWN0IHZpZXc6
bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCA0M2E1ZWQ2NTIwZGFkYTBhNDlhYzYwZGU1NTBiODIxMmQwNjhkZWU1Li5jNjM5
ZTBhYjk1YTNmMjU5MDhlMTllOTQzYTU0OWQzMTE0ZjRiMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTIxNSw3ICsyMTUsNyBAQCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlvbkRyYXdp
bmdJbmZvKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKICAgICBhdXRvJiBwb3N0TGF5
b3V0RGF0YSA9IGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCk7CiAgICAgY2FyZXRSZWN0ID0g
cG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQ7CiAgICAgc2VsZWN0aW9uUmVjdHMgPSBwb3N0
TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0czsKLSAgICBzZWxlY3Rpb25DbGlwUmVjdCA9IHBvc3RM
YXlvdXREYXRhLmZvY3VzZWRFbGVtZW50UmVjdDsKKyAgICBzZWxlY3Rpb25DbGlwUmVjdCA9IHBv
c3RMYXlvdXREYXRhLnNlbGVjdGlvbkNsaXBSZWN0OwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8mIGEsIGNvbnN0IFdLU2VsZWN0aW9uRHJh
d2luZ0luZm8mIGIpCkBAIC0yMDU2LDEzICsyMDU2LDEzIEBAIC0gKFVJVmlldyAqKWlucHV0Vmll
d0ZvcldlYlZpZXcKIAogLSAoQ0dSZWN0KV9zZWxlY3Rpb25DbGlwUmVjdAogewotICAgIGlmICgh
c2VsZi5faGFzRm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBDR1JlY3ROdWxsOwotCiAg
ICAgaWYgKF9wYWdlLT53YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJG
b2N1c2luZ0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmludGVyYWN0aW9uUmVjdDsKIAotICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5w
b3N0TGF5b3V0RGF0YSgpLmZvY3VzZWRFbGVtZW50UmVjdDsKKyAgICBpZiAoIV9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uQ2xpcFJlY3QuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxl
Y3Rpb25DbGlwUmVjdDsKKworICAgIHJldHVybiBDR1JlY3ROdWxsOwogfQogCiBzdGF0aWMgQk9P
TCBpc0J1aWx0SW5TY3JvbGxWaWV3R2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXpl
ciAqcmVjb2duaXplcikKQEAgLTY1ODYsNyArNjU4Niw3IEBAIC0gKHZvaWQpX3VwZGF0ZVNlbGVj
dGlvbkFzc2lzdGFudFN1cHByZXNzaW9uU3RhdGUKICAgICAgICAgICAgIGVkaXRhYmxlUm9vdElz
VHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZCA9IFlFUzsKIAogICAgICAgICBpZiAoc2VsZi5faGFz
Rm9jdXNlZEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudEFyZWEgPSBwb3N0TGF5
b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKTsKKyAgICAg
ICAgICAgIGF1dG8gZWxlbWVudEFyZWEgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25DbGlwUmVj
dC5hcmVhPFJlY29yZE92ZXJmbG93PigpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50QXJlYS5o
YXNPdmVyZmxvd2VkKCkgJiYgZWxlbWVudEFyZWEgPCBtaW5pbXVtRm9jdXNlZEVsZW1lbnRBcmVh
Rm9yU3VwcHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnQpCiAgICAgICAgICAgICAgICAgZm9jdXNl
ZEVsZW1lbnRJc1Rvb1NtYWxsID0gWUVTOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGYwNWVmMzg0Yzhh
OGRjN2M1ZDkzNTNiYmMyOTk0MWNlZDgzYmI3MTUuLjlmZDFmZDM5ZDgyZjU4ODg0MjViNzFlNjM5
ODBlZjQ3N2IwOTZkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMTIsMTYgKzMxMiwxNiBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAogICAgIHBvc3RMYXlvdXREYXRhLmluc2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5v
ZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gfHwgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbjsK
ICAgICBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBpZiAobV9mb2N1c2VkRWxl
bWVudCAmJiBtX2ZvY3VzZWRFbGVtZW50LT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogVGhlIGNhcmV0IGNvbG9yIHN0eWxlIHNob3VsZCBiZSBjb21wdXRlZCB1c2luZyB0aGUg
c2VsZWN0aW9uIGNhcmV0J3MgY29udGFpbmVyCisgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0
aGUgZm9jdXNlZCBlbGVtZW50LiBUaGlzIGNhdXNlcyBjYXJldCBjb2xvcnMgaW4gZWRpdGFibGUg
Y2hpbGRyZW4gdG8gYmUKKyAgICAgICAgICAgIC8vIGlnbm9yZWQgaW4gZmF2b3Igb2YgdGhlIGVk
aXRpbmcgaG9zdCdzIGNhcmV0IGNvbG9yLgogICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAq
bV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LmZvY3VzZWRFbGVtZW50UmVjdCA9IHJvb3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50
KCptX2ZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0Q29s
b3IgPSBDYXJldEJhc2U6OmNvbXB1dGVDYXJldENvbG9yKHJlbmRlcmVyLnN0eWxlKCksIHJlbmRl
cmVyLmVsZW1lbnQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRF
ZGl0YWJsZSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZWRpdGFibGVSb290T3JGb3JtQ29udHJv
bCA9IG1ha2VSZWZQdHIoc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVkaXRhYmxlUm9v
dE9yRm9ybUNvbnRyb2wtPnNoYWRvd0hvc3QoKSkpCi0gICAgICAgICAgICAgICAgICAgIGVkaXRh
YmxlUm9vdE9yRm9ybUNvbnRyb2wgPSBlZGl0YWJsZVJvb3RPckZvcm1Db250cm9sLT5zaGFkb3dI
b3N0KCk7Ci0gICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEuZWRpdGFibGVSb290SXNUcmFu
c3BhcmVudE9yRnVsbHlDbGlwcGVkID0gaXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVkKCplZGl0
YWJsZVJvb3RPckZvcm1Db250cm9sKTsKLSAgICAgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0
byBlZGl0YWJsZVJvb3RPckZvcm1Db250cm9sID0gbWFrZVJlZlB0cihlbmNsb3NpbmdUZXh0Rm9y
bUNvbnRyb2woc2VsZWN0aW9uLnN0YXJ0KCkpID86IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVt
ZW50KCkpKSB7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25DbGlwUmVjdCA9
IHJvb3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHNGb3JFbGVtZW50KCplZGl0YWJsZVJvb3RPckZvcm1D
b250cm9sKTsKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmVkaXRhYmxlUm9vdElzVHJhbnNw
YXJlbnRPckZ1bGx5Q2xpcHBlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBpc1RyYW5z
cGFyZW50T3JGdWxseUNsaXBwZWQoKmVkaXRhYmxlUm9vdE9yRm9ybUNvbnRyb2wpOwogICAgICAg
ICB9CiAgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxhaW5UZXh0KHNl
bGVjdGlvbiwgcG9zdExheW91dERhdGEpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDkyOTNmZDNjZjFi
ZjM0NWVlZDUwNjlhODkwMGVlN2I0YWRhNjMzNDEuLmZmNzQwZjVmZWNkMzczMjU0MjUwOTM2ZWU4
ZDFhYTgzMGVlZmQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xNjUsMTEgKzE2NSwxMCBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAogCiAgICAgYXV0byBxdWFkcyA9IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUZXh0UXVh
ZHMoKnNlbGVjdGVkUmFuZ2UpOwogICAgIGlmICghcXVhZHMuaXNFbXB0eSgpKQotICAgICAgICBw
b3N0TGF5b3V0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRz
VG9XaW5kb3cocXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7Ci0gICAgZWxzZSB7Cisg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkJvdW5kaW5nUmVjdCA9IGZyYW1lLnZpZXco
KS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKKyAg
ICBlbHNlIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CiAgICAgICAgIC8vIFF1YWRzIHdpbGwg
YmUgZW1wdHkgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoLgotICAgICAgICBpZiAoc2VsZWN0
aW9uLmlzQ2FyZXQoKSkKLSAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmZvY3VzZWRFbGVtZW50
UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmcmFtZS5zZWxlY3Rpb24oKS5h
YnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25C
b3VuZGluZ1JlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coZnJhbWUuc2VsZWN0
aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYWFiZjNlMjNiZWFkZDlkOTc5
NTMxN2NiOWFhOTA3MTZlNjA1YzIyLi4xZjJmZDY1MDQ5ZTdmNDRjMmVkMDVkYjk3OGZkZDJhMGQ3
OWYwZWQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDgtMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvZ3JhbW1hdGljIHNlbGVjdGlvbiBvZiB0ZXh0IGlu
IGEgdGV4dCBmaWVsZCBjYXVzZXMgdGhlIGhpZ2hsaWdodCBvdmVybGF5IHRvIHNwaWxsIG91dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjQ3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NzQwNDk3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6Y2xpcFNlbGVjdGlvblZpZXdSZWN0VG9Db250
ZW50Vmlldyk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNsaXAgVUlLaXQg
c2VsZWN0aW9uIFVJIHJlY3RzIChmb3IgY2FyZXRzLCBzZWxlY3Rpb24gZ3JhYmJlcnMsIGFuZCBy
YW5nZWQgc2VsZWN0aW9uCisgICAgICAgIGhpZ2hsaWdodHMpIHRvIHRoZSBjb250ZW50IHZpZXcn
cyAoV0tDb250ZW50VmlldydzKSBib3VuZHMsIGFzIHdlbGwgYXMgdGhlIHNlbGVjdGlvbiBjbGlw
IHJlY3QgaWYgaXQgaXMgbm9ubnVsbC4KKworICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXJJT1M6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0IGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QgY29u
c3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbGVjdGlvbkNhcmV0
Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNl
bGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKwogMjAyMC0wOC0yMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFVuYWJsZSB0byBj
b3B5IHRleHQgZnJvbSB0aGUgZnVuY3Rpb24gYnJvd3NlciBwYW5lbCBpbiBOdW1iZXJzCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMzI5MGI2MWY5OTM0ZjU3Y2RmMjI4OWZkODU4OWNlM2JiM2IxNjk5ZC4uZGM0NDYzNDEz
MjdiYzU0MTI1Njc3ODM2ZjJlYWUxNDQ4ODFjZjcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNzkwLDI0ICs3OTAs
MzQgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjp0ZXh0U2VsZWN0aW9uQ2Fy
ZXRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anND
b250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeSh3ZWJWaWV3
KCkuX3VpVGV4dENhcmV0UmVjdCkgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0ds
b2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxw
dHIpOwogfQogCitzdGF0aWMgdm9pZCBjbGlwU2VsZWN0aW9uVmlld1JlY3RUb0NvbnRlbnRWaWV3
KENHUmVjdCYgcmVjdCwgVUlWaWV3ICpjb250ZW50VmlldykKK3sKKyAgICByZWN0ID0gQ0dSZWN0
SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJvdW5kcywgcmVjdCk7CisgICAgLy8gVGhlIGNvbnRl
bnQgdmlldyAoYSBXS0NvbnRlbnRWaWV3IGluIFdlYktpdCkgaXMgZXhwZWN0ZWQgdG8gaW1wbGVt
ZW50IHRoZSBvcHRpb25hbCBVSVRleHRJbnB1dFByaXZhdGUgbWV0aG9kIC1fc2VsZWN0aW9uQ2xp
cFJlY3QuCisgICAgQVNTRVJUKFtjb250ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9zZWxlY3Rpb25DbGlwUmVjdCldKTsKKyAgICBhdXRvIHNlbGVjdGlvbkNsaXBSZWN0ID0g
WyhVSVZpZXcgPFVJVGV4dElucHV0UHJpdmF0ZT4gKiljb250ZW50VmlldyBfc2VsZWN0aW9uQ2xp
cFJlY3RdOworICAgIGlmICghQ0dSZWN0SXNOdWxsKHNlbGVjdGlvbkNsaXBSZWN0KSkKKyAgICAg
ICAgcmVjdCA9IENHUmVjdEludGVyc2VjdGlvbihzZWxlY3Rpb25DbGlwUmVjdCwgcmVjdCk7Cit9
CisKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2VsZWN0aW9uU3RhcnRHcmFi
YmVyVmlld1JlY3QoKSBjb25zdAogewogICAgIFVJVmlldyAqY29udGVudFZpZXcgPSBwbGF0Zm9y
bUNvbnRlbnRWaWV3KCk7CiAgICAgVUlWaWV3ICpzZWxlY3Rpb25SYW5nZVZpZXcgPSBbY29udGVu
dFZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rpb25Bc3Npc3RhbnQuc2VsZWN0aW9uVmll
dy5yYW5nZVZpZXciXTsKLSAgICBhdXRvIGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBbc2Vs
ZWN0aW9uUmFuZ2VWaWV3IGNvbnZlcnRSZWN0Oltbc2VsZWN0aW9uUmFuZ2VWaWV3IHZhbHVlRm9y
S2V5UGF0aDpAInN0YXJ0R3JhYmJlciJdIGZyYW1lXSB0b1ZpZXc6Y29udGVudFZpZXddOwotICAg
IGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oY29udGVudFZp
ZXcuYm91bmRzLCBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzKTsKKyAgICBhdXRvIGZyYW1lSW5D
b250ZW50Vmlld0Nvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpb
W3NlbGVjdGlvblJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJzdGFydEdyYWJiZXIiXSBmcmFt
ZV0gdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBjbGlwU2VsZWN0aW9uVmlld1JlY3RUb0NvbnRl
bnRWaWV3KGZyYW1lSW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzLCBjb250ZW50Vmlldyk7CiAgICAg
YXV0byBqc0NvbnRleHQgPSBtX2NvbnRleHQtPmpzQ29udGV4dCgpOwotICAgIHJldHVybiBKU1Zh
bHVlVG9PYmplY3QoanNDb250ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rp
b25hcnkoZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29u
dGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0
cik7CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChqc0NvbnRleHQsIFtKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShmcmFtZUluQ29udGVudFZpZXdDb29yZGluYXRlcykg
aW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6anNDb250
ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29u
dHJvbGxlcklPUzo6c2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkgY29uc3QKIHsKICAgICBV
SVZpZXcgKmNvbnRlbnRWaWV3ID0gcGxhdGZvcm1Db250ZW50VmlldygpOwogICAgIFVJVmlldyAq
c2VsZWN0aW9uUmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVy
YWN0aW9uQXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07Ci0gICAgYXV0byBmcmFt
ZUluQ29udGVudENvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpb
W3NlbGVjdGlvblJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJlbmRHcmFiYmVyIl0gZnJhbWVd
IHRvVmlldzpjb250ZW50Vmlld107Ci0gICAgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IENH
UmVjdEludGVyc2VjdGlvbihjb250ZW50Vmlldy5ib3VuZHMsIGZyYW1lSW5Db250ZW50Q29vcmRp
bmF0ZXMpOworICAgIGF1dG8gZnJhbWVJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMgPSBbc2VsZWN0
aW9uUmFuZ2VWaWV3IGNvbnZlcnRSZWN0Oltbc2VsZWN0aW9uUmFuZ2VWaWV3IHZhbHVlRm9yS2V5
UGF0aDpAImVuZEdyYWJiZXIiXSBmcmFtZV0gdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBjbGlw
U2VsZWN0aW9uVmlld1JlY3RUb0NvbnRlbnRWaWV3KGZyYW1lSW5Db250ZW50Vmlld0Nvb3JkaW5h
dGVzLCBjb250ZW50Vmlldyk7CiAgICAgYXV0byBqc0NvbnRleHQgPSBtX2NvbnRleHQtPmpzQ29u
dGV4dCgpOwotICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250ZXh0LCBbSlNWYWx1ZSB2
YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcykg
aW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6anNDb250
ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChq
c0NvbnRleHQsIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShmcmFtZUlu
Q29udGVudFZpZXdDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhK
U0dsb2JhbENvbnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAK
IEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVj
dCgpIGNvbnN0CkBAIC04MTUsNiArODI1LDcgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9s
bGVySU9TOjpzZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKICAgICBVSVZpZXcgKmNvbnRl
bnRWaWV3ID0gcGxhdGZvcm1Db250ZW50VmlldygpOwogICAgIFVJVmlldyAqY2FyZXRWaWV3ID0g
W2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVyYWN0aW9uQXNzaXN0YW50LnNlbGVj
dGlvblZpZXcuY2FyZXRWaWV3Il07CiAgICAgYXV0byByZWN0SW5Db250ZW50Vmlld0Nvb3JkaW5h
dGVzID0gQ0dSZWN0SW50ZXJzZWN0aW9uKFtjYXJldFZpZXcgY29udmVydFJlY3Q6Y2FyZXRWaWV3
LmJvdW5kcyB0b1ZpZXc6Y29udGVudFZpZXddLCBjb250ZW50Vmlldy5ib3VuZHMpOworICAgIGNs
aXBTZWxlY3Rpb25WaWV3UmVjdFRvQ29udGVudFZpZXcocmVjdEluQ29udGVudFZpZXdDb29yZGlu
YXRlcywgY29udGVudFZpZXcpOwogICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0
LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnRvTlNEaWN0aW9uYXJ5KHJl
Y3RJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRX
aXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVm
LCBudWxscHRyKTsKIH0KIApAQCAtODI3LDYgKzgzOCw3IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0
Q29udHJvbGxlcklPUzo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25zdAogICAgIGZvciAo
aWQgdGV4dFJlY3RJbmZvIGluIHRleHRSZWN0SW5mb0FycmF5KSB7CiAgICAgICAgIE5TVmFsdWUg
KnJlY3RWYWx1ZSA9IFt0ZXh0UmVjdEluZm8gdmFsdWVGb3JLZXlQYXRoOkAicmVjdCJdOwogICAg
ICAgICBhdXRvIHJhbmdlUmVjdEluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IFtyYW5nZVZpZXcg
Y29udmVydFJlY3Q6cmVjdFZhbHVlLkNHUmVjdFZhbHVlIHRvVmlldzpjb250ZW50Vmlld107Cisg
ICAgICAgIGNsaXBTZWxlY3Rpb25WaWV3UmVjdFRvQ29udGVudFZpZXcocmFuZ2VSZWN0SW5Db250
ZW50Vmlld0Nvb3JkaW5hdGVzLCBjb250ZW50Vmlldyk7CiAgICAgICAgIFtyZWN0c0FzRGljdGlv
bmFyaWVzIGFkZE9iamVjdDp0b05TRGljdGlvbmFyeShDR1JlY3RJbnRlcnNlY3Rpb24ocmFuZ2VS
ZWN0SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzLCBjb250ZW50Vmlldy5ib3VuZHMpKV07CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwgW0pT
VmFsdWUgdmFsdWVXaXRoT2JqZWN0OnJlY3RzQXNEaWN0aW9uYXJpZXMuZ2V0KCkgaW5Db250ZXh0
OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0Nv
bnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhMjkzOGQxNTI2ZjgzMzY1
ZDk0NTVlZWY1OTRjNzI0MTI4MTRjODIuLjE1YWVkYmVmMTBjMmNjMmQxNzBkZDcwODUxYzQ2ZTk5
NGNjNzA3ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wOC0yMyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9ncmFtbWF0aWMgc2VsZWN0
aW9uIG9mIHRleHQgaW4gYSB0ZXh0IGZpZWxkIGNhdXNlcyB0aGUgaGlnaGxpZ2h0IG92ZXJsYXkg
dG8gc3BpbGwgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU2NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NDA0OTc5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3NlbGVjdC1hbGwtaW4tcmVhZG9ubHktaW5wdXQtZG9lcy1ub3Qtb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFs
bC1pbi1yZWFkb25seS1pbnB1dC1kb2VzLW5vdC1vdmVyZmxvdy5odG1sOiBBZGRlZC4KKworICAg
ICAgICBBZGQgYSBuZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgdGhlIHdpZHRoIG9mIHRo
ZSBzZWxlY3Rpb24gdmlldyBkb2VzIG5vdCBleGNlZWQgdGhlIHdpZHRoIG9mIHRoZSByZWFkb25s
eQorICAgICAgICBpbnB1dCBjb250YWluaW5nIHRoZSBzZWxlY3RlZCB0ZXh0LgorCisgICAgICAg
ICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5hc3lu
YyB3YWl0Rm9yU2VsZWN0aW9uVG9BcHBlYXIpOgorCisgICAgICAgIEFkanVzdCB0aGlzIFVJSGVs
cGVyIGZ1bmN0aW9uIHRvIGFkZGl0aW9uYWxseSByZXNvbHZlIHRvIHRoZSBzZWxlY3Rpb24gcmVj
dHMsIHNvIHRoYXQgaXQgd29uJ3QgYmUgbmVjZXNzYXJ5IGZvcgorICAgICAgICBjYWxsZXJzIHRv
IGFzayBmb3IgdGhlIHNlbGVjdGlvbiB2aWV3IHJlY3RzIHNlcGFyYXRlbHkgYWZ0ZXIgd2FpdGlu
ZyBmb3Igc2VsZWN0aW9uIHZpZXdzIHRvIGFwcGVhci4KKwogMjAyMC0wOC0yMSAgQWxleGV5IFNo
dmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgQWxpZ24gImxlbmd0aCIg
cHJvcGVydGllcyBvZiBmdW5jdGlvbiBwcm90b3R5cGVzIHdpdGggdGhlIHNwZWMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3QtYWxsLWluLXJlYWRv
bmx5LWlucHV0LWRvZXMtbm90LW92ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3QtYWxsLWluLXJlYWRvbmx5LWlucHV0LWRvZXMtbm90
LW92ZXJmbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDYxOTE3OWQ0Mzg2NjIwMjM1YzBh
ZWE2MDZhMzgxM2M4YmZiMWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1hbGwtaW4tcmVhZG9ubHktaW5wdXQtZG9lcy1ub3Qtb3Zl
cmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IHNlbGVjdGlvbiB2aWV3cyBhcmUgY2xpcHBlZCB0byB0aGUgYm91bmRzIG9mIGEgcmVhZG9u
bHkgaW5wdXQuIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgdGFwIHRoZSAnU2VsZWN0JyBidXR0
b24sIGFuZCB0aGVuIHRhcCB0aGUgaW5wdXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHNlbGVjdGlvblJlY3RzLmxlbmd0aCBpcyAxCitQQVNTIGlucHV0LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLndpZHRoIGlzID49IHNlbGVjdGlvblJlY3RzWzBdLndpZHRoCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1hbGwtaW4tcmVhZG9u
bHktaW5wdXQtZG9lcy1ub3Qtb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9zZWxlY3QtYWxsLWluLXJlYWRvbmx5LWlucHV0LWRvZXMtbm90LW92ZXJmbG93
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzQyM2I3MTJiMDg3YWYwMTE4N2JkNTMwOTU4NDBiZjQzNGNlODc0
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9z
ZWxlY3QtYWxsLWluLXJlYWRvbmx5LWlucHV0LWRvZXMtbm90LW92ZXJmbG93Lmh0bWwKQEAgLTAs
MCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8
c3R5bGU+CitpbnB1dCwgYnV0dG9uIHsKKyAgICBmb250LXNpemU6IDE2cHg7CisgICAgd2lkdGg6
IDEyMHB4OworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2PgorICAgIDxpbnB1dCByZWFkb25seSB2YWx1ZT0iTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3VyYWJpdHVyIHNl
ZCBsYW9yZWV0IGVyYXQuIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0LiBWZXN0aWJ1
bHVtIHRyaXN0aXF1ZSwgbGFjdXMgc2VkIHBlbGxlbnRlc3F1ZSB2ZWhpY3VsYSwgcHVydXMgcXVh
bSBpbnRlcmR1bSBzYXBpZW4sIHBoYXJldHJhIG1vbGVzdGllIGFudGUgbmliaCB1dCB2ZWxpdC4g
Vml2YW11cyBldSBsYWN1cyBlc3QuIFByb2luIGF0IGFyY3UgdmVsIHVybmEgaWFjdWxpcyBjb21t
b2RvLiBTZWQgdHJpc3RpcXVlIG5pc2wgbmVjIHRvcnRvciBtb2xlc3RpZSBhbGlxdWV0LiI+Cisg
ICAgPGJ1dHRvbj5TZWxlY3Q8L2J1dHRvbj4KKzwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gdmlld3MgYXJlIGNs
aXBwZWQgdG8gdGhlIGJvdW5kcyBvZiBhIHJlYWRvbmx5IGlucHV0LiBUbyBtYW51YWxseSBydW4g
dGhlIHRlc3QsIHRhcCB0aGUgJ1NlbGVjdCcgYnV0dG9uLCBhbmQgdGhlbiB0YXAgdGhlIGlucHV0
LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGFzeW5jICgpID0+IHsKKyAgICBpbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0
Iik7CisgICAgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYnV0dG9uIik7CisgICAg
YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4geworICAgICAgICBpbnB1dC5z
ZWxlY3QoKTsKKyAgICB9KTsKKworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChidXR0b24pOwor
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChpbnB1dCk7CisgICAgc2VsZWN0aW9u
UmVjdHMgPSBhd2FpdCBVSUhlbHBlci53YWl0Rm9yU2VsZWN0aW9uVG9BcHBlYXIoKTsKKworICAg
IHNob3VsZEJlKCJzZWxlY3Rpb25SZWN0cy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJpbnB1dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCIsICJz
ZWxlY3Rpb25SZWN0c1swXS53aWR0aCIpOworCisgICAgaW5wdXQucmVtb3ZlKCk7CisgICAgYnV0
dG9uLnJlbW92ZSgpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5q
cwppbmRleCBlZGEwODlhOWY4YzM1OWUxM2I5MmYzNWI5YmNhMmE4MjIxNDdiZDVlLi5kYTRhZDcw
NGYwYjc1NGUxOGQ3OWIxZTljNjI2MjBmNDJlZmFjYTdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMKQEAgLTEyNDMsOCArMTI0Myw5IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJ
SGVscGVyIHsKIAogICAgIHN0YXRpYyBhc3luYyB3YWl0Rm9yU2VsZWN0aW9uVG9BcHBlYXIoKSB7
CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoKGF3YWl0IHRoaXMuZ2V0
VUlTZWxlY3Rpb25WaWV3UmVjdHMoKSkubGVuZ3RoID4gMCkKLSAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGxldCBzZWxlY3Rpb25SZWN0cyA9IGF3YWl0IHRoaXMuZ2V0VUlTZWxl
Y3Rpb25WaWV3UmVjdHMoKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0cy5sZW5ndGgg
PiAwKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0czsKICAgICAgICAgfQog
ICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>