<?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>112461</bug_id>
          
          <creation_ts>2013-03-15 13:15:50 -0700</creation_ts>
          <short_desc>[GTK] Switch ContextMenu implementation to CROSS_PLATFORM_CONTEXT_MENU</short_desc>
          <delta_ts>2017-03-11 10:56:23 -0800</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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesus Sanchez-Palencia">jesus</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856229</commentid>
    <comment_count>0</comment_count>
      <attachid>193364</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-03-15 13:15:50 -0700</bug_when>
    <thetext>Created attachment 193364
WIP patch (missing Changelog)

GTK could switch to cross platform context menu implementation and reduce Context Menu related code significantly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856248</commentid>
    <comment_count>1</comment_count>
      <attachid>193364</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-03-15 13:28:54 -0700</bug_when>
    <thetext>Comment on attachment 193364
WIP patch (missing Changelog)

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

&gt; Source/WebCore/platform/gtk/ContextMenuItemGtk.cpp:146
&gt; +    //if (!gtk_action_get_accel_path(action))

After this patch, on MiniBrowser (WK2) I can see the Context Menu items being rendered properly but when I click on them nothing happens. If I uncomment this early return, though, the check for gtk_action_get_accel_path(action) always fail. Thus, early returning here. I couldn&apos;t find what could have broken this &quot;accel_path&quot;, since I couldn&apos;t find the analog gtk setter function (gtk_action_SET_accel_path) being called anywhere...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856571</commentid>
    <comment_count>2</comment_count>
      <attachid>193364</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-03-16 08:50:53 -0700</bug_when>
    <thetext>Comment on attachment 193364
WIP patch (missing Changelog)

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

&gt;&gt; Source/WebCore/platform/gtk/ContextMenuItemGtk.cpp:146
&gt;&gt; +    //if (!gtk_action_get_accel_path(action))
&gt; 
&gt; After this patch, on MiniBrowser (WK2) I can see the Context Menu items being rendered properly but when I click on them nothing happens. If I uncomment this early return, though, the check for gtk_action_get_accel_path(action) always fail. Thus, early returning here. I couldn&apos;t find what could have broken this &quot;accel_path&quot;, since I couldn&apos;t find the analog gtk setter function (gtk_action_SET_accel_path) being called anywhere...

I have a theory: I believe in the previous implementation the GtkMenuItem object would have been created when you get here, and would have caused the action to get an accel path set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857079</commentid>
    <comment_count>3</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-03-18 07:10:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I have a theory: I believe in the previous implementation the GtkMenuItem object would have been created when you get here, and would have caused the action to get an accel path set.

But it would have had its accel path set, right? I can&apos;t find any call to gtk_action_set_accel_path(), assuming this was the right function to be called... (I have close to 0 experience with GTK =/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857117</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-03-18 07:58:01 -0700</bug_when>
    <thetext>Right, my theory is the creation of a widget (like the menu item that gets created without this patch) attached to the action causes the accel path to be set as a side-effect, that means you won&apos;t find a set call inside WebKit, it&apos;s being done inside GTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865778</commentid>
    <comment_count>5</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-03-28 14:10:23 -0700</bug_when>
    <thetext>I have put some more investigation into this. The problem is that after this patch we are not keeping a GtkMenu* anywhere anymore and we should create it on demand. WebKitGTK&apos;s design relys too much in WebCore creating and keeping this pointer inside ContextMenu. The same goes to ContextMenuItem and GtkMenuItem*.

I did have some progress there, but I&apos;ve reached a point that my lack of time to understand Gtk and GObject specificities prevent me of going on. At least not without risking WebKitGTK+&apos;s API implementation. =/

It would be better if someone from the GTK port could look into this when he/she have enough free time for it.

Thanks for helping!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193364</attachid>
            <date>2013-03-15 13:15:50 -0700</date>
            <delta_ts>2013-03-16 08:50:53 -0700</delta_ts>
            <desc>WIP patch (missing Changelog)</desc>
            <filename>0001-WIP-Make-GTK-use-USE-CROSS_PLATFORM_CONTEXT_MENUS.patch</filename>
            <type>text/plain</type>
            <size>23973</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">RnJvbSBlZmIxNzM0ZmNiNDJjMmQ0NTY5NjYwNmMwYzczODkwOGU0ZTA3OGU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhIDxqZXN1cy5wYWxlbmNp
YUBvcGVuYm9zc2Eub3JnPgpEYXRlOiBGcmksIDE1IE1hciAyMDEzIDE0OjAxOjI5IC0wMzAwClN1
YmplY3Q6IFtQQVRDSF0gV0lQOiBNYWtlIEdUSyB1c2UgVVNFKENST1NTX1BMQVRGT1JNX0NPTlRF
WFRfTUVOVVMpCgotLS0KIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAg
ICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVu
dUl0ZW0uaCAgICAgICAgICB8ICAgNyAtCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbi5oICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NvbnRleHRNZW51R3RrLmNwcCAgICAgfCAgOTAgKystLS0tLS0tLQogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgfCAxODMgKysrKystLS0tLS0tLS0t
LS0tLS0tCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCAg
ICB8ICAxMyArLQogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5o
ICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cCAgICAgICAgIHwgICA0ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmNwcCAgICB8ICAgNiArLQogLi4uL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQ
cm94eUd0ay5jcHAgICAgICAgfCAgMTAgKy0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
Q29udGV4dE1lbnVQcm94eUd0ay5oIHwgICAyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNl
cnRpb25zKCspLCAyNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYmQzZmNjOS4uYTlh
NDAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDUsNyArOTQ1LDcgQEAKICNkZWZpbmUgV1RGX1VTRV9Q
TEFURk9STV9TVFJBVEVHSUVTIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBM
QVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBXVEZfVVNFX0NST1NTX1BMQVRG
T1JNX0NPTlRFWFRfTUVOVVMgMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDNkNGEwNzIuLmEzMWMxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNTQ0Myw3ICs1NDQzLDkgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nvb2tpZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggYmUzY2ZkMy4uODE1Yzk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTM5LDcg
KzM5LDYgQEAgT0JKQ19DTEFTUyBOU01lbnVJdGVtOwogI2VsaWYgUExBVEZPUk0oV0lOKQogdHlw
ZWRlZiBzdHJ1Y3QgdGFnTUVOVUlURU1JTkZPVyBNRU5VSVRFTUlORk87CiAjZWxpZiBQTEFURk9S
TShHVEspCi10eXBlZGVmIHN0cnVjdCBfR3RrTWVudUl0ZW0gR3RrTWVudUl0ZW07CiB0eXBlZGVm
IHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsKICNlbGlmIFBMQVRGT1JNKFdYKQogY2xhc3Mg
d3hNZW51SXRlbTsKQEAgLTE5Nyw4ICsxOTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgY2hlY2tlZDsKICAgICAgICAgYm9vbCBlbmFibGVkOwogICAgIH07Ci0jZWxpZiBQ
TEFURk9STShHVEspCi0gICAgdHlwZWRlZiBHdGtNZW51SXRlbSogUGxhdGZvcm1NZW51SXRlbURl
c2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oV1gpCiAgICAgc3RydWN0IFBsYXRmb3JtTWVudUl0
ZW1EZXNjcmlwdGlvbiB7CiAgICAgICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbigpCkBA
IC0yNDEsMTAgKzIzOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNl
dFN1Yk1lbnUoQ29udGV4dE1lbnUqKTsKIAotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgR3Rr
QWN0aW9uKiBndGtBY3Rpb24oKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgVVNFKENST1NTX1BMQVRG
T1JNX0NPTlRFWFRfTUVOVVMpCiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUFj
dGlvbiwgY29uc3QgU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQsIGNvbnN0IFZl
Y3RvcjxDb250ZXh0TWVudUl0ZW0+JiBzdWJNZW51SXRlbXMpOwogICAgICAgICBleHBsaWNpdCBD
b250ZXh0TWVudUl0ZW0oY29uc3QgUGxhdGZvcm1Db250ZXh0TWVudUl0ZW0mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCmluZGV4IGJh
ZTMzOWEuLmUzODVlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtTWVudURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24uaApAQCAtMzIsNiArMzIsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJs
ZUFycmF5OwogI2luY2x1ZGUgPHFsaXN0Lmg+CiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVm
IHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwordHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVtIEd0
a01lbnVJdGVtOwogI2VsaWYgUExBVEZPUk0oV1gpCiBjbGFzcyB3eE1lbnU7CiAjZW5kaWYKQEAg
LTQ0LDggKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VsaWYgUExBVEZPUk0oUVQpCiAg
ICAgY2xhc3MgQ29udGV4dE1lbnVJdGVtOwogICAgIHR5cGVkZWYgY29uc3QgUUxpc3Q8Q29udGV4
dE1lbnVJdGVtPiogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247Ci0jZWxpZiBQTEFURk9STShHVEsp
Ci0gICAgdHlwZWRlZiBHdGtNZW51KiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbjsKICNlbGlmIFBM
QVRGT1JNKFdYKQogICAgIHR5cGVkZWYgd3hNZW51KiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbjsK
ICNlbHNlCkBAIC01Nyw2ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdHlwZWRlZiBITUVOVSBQbGF0Zm9ybUNvbnRleHRNZW51OwogICAgIHR5cGVk
ZWYgTUVOVUlURU1JTkZPIFBsYXRmb3JtQ29udGV4dE1lbnVJdGVtOworI2VsaWYgUExBVEZPUk0o
R1RLKQorICAgIHR5cGVkZWYgR3RrTWVudSogUGxhdGZvcm1Db250ZXh0TWVudTsKKyAgICB0eXBl
ZGVmIEd0a01lbnVJdGVtKiBQbGF0Zm9ybUNvbnRleHRNZW51SXRlbTsKICNlbHNlCiAgICAgdHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybUNvbnRleHRNZW51OwogICAgIHR5cGVkZWYgdm9pZCogUGxhdGZv
cm1Db250ZXh0TWVudUl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ29udGV4dE1lbnVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRl
eHRNZW51R3RrLmNwcAppbmRleCA4YzAwMmM0Li41OTQyOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKQEAgLTIzLDEwMyArMjMsMzkgQEAK
IAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNvbnRleHRNZW51OjpDb250ZXh0TWVudSgpCitDb250ZXh0TWVudTo6Q29udGV4dE1lbnUo
UGxhdGZvcm1Db250ZXh0TWVudSBtZW51KQogewotICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9
IEdUS19NRU5VKGd0a19tZW51X25ldygpKTsKKyAgICBnZXRDb250ZXh0TWVudUl0ZW1zKG1lbnUs
IG1faXRlbXMpOwogfQogCi1Db250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gbWVudSkKLSAgICA6IG1fcGxhdGZvcm1EZXNjcmlwdGlvbihtZW51KQor
dm9pZCBDb250ZXh0TWVudTo6Z2V0Q29udGV4dE1lbnVJdGVtcyhQbGF0Zm9ybUNvbnRleHRNZW51
LCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYpCiB7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotQ29udGV4dE1lbnU6On5Db250ZXh0TWVudSgpCi17Ci0gICAgaWYgKG1fcGxhdGZvcm1EZXNj
cmlwdGlvbikKLSAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKSk7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4
dE1lbnVJdGVtJiBpdGVtKQotewotICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwot
Ci0gICAgR1JlZlB0cjxHdGtXaWRnZXQ+IHBsYXRmb3JtSXRlbSA9IEdUS19XSURHRVQoaXRlbS5y
ZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKLSAgICBBU1NFUlQocGxhdGZvcm1JdGVtKTsK
LQotICAgIGlmIChHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3BhcmVudChwbGF0
Zm9ybUl0ZW0uZ2V0KCkpKQotICAgICAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJ
TkVSKHBhcmVudCksIHBsYXRmb3JtSXRlbS5nZXQoKSk7Ci0KLSAgICBndGtfbWVudV9zaGVsbF9h
cHBlbmQoR1RLX01FTlVfU0hFTEwobV9wbGF0Zm9ybURlc2NyaXB0aW9uKSwgcGxhdGZvcm1JdGVt
LmdldCgpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3cocGxhdGZvcm1JdGVtLmdldCgpKTsKLX0KLQot
dm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBtZW51KQotewotICAgIEFTU0VSVChtZW51KTsKLSAgICBpZiAobV9wbGF0Zm9ybURl
c2NyaXB0aW9uID09IG1lbnUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9wbGF0Zm9ybURl
c2NyaXB0aW9uKQotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChtX3BsYXRm
b3JtRGVzY3JpcHRpb24pKTsKLQotICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IG1lbnU7Ci19
Ci0KLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0
aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwotfQotCi1Q
bGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRmb3JtRGVzY3Jp
cHRpb24oKQotewotICAgIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gbV9w
bGF0Zm9ybURlc2NyaXB0aW9uOwotICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7Ci0KLSAg
ICByZXR1cm4gZGVzY3JpcHRpb247Ci19Ci0KLXVuc2lnbmVkIENvbnRleHRNZW51OjppdGVtQ291
bnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24pOwotCi0gICAg
R093blB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NP
TlRBSU5FUihtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSk7Ci0gICAgcmV0dXJuIGdfbGlzdF9sZW5n
dGgoY2hpbGRyZW4uZ2V0KCkpOwotfQotCi1WZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBjb250ZXh0
TWVudUl0ZW1WZWN0b3IoY29uc3QgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gbWVudSkKLXsKLSAg
ICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBtZW51SXRlbVZlY3RvcjsKLQotICAgIEdPd25QdHI8
R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIo
bWVudSkpKTsKLSAgICBpbnQgaXRlbUNvdW50ID0gZ19saXN0X2xlbmd0aChjaGlsZHJlbi5nZXQo
KSk7Ci0gICAgbWVudUl0ZW1WZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGl0ZW1Db3VudCk7Ci0KLSAg
ICBmb3IgKEdMaXN0KiBpdGVtID0gY2hpbGRyZW4uZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX2xpc3Rf
bmV4dChpdGVtKSkgewotICAgICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IHN0YXRpY19jYXN0PEd0
a1dpZGdldCo+KGl0ZW0tPmRhdGEpOwotICAgICAgICBpZiAoIUdUS19JU19NRU5VX0lURU0od2lk
Z2V0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtZW51SXRlbVZlY3Rvci5hcHBl
bmQoR1RLX01FTlVfSVRFTSh3aWRnZXQpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVudUl0ZW1W
ZWN0b3I7Ci19Ci0KLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHBsYXRmb3JtTWVudURlc2NyaXB0
aW9uKFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBzdWJNZW51SXRlbXMpCitQbGF0Zm9ybUNvbnRl
eHRNZW51IENvbnRleHRNZW51OjpjcmVhdGVQbGF0Zm9ybUNvbnRleHRNZW51RnJvbUl0ZW1zKGNv
bnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKIHsKICAgICBHdGtNZW51KiBtZW51
ID0gR1RLX01FTlUoZ3RrX21lbnVfbmV3KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3ViTWVudUl0ZW1zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEd0a1dpZGdldCogcGxhdGZvcm1J
dGVtID0gR1RLX1dJREdFVChzdWJNZW51SXRlbXNbaV0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRp
b24oKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewor
ICAgICAgICBHdGtXaWRnZXQqIHBsYXRmb3JtSXRlbSA9IEdUS19XSURHRVQoaXRlbXNbaV0ucGxh
dGZvcm1Db250ZXh0TWVudUl0ZW0oKSk7CiAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChH
VEtfTUVOVV9TSEVMTChtZW51KSwgcGxhdGZvcm1JdGVtKTsKICAgICAgICAgZ3RrX3dpZGdldF9z
aG93KHBsYXRmb3JtSXRlbSk7CiAgICAgfQogICAgIHJldHVybiBtZW51OwogfQogCitQbGF0Zm9y
bUNvbnRleHRNZW51IENvbnRleHRNZW51OjpwbGF0Zm9ybUNvbnRleHRNZW51KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY3JlYXRlUGxhdGZvcm1Db250ZXh0TWVudUZyb21JdGVtcyhtX2l0ZW1zKTsK
K30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCmluZGV4IGQ3MGI1
YmUuLjhhY2Y5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250
ZXh0TWVudUl0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250
ZXh0TWVudUl0ZW1HdGsuY3BwCkBAIC0xMTksMTY4ICsxMTksNjEgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGd0a1N0b2NrSURGcm9tQ29udGV4dE1lbnVBY3Rpb24oY29uc3QgQ29udGV4dE1lbnVBY3Rp
b24mIGFjdGkKICAgICB9CiB9CiAKLXN0YXRpYyBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24g
Y3JlYXRlUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKENvbnRleHRNZW51SXRlbVR5cGUgdHlw
ZSwgQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVu
YWJsZWQsIGJvb2wgY2hlY2tlZCkKLXsKLSAgICBpZiAodHlwZSA9PSBTZXBhcmF0b3JUeXBlKQot
ICAgICAgICByZXR1cm4gR1RLX01FTlVfSVRFTShndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXco
KSk7Ci0KLSAgICBHT3duUHRyPGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJkdXBfcHJpbnRmKCJjb250
ZXh0LW1lbnUtYWN0aW9uLSVkIiwgYWN0aW9uKSk7Ci0gICAgR1JlZlB0cjxHdGtBY3Rpb24+IHBs
YXRmb3JtQWN0aW9uOwotCi0gICAgaWYgKHR5cGUgPT0gQ2hlY2thYmxlQWN0aW9uVHlwZSkgewot
ICAgICAgICBwbGF0Zm9ybUFjdGlvbiA9IGFkb3B0R1JlZihHVEtfQUNUSU9OKGd0a190b2dnbGVf
YWN0aW9uX25ldyhhY3Rpb25OYW1lLmdldCgpLCB0aXRsZS51dGY4KCkuZGF0YSgpLCAwLCBndGtT
dG9ja0lERnJvbUNvbnRleHRNZW51QWN0aW9uKGFjdGlvbikpKSk7Ci0gICAgICAgIGd0a190b2dn
bGVfYWN0aW9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04ocGxhdGZvcm1BY3Rpb24uZ2V0
KCkpLCBjaGVja2VkKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcGxhdGZvcm1BY3Rpb24gPSBhZG9w
dEdSZWYoZ3RrX2FjdGlvbl9uZXcoYWN0aW9uTmFtZS5nZXQoKSwgdGl0bGUudXRmOCgpLmRhdGEo
KSwgMCwgZ3RrU3RvY2tJREZyb21Db250ZXh0TWVudUFjdGlvbihhY3Rpb24pKSk7Ci0gICAgZ3Rr
X2FjdGlvbl9zZXRfc2Vuc2l0aXZlKHBsYXRmb3JtQWN0aW9uLmdldCgpLCBlbmFibGVkKTsKLQot
ICAgIEd0a01lbnVJdGVtKiBpdGVtID0gR1RLX01FTlVfSVRFTShndGtfYWN0aW9uX2NyZWF0ZV9t
ZW51X2l0ZW0ocGxhdGZvcm1BY3Rpb24uZ2V0KCkpKTsKLSAgICBnX29iamVjdF9zZXRfZGF0YShH
X09CSkVDVChpdGVtKSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT04sIEdJTlRfVE9fUE9JTlRF
UihhY3Rpb24pKTsKLQotICAgIHJldHVybiBpdGVtOwotfQotCiAvLyBFeHRyYWN0IHRoZSBBY3Rp
b25UeXBlIGZyb20gdGhlIG1lbnUgaXRlbQotQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0
ZW0oUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIGl0ZW0pCi0gICAgOiBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24oaXRlbSkKLXsKK0NvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKGNvbnN0
IFBsYXRmb3JtQ29udGV4dE1lbnVJdGVtJiBpdGVtKQorICAgIDogbV90eXBlKFNlcGFyYXRvclR5
cGUpCisgICAgLCBtX2FjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbikKKyAgICAsIG1f
dGl0bGUoU3RyaW5nKCkpCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2NoZWNrZWQo
ZmFsc2UpCit7CisgICAgaWYgKEdUS19JU19TRVBBUkFUT1JfTUVOVV9JVEVNKGl0ZW0pKQorICAg
ICAgICBtX3R5cGUgPSBTZXBhcmF0b3JUeXBlOworICAgIGVsc2UgaWYgKEdUS19JU19DSEVDS19N
RU5VX0lURU0oaXRlbSkpCisgICAgICAgIG1fdHlwZSA9IENoZWNrYWJsZUFjdGlvblR5cGU7Cisg
ICAgZWxzZSBpZiAoZ3RrX21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtKSkKKyAgICAgICAgbV90
eXBlID0gU3VibWVudVR5cGU7CisgICAgZWxzZSB7CisgICAgICAgIG1fdHlwZSA9IEFjdGlvblR5
cGU7CisgICAgICAgIG1fYWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KEdQ
T0lOVEVSX1RPX0lOVChnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChpdGVtKSwgV0VCS0lUX0NP
TlRFWFRfTUVOVV9BQ1RJT04pKSk7CisgICAgfQorCiAgICAgLy8gRG9uJ3Qgc2hvdyBhY2NlbCBs
YWJlbHMgaW4gY29udGV4dCBtZW51IGl0ZW1zLgotICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3Rr
QWN0aW9uKCk7CisgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSBndGtfYWN0aXZhdGFibGVfZ2V0X3Jl
bGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShpdGVtKSk7CiAgICAgaWYgKCFhY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghZ3RrX2FjdGlvbl9nZXRfYWNjZWxfcGF0aChhY3Rp
b24pKQotICAgICAgICByZXR1cm47CisgICAgLy9pZiAoIWd0a19hY3Rpb25fZ2V0X2FjY2VsX3Bh
dGgoYWN0aW9uKSkKKyAgICAgICAgLy9yZXR1cm47CiAKICAgICBHdGtXaWRnZXQqIGNoaWxkID0g
Z3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihpdGVtKSk7CiAgICAgaWYgKEdUS19JU19BQ0NFTF9M
QUJFTChjaGlsZCkpCiAgICAgICAgIGd0a19hY2NlbF9sYWJlbF9zZXRfYWNjZWxfY2xvc3VyZShH
VEtfQUNDRUxfTEFCRUwoY2hpbGQpLCAwKTsKLX0KIAotQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0
TWVudUl0ZW0oQ29udGV4dE1lbnUqIHN1Yk1lbnUpCi17Ci0gICAgbV9wbGF0Zm9ybURlc2NyaXB0
aW9uID0gR1RLX01FTlVfSVRFTShndGtfbWVudV9pdGVtX25ldygpKTsKLSAgICBpZiAoc3ViTWVu
dSkKLSAgICAgICAgc2V0U3ViTWVudShzdWJNZW51KTsKKyAgICBtX3RpdGxlID0gU3RyaW5nOjpm
cm9tVVRGOChndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pKTsKKyAgICBtX2NoZWNrZWQgPSBH
VEtfSVNfVE9HR0xFX0FDVElPTihhY3Rpb24pID8gZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2
ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSA6IGZhbHNlOworICAgIG1fZW5hYmxlZCA9IGd0
a19hY3Rpb25fZ2V0X3NlbnNpdGl2ZShhY3Rpb24pOwogfQogCi1Db250ZXh0TWVudUl0ZW06OkNv
bnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENvbnRleHRNZW51QWN0aW9u
IGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29udGV4dE1lbnUqIHN1Yk1lbnUpCitQbGF0
Zm9ybUNvbnRleHRNZW51SXRlbSBDb250ZXh0TWVudUl0ZW06OnBsYXRmb3JtQ29udGV4dE1lbnVJ
dGVtKCkgY29uc3QKIHsKLSAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBjcmVhdGVQbGF0Zm9y
bU1lbnVJdGVtRGVzY3JpcHRpb24odHlwZSwgYWN0aW9uLCB0aXRsZSwgdHJ1ZSwgZmFsc2UpOwot
ICAgIGlmIChzdWJNZW51KQotICAgICAgICBzZXRTdWJNZW51KHN1Yk1lbnUpOwotfQotCi1Db250
ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENv
bnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVk
LCBib29sIGNoZWNrZWQpCi17Ci0gICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gY3JlYXRlUGxh
dGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKHR5cGUsIGFjdGlvbiwgdGl0bGUsIGVuYWJsZWQsIGNo
ZWNrZWQpOwotfQotCi1Db250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVu
dUFjdGlvbiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgYm9vbCBj
aGVja2VkLCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgc3ViTWVudUl0ZW1zKQotewotICAgIG1f
cGxhdGZvcm1EZXNjcmlwdGlvbiA9IGNyZWF0ZVBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbihT
dWJtZW51VHlwZSwgYWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgY2hlY2tlZCk7Ci0gICAgc2V0U3Vi
TWVudShzdWJNZW51SXRlbXMpOwotfQotCi1Db250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVudUl0
ZW0oKQotewotfQotCi1QbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVt
OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpCi17Ci0gICAgUGxhdGZvcm1NZW51SXRlbURl
c2NyaXB0aW9uIHBsYXRmb3JtRGVzY3JpcHRpb24gPSBtX3BsYXRmb3JtRGVzY3JpcHRpb247Ci0g
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gMDsKLSAgICByZXR1cm4gcGxhdGZvcm1EZXNjcmlw
dGlvbjsKLX0KLQotQ29udGV4dE1lbnVJdGVtVHlwZSBDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBj
b25zdAotewotICAgIGlmIChHVEtfSVNfU0VQQVJBVE9SX01FTlVfSVRFTShtX3BsYXRmb3JtRGVz
Y3JpcHRpb24pKQotICAgICAgICByZXR1cm4gU2VwYXJhdG9yVHlwZTsKLSAgICBpZiAoR1RLX0lT
X0NIRUNLX01FTlVfSVRFTShtX3BsYXRmb3JtRGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm4g
Q2hlY2thYmxlQWN0aW9uVHlwZTsKLSAgICBpZiAoZ3RrX21lbnVfaXRlbV9nZXRfc3VibWVudSht
X3BsYXRmb3JtRGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm4gU3VibWVudVR5cGU7Ci0gICAg
cmV0dXJuIEFjdGlvblR5cGU7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKENv
bnRleHRNZW51SXRlbVR5cGUgdHlwZSkKLXsKLSAgICBpZiAodHlwZSA9PSBTZXBhcmF0b3JUeXBl
KQotICAgICAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBHVEtfTUVOVV9JVEVNKGd0a19zZXBh
cmF0b3JfbWVudV9pdGVtX25ldygpKTsKLX0KLQotQ29udGV4dE1lbnVBY3Rpb24gQ29udGV4dE1l
bnVJdGVtOjphY3Rpb24oKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0
TWVudUFjdGlvbj4oR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKG1f
cGxhdGZvcm1EZXNjcmlwdGlvbiksIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OKSkpOwotfQot
Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRleHRNZW51QWN0aW9uIGFjdGlv
bikKLXsKLSAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtX3BsYXRmb3JtRGVzY3JpcHRp
b24pLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiwgR0lOVF9UT19QT0lOVEVSKGFjdGlvbikp
OwotfQotCi1TdHJpbmcgQ29udGV4dE1lbnVJdGVtOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgR3Rr
QWN0aW9uKiBhY3Rpb24gPSBndGtBY3Rpb24oKTsKLSAgICByZXR1cm4gYWN0aW9uID8gU3RyaW5n
Ojpmcm9tVVRGOChndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pKSA6IFN0cmluZygpOwotfQot
Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKLXsK
LSAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IGd0a0FjdGlvbigpOwotICAgIGlmIChhY3Rpb24pCi0g
ICAgICAgIGd0a19hY3Rpb25fc2V0X2xhYmVsKGFjdGlvbiwgdGl0bGUudXRmOCgpLmRhdGEoKSk7
Ci19Ci0KLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6cGxhdGZvcm1T
dWJNZW51KCkgY29uc3QKLXsKLSAgICBHdGtXaWRnZXQqIHN1Yk1lbnUgPSBndGtfbWVudV9pdGVt
X2dldF9zdWJtZW51KG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7Ci0gICAgcmV0dXJuIHN1Yk1lbnUg
PyBHVEtfTUVOVShzdWJNZW51KSA6IDA7Ci19Ci0KLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRT
dWJNZW51KENvbnRleHRNZW51KiBtZW51KQotewotICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1l
bnUobV9wbGF0Zm9ybURlc2NyaXB0aW9uLCBHVEtfV0lER0VUKG1lbnUtPnJlbGVhc2VQbGF0Zm9y
bURlc2NyaXB0aW9uKCkpKTsKLX0KLQotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUo
VmVjdG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJdGVtcykKLXsKLSAgICBDb250ZXh0TWVu
dSBtZW51KHBsYXRmb3JtTWVudURlc2NyaXB0aW9uKHN1Yk1lbnVJdGVtcykpOwotICAgIHNldFN1
Yk1lbnUoJm1lbnUpOwotfQotCi12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29s
IHNob3VsZENoZWNrKQotewotICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrQWN0aW9uKCk7Ci0g
ICAgaWYgKGFjdGlvbiAmJiBHVEtfSVNfVE9HR0xFX0FDVElPTihhY3Rpb24pKQotICAgICAgICBn
dGtfdG9nZ2xlX2FjdGlvbl9zZXRfYWN0aXZlKEdUS19UT0dHTEVfQUNUSU9OKGFjdGlvbiksIHNo
b3VsZENoZWNrKTsKLX0KKyAgICBpZiAobV90eXBlID09IFNlcGFyYXRvclR5cGUpCisgICAgICAg
IHJldHVybiBHVEtfTUVOVV9JVEVNKGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldygpKTsKIAot
Ym9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAotewotICAgIEd0a0FjdGlvbiog
YWN0aW9uID0gZ3RrQWN0aW9uKCk7Ci0gICAgaWYgKGFjdGlvbiAmJiBHVEtfSVNfVE9HR0xFX0FD
VElPTihhY3Rpb24pKQotICAgICAgICByZXR1cm4gZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2
ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CisgICAg
R093blB0cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVwX3ByaW50ZigiY29udGV4dC1tZW51LWFj
dGlvbi0lZCIsIG1fYWN0aW9uKSk7CisgICAgR1JlZlB0cjxHdGtBY3Rpb24+IHBsYXRmb3JtQWN0
aW9uOwogCi1ib29sIENvbnRleHRNZW51SXRlbTo6ZW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgR3Rr
QWN0aW9uKiBhY3Rpb24gPSBndGtBY3Rpb24oKTsKLSAgICByZXR1cm4gYWN0aW9uID8gZ3RrX2Fj
dGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbikgOiBmYWxzZTsKLX0KKyAgICBpZiAobV90eXBlID09
IENoZWNrYWJsZUFjdGlvblR5cGUpIHsKKyAgICAgICAgcGxhdGZvcm1BY3Rpb24gPSBhZG9wdEdS
ZWYoR1RLX0FDVElPTihndGtfdG9nZ2xlX2FjdGlvbl9uZXcoYWN0aW9uTmFtZS5nZXQoKSwgbV90
aXRsZS51dGY4KCkuZGF0YSgpLCAwLCBndGtTdG9ja0lERnJvbUNvbnRleHRNZW51QWN0aW9uKG1f
YWN0aW9uKSkpKTsKKyAgICAgICAgZ3RrX3RvZ2dsZV9hY3Rpb25fc2V0X2FjdGl2ZShHVEtfVE9H
R0xFX0FDVElPTihwbGF0Zm9ybUFjdGlvbi5nZXQoKSksIG1fY2hlY2tlZCk7CisgICAgfSBlbHNl
CisgICAgICAgIHBsYXRmb3JtQWN0aW9uID0gYWRvcHRHUmVmKGd0a19hY3Rpb25fbmV3KGFjdGlv
bk5hbWUuZ2V0KCksIG1fdGl0bGUudXRmOCgpLmRhdGEoKSwgMCwgZ3RrU3RvY2tJREZyb21Db250
ZXh0TWVudUFjdGlvbihtX2FjdGlvbikpKTsKKyAgICBndGtfYWN0aW9uX3NldF9zZW5zaXRpdmUo
cGxhdGZvcm1BY3Rpb24uZ2V0KCksIG1fZW5hYmxlZCk7CiAKLXZvaWQgQ29udGV4dE1lbnVJdGVt
OjpzZXRFbmFibGVkKGJvb2wgc2hvdWxkRW5hYmxlKQotewotICAgIEd0a0FjdGlvbiogYWN0aW9u
ID0gZ3RrQWN0aW9uKCk7Ci0gICAgaWYgKGFjdGlvbikKLSAgICAgICAgZ3RrX2FjdGlvbl9zZXRf
c2Vuc2l0aXZlKGFjdGlvbiwgc2hvdWxkRW5hYmxlKTsKLX0KKyAgICBHdGtNZW51SXRlbSogaXRl
bSA9IEdUS19NRU5VX0lURU0oZ3RrX2FjdGlvbl9jcmVhdGVfbWVudV9pdGVtKHBsYXRmb3JtQWN0
aW9uLmdldCgpKSk7CisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoaXRlbSksIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OLCBHSU5UX1RPX1BPSU5URVIobV9hY3Rpb24pKTsKIAotR3Rr
QWN0aW9uKiBDb250ZXh0TWVudUl0ZW06Omd0a0FjdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FDVElWQVRBQkxFKG1fcGxh
dGZvcm1EZXNjcmlwdGlvbikpOworICAgIHJldHVybiBpdGVtOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0
ay5jcHAKaW5kZXggZTBjM2VkOS4uOWMwNmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcApAQCAtNjQs
MTIgKzY0LDExIEBAIHN0YXRpYyBHdGtXaWRnZXQqIGlucHV0TWV0aG9kc01lbnVJdGVtIChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3LT5wcml2OwogICAgIENvbnRleHRNZW51IGltQ29udGV4dE1lbnU7Ci0gICAgZ3RrX2lt
X211bHRpY29udGV4dF9hcHBlbmRfbWVudWl0ZW1zKEdUS19JTV9NVUxUSUNPTlRFWFQocHJpdi0+
aW1GaWx0ZXIuY29udGV4dCgpKSwgR1RLX01FTlVfU0hFTEwoaW1Db250ZXh0TWVudS5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkpKTsKKyAgICBndGtfaW1fbXVsdGljb250ZXh0X2FwcGVuZF9tZW51aXRl
bXMoR1RLX0lNX01VTFRJQ09OVEVYVChwcml2LT5pbUZpbHRlci5jb250ZXh0KCkpLCBHVEtfTUVO
VV9TSEVMTChpbUNvbnRleHRNZW51LnBsYXRmb3JtQ29udGV4dE1lbnUoKSkpOwogCiAgICAgQ29u
dGV4dE1lbnVJdGVtIG1lbnVJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0lucHV0
TWV0aG9kcywgY29udGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzKCksICZpbUNvbnRleHRNZW51
KTsKLSAgICBpbUNvbnRleHRNZW51LnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiAKLSAg
ICByZXR1cm4gR1RLX1dJREdFVChtZW51SXRlbS5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigp
KTsKKyAgICByZXR1cm4gR1RLX1dJREdFVChtZW51SXRlbS5wbGF0Zm9ybUNvbnRleHRNZW51SXRl
bSgpKTsKIH0KIAogc3RhdGljIGludCBnZXRVbmljb2RlTWVudUl0ZW1Qb3NpdGlvbihHdGtNZW51
KiBtZW51KQpAQCAtOTAsOSArODksOSBAQCBzdGF0aWMgaW50IGdldFVuaWNvZGVNZW51SXRlbVBv
c2l0aW9uKEd0a01lbnUqIG1lbnUpCiAgICAgcmV0dXJuIHVuaWNvZGVNZW51SXRlbVBvc2l0aW9u
OwogfQogCi1QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3Vz
dG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUpCitQYXNzT3duUHRyPENv
bnRleHRNZW51PiBDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9taXplTWVudShQYXNzT3duUHRyPENv
bnRleHRNZW51PiBtZW51KQogewotICAgIEd0a01lbnUqIGd0a21lbnUgPSBtZW51LT5yZWxlYXNl
UGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIEd0a01lbnUqIGd0a21lbnUgPSBtZW51LT5wbGF0
Zm9ybUNvbnRleHRNZW51KCk7CiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJW
aWV3OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY29yZSh3ZWJWaWV3KS0+Y29udGV4dE1l
bnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKTsKQEAgLTEwMCw3ICs5OSw3IEBAIFBsYXRm
b3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURl
ZmF1bHRJdGVtcyhDb250ZXh0CiAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CiAgICAgICAgIEd0a1dpZGdldCogaW1Db250ZXh0TWVudSA9IGlucHV0TWV0aG9kc01lbnVJdGVt
KHdlYlZpZXcpOwogICAgICAgICBpZiAoIWltQ29udGV4dE1lbnUpCi0gICAgICAgICAgICByZXR1
cm4gZ3RrbWVudTsKKyAgICAgICAgICAgIHJldHVybiBtZW51OwogCiAgICAgICAgIC8vIFBsYWNl
IHRoZSBpbSBjb250ZXh0IG1lbnUgaXRlbSByaWdodCBiZWZvcmUgdGhlIHVuaWNvZGUgbWVudSBp
dGVtCiAgICAgICAgIC8vIGlmIGl0J3MgcHJlc2VudC4KQEAgLTExNSw3ICsxMTQsNyBAQCBQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMoQ29udGV4dAogICAgICAgICBndGtfd2lkZ2V0X3Nob3coaW1Db250ZXh0TWVu
dSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGd0a21lbnU7CisgICAgcmV0dXJuIG1lbnU7CiB9CiAK
IHZvaWQgQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRN
ZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oCmluZGV4IGQ2Nzc0YjUu
LjUyOTAxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nv
bnRleHRNZW51Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAot
ICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsYXRmb3JtTWVudURlc2NyaXB0aW9uIGdldEN1c3Rv
bU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CisgICAgICAgIHZp
cnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNz
T3duUHRyPFdlYkNvcmU6OkNvbnRleHRNZW51Pik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJD
b3JlOjpDb250ZXh0TWVudSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDY0MDNhZDcuLjFlY2I5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdl
YlZpZXcqIHdlYlZpZQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAgIHJldHVybiBtb3VzZVBy
ZXNzRXZlbnRSZXN1bHQ7CiAKLSAgICBHdGtNZW51KiBkZWZhdWx0TWVudSA9IGNvcmVNZW51LT5w
bGF0Zm9ybURlc2NyaXB0aW9uKCk7CisgICAgR3RrTWVudSogZGVmYXVsdE1lbnUgPSBjb3JlTWVu
dS0+cGxhdGZvcm1Db250ZXh0TWVudSgpOwogICAgIEFTU0VSVChkZWZhdWx0TWVudSk7CiAKICAg
ICAvLyBXZSBjb25uZWN0IHRoZSAiYWN0aXZhdGUiIHNpZ25hbCBoZXJlIHJhdGhlciB0aGFuIGlu
IENvbnRleHRNZW51R3RrIHRvIGF2b2lkCkBAIC01NDI0LDcgKzU0MjQsNyBAQCBHdGtNZW51KiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHRfbWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIENvbnRleHRNZW51KiBtZW51ID0gY29yZSh3ZWJWaWV3KS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCktPmNvbnRleHRNZW51KCk7CiAgICAgaWYgKCFtZW51KQogICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gbWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIHJldHVybiBtZW51
LT5wbGF0Zm9ybUNvbnRleHRNZW51KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcAppbmRleCBkOThjYzU0Li4zOGJjZDNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRl
bS5jcHAKQEAgLTE0NSwxMSArMTQ1LDExIEBAIEd0a01lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVu
dUl0ZW1SZWxlYXNlKFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICBpZiAoaXRlbS0+
cHJpdi0+c3ViTWVudSkgewogICAgICAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBzdWJNZW51
SXRlbXM7CiAgICAgICAgIHdlYmtpdENvbnRleHRNZW51UG9wdWxhdGUoaXRlbS0+cHJpdi0+c3Vi
TWVudS5nZXQoKSwgc3ViTWVudUl0ZW1zKTsKLSAgICAgICAgQ29udGV4dE1lbnUgc3ViTWVudShw
bGF0Zm9ybU1lbnVEZXNjcmlwdGlvbihzdWJNZW51SXRlbXMpKTsKKyAgICAgICAgQ29udGV4dE1l
bnUgc3ViTWVudShDb250ZXh0TWVudTo6Y3JlYXRlUGxhdGZvcm1Db250ZXh0TWVudUZyb21JdGVt
cyhzdWJNZW51SXRlbXMpKTsKICAgICAgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0tPnNldFN1Yk1l
bnUoJnN1Yk1lbnUpOwogICAgIH0KIAotICAgIHJldHVybiBpdGVtLT5wcml2LT5tZW51SXRlbS0+
cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICByZXR1cm4gaXRlbS0+cHJpdi0+bWVu
dUl0ZW0tPnBsYXRmb3JtQ29udGV4dE1lbnVJdGVtKCk7CiB9CiAKIC8qKgpAQCAtMjczLDcgKzI3
Myw3IEBAIEd0a0FjdGlvbiogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oV2Vi
S2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtKSwgMCk7CiAKLSAgICByZXR1cm4gaXRlbS0+
cHJpdi0+bWVudUl0ZW0tPmd0a0FjdGlvbigpOworICAgIHJldHVybiBndGtfYWN0aXZhdGFibGVf
Z2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShpdGVtLT5wcml2LT5tZW51SXRlbS0+
cGxhdGZvcm1Db250ZXh0TWVudUl0ZW0oKSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCmluZGV4
IGVkMmI0ZGYuLmE1YjBlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0
aWMgdm9pZCBjb250ZXh0TWVudUl0ZW1WaXNpYmlsaXR5Q2hhbmdlZChHdGtBY3Rpb24qIGFjdGlv
biwgR1BhcmFtU3BlYyosIFdlYgogCiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OmFwcGVu
ZChDb250ZXh0TWVudUl0ZW0mIG1lbnVJdGVtKQogewotICAgIEd0a0FjdGlvbiogYWN0aW9uID0g
bWVudUl0ZW0uZ3RrQWN0aW9uKCk7CisgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSBndGtfYWN0aXZh
dGFibGVfZ2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShtZW51SXRlbS5wbGF0Zm9y
bUNvbnRleHRNZW51SXRlbSgpKSk7CiAgICAgaWYgKGFjdGlvbikgewogICAgICAgICBzd2l0Y2gg
KG1lbnVJdGVtLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFjdGlvblR5cGU6CkBAIC0xNDAsNyAr
MTQwLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnUoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLAogICAgIGlmICghaXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICBwb3B1bGF0ZShpdGVtcyk7CiAKLSAgICBpZiAoIW1fbWVudS5pdGVtQ291bnQo
KSkKKyAgICBpZiAoIW1fbWVudS5pdGVtcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9wb3B1cFBvc2l0aW9uID0gY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dl
YlZpZXcsIHBvc2l0aW9uKTsKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eUd0azo6c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3Np
dGlvbiwKICAgICAvLyBEaXNwbGF5IG1lbnUgaW5pdGlhdGVkIGJ5IHJpZ2h0IGNsaWNrIChtb3Vz
ZSBidXR0b24gcHJlc3NlZCA9IDMpLgogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIG1vdXNlRXZl
bnQgPSBtX3BhZ2UtPmN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CiAgICAgY29u
c3QgR2RrRXZlbnQqIGV2ZW50ID0gbW91c2VFdmVudCA/IG1vdXNlRXZlbnQtPm5hdGl2ZUV2ZW50
KCkgOiAwOwotICAgIGd0a19tZW51X2F0dGFjaF90b193aWRnZXQobV9tZW51LnBsYXRmb3JtRGVz
Y3JpcHRpb24oKSwgR1RLX1dJREdFVChtX3dlYlZpZXcpLCAwKTsKLSAgICBndGtfbWVudV9wb3B1
cChtX21lbnUucGxhdGZvcm1EZXNjcmlwdGlvbigpLCAwLCAwLCByZWludGVycHJldF9jYXN0PEd0
a01lbnVQb3NpdGlvbkZ1bmM+KG1lbnVQb3NpdGlvbkZ1bmN0aW9uKSwgdGhpcywKKyAgICBndGtf
bWVudV9hdHRhY2hfdG9fd2lkZ2V0KG1fbWVudS5wbGF0Zm9ybUNvbnRleHRNZW51KCksIEdUS19X
SURHRVQobV93ZWJWaWV3KSwgMCk7CisgICAgZ3RrX21lbnVfcG9wdXAobV9tZW51LnBsYXRmb3Jt
Q29udGV4dE1lbnUoKSwgMCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHdGtNZW51UG9zaXRpb25GdW5j
PihtZW51UG9zaXRpb25GdW5jdGlvbiksIHRoaXMsCiAgICAgICAgICAgICAgICAgICAgZXZlbnQg
PyBldmVudC0+YnV0dG9uLmJ1dHRvbiA6IDMsIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi50aW1lIDog
R0RLX0NVUlJFTlRfVElNRSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6aGlk
ZUNvbnRleHRNZW51KCkKIHsKLSAgICBndGtfbWVudV9wb3Bkb3duKG1fbWVudS5wbGF0Zm9ybURl
c2NyaXB0aW9uKCkpOworICAgIGd0a19tZW51X3BvcGRvd24obV9tZW51LnBsYXRmb3JtQ29udGV4
dE1lbnUoKSk7CiB9CiAKIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJv
eHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCmlu
ZGV4IDE0NDY1NWYuLjE5Yzg3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHBvcHVs
YXRlKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+Jik7Ci0gICAgR3RrTWVudSogZ3Rr
TWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7IH0KKyAg
ICBHdGtNZW51KiBndGtNZW51KCkgY29uc3QgeyByZXR1cm4gbV9tZW51LnBsYXRmb3JtQ29udGV4
dE1lbnUoKTsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lk
Z2V0KiwgV2ViUGFnZVByb3h5Kik7Ci0tIAoxLjguMgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>