<?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>71459</bug_id>
          
          <creation_ts>2011-11-03 04:32:06 -0700</creation_ts>
          <short_desc>[GTK] Remove WebKit2 C API from MiniBrowser</short_desc>
          <delta_ts>2011-11-03 09:11:00 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71447</blocked>
    
    <blocked>71461</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495342</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-03 04:32:06 -0700</bug_when>
    <thetext>And add minimum GTK+ API to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495347</commentid>
    <comment_count>1</comment_count>
      <attachid>113461</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-03 04:38:27 -0700</bug_when>
    <thetext>Created attachment 113461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495513</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-03 09:11:00 -0700</bug_when>
    <thetext>Committed r99200: &lt;http://trac.webkit.org/changeset/99200&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113461</attachid>
            <date>2011-11-03 04:38:27 -0700</date>
            <delta_ts>2011-11-03 08:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-mb-gtk-api.diff</filename>
            <type>text/plain</type>
            <size>34182</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZjAz
ZTM5Li4xY2NlOTcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTEtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFJlbW92ZSBXZWJLaXQyIEMg
QVBJIGZyb20gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIHRoZSBHVEsrIEFQSSBpbnN0ZWFkIHRvIGFkZCBtaW5pbXVtIGZ1bmN0
aW9uYWxpdHkuIFRoZSBvdGhlcgorICAgICAgICBmZWF0dXJlcyB3aWxsIGJlIHBvcnRlZCB0byBH
VEsrIEFQSSBpbiBmb2xsb3dpbmcgcGF0Y2hlcy4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgIChhY3RpdmF0ZVVyaUVudHJ5Q2FsbGJhY2spOiBV
c2Ugd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKCkuCisgICAgICAgIChnb0JhY2tDYWxsYmFjayk6
IFVzZSB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjaygpLgorICAgICAgICAoZ29Gb3J3YXJkQ2FsbGJh
Y2spOiBVc2Ugd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoKS4KKyAgICAgICAgKHdlYlZpZXdV
UklDaGFuZ2VkKTogVXBkYXRlIGxvY2F0aW9uIGVudHJ5IHdpdGggY3VycmVudCB1cmkgdXNpbmcK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF91cmkoKS4KKyAgICAgICAgKGJyb3dzZXJXaW5k
b3dGaW5hbGl6ZSk6CisgICAgICAgIChicm93c2VyV2luZG93R2V0UHJvcGVydHkpOgorICAgICAg
ICAoYnJvd3NlcldpbmRvd1NldFByb3BlcnR5KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2lu
aXQpOgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ29ubmVjdCB0byBub3Rp
Znk6OnVyaSBzaWduYWwgb2YKKyAgICAgICAgV2ViVmlldyB0byBiZSBub3RpZmllZCB3aGVuIHRo
ZSBVUkkgY2hhbmdlcy4KKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2NsYXNzX2luaXQpOgorICAg
ICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KTogVXNlIFdlYktpdFdlYlZpZXcuCisgICAgICAgIChi
cm93c2VyX3dpbmRvd19nZXRfdmlldyk6IFVzZSBXZWJLaXRXZWJWaWV3CisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsv
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL1dlYkJ1bmRsZS9XZWJC
dW5kbGVNYWluLmM6IFJlbW92ZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoK
KyAgICAgICAgKGxvYWRVUkkpOiBVc2Ugd2Via2l0X3dlYl92aWV3X25ldygpLgorICAgICAgICAo
bWFpbik6CisKKzIwMTEtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCiAgICAgICAgIFtHVEtdIFJlbW92ZSBHdGtMYXVuY2hlcjIKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQ5CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IGU1OGI4NTUuLmNiM2Q2YWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMzgsNzMgKzM4LDYyIEBAIHN0cnVjdCBfQnJv
d3NlcldpbmRvdyB7CiAKICAgICBHdGtXaWRnZXQgKm1haW5Cb3g7CiAgICAgR3RrV2lkZ2V0ICp1
cmlFbnRyeTsKLSAgICBHdGtXaWRnZXQgKnN0YXR1c0JhcjsKICAgICBHdGtXaWRnZXQgKmJhY2tJ
dGVtOwogICAgIEd0a1dpZGdldCAqZm9yd2FyZEl0ZW07Ci0gICAgV0tWaWV3UmVmIHdlYlZpZXc7
CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKIAotICAgIGd1aW50IHN0YXR1c0JhckNvbnRl
eHRJZDsKLSAgICBXS0JhY2tGb3J3YXJkTGlzdFJlZiBoaXN0b3J5OwotCi0gICAgZ2NoYXIgKnRp
dGxlOwotICAgIGdkb3VibGUgbG9hZFByb2dyZXNzOwogfTsKIAogc3RydWN0IF9Ccm93c2VyV2lu
ZG93Q2xhc3MgewogICAgIEd0a1dpbmRvd0NsYXNzIHBhcmVudDsKIH07CiAKLXN0YXRpYyB2b2lk
IGJyb3dzZXJXaW5kb3dMb2FkZXJDbGllbnRJbml0KEJyb3dzZXJXaW5kb3cqKTsKLXN0YXRpYyB2
b2lkIGJyb3dzZXJXaW5kb3dVSUNsaWVudEluaXQoQnJvd3NlcldpbmRvdyopOwotc3RhdGljIHZv
aWQgYnJvd3NlcldpbmRvd1BvbGljeUNsaWVudEluaXQoQnJvd3NlcldpbmRvdyopOwotCiBzdGF0
aWMgZ2ludCB3aW5kb3dDb3VudCA9IDA7CiAKIEdfREVGSU5FX1RZUEUoQnJvd3NlcldpbmRvdywg
YnJvd3Nlcl93aW5kb3csIEdUS19UWVBFX1dJTkRPVykKIAotc3RhdGljIHZvaWQgYWN0aXZhdGVV
cmlFbnRyeUNhbGxiYWNrKEJyb3dzZXJXaW5kb3cqIHdpbmRvdykKK3N0YXRpYyB2b2lkIGFjdGl2
YXRlVXJpRW50cnlDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgV0tVUkxS
ZWYgdXJsID0gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoZ3RrX2VudHJ5X2dldF90ZXh0KEdU
S19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KSkpOwotICAgIFdLUGFnZUxvYWRVUkwoV0tWaWV3R2V0
UGFnZSh3aW5kb3ctPndlYlZpZXcpLCB1cmwpOwotICAgIFdLUmVsZWFzZSh1cmwpOworICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3VyaSh3aW5kb3ctPndlYlZpZXcsIGd0a19lbnRyeV9nZXRfdGV4
dChHVEtfRU5UUlkod2luZG93LT51cmlFbnRyeSkpKTsKIH0KIAotc3RhdGljIHZvaWQgZ29CYWNr
Q2FsbGJhY2soQnJvd3NlcldpbmRvdyogd2luZG93KQorc3RhdGljIHZvaWQgZ29CYWNrQ2FsbGJh
Y2soQnJvd3NlcldpbmRvdyAqd2luZG93KQogewotICAgIFdLUGFnZUdvQmFjayhXS1ZpZXdHZXRQ
YWdlKHdpbmRvdy0+d2ViVmlldykpOworICAgIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKHdpbmRv
dy0+d2ViVmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIGdvRm9yd2FyZENhbGxiYWNrKEJyb3dzZXJX
aW5kb3cqIHdpbmRvdykKK3N0YXRpYyB2b2lkIGdvRm9yd2FyZENhbGxiYWNrKEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKIHsKLSAgICBXS1BhZ2VHb0ZvcndhcmQoV0tWaWV3R2V0UGFnZSh3aW5kb3ct
PndlYlZpZXcpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZCh3aW5kb3ctPndlYlZp
ZXcpOwogfQogCi1zdGF0aWMgdm9pZCBicm93c2VyV2luZG93RmluYWxpemUoR09iamVjdCogZ09i
amVjdCkKK3N0YXRpYyB2b2lkIHdlYlZpZXdVUklDaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsICBHUGFyYW1TcGVjICpwc3BlYywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewotICAgIEJy
b3dzZXJXaW5kb3cqIHdpbmRvdyA9IEJST1dTRVJfV0lORE9XKGdPYmplY3QpOwotCi0gICAgZ19m
cmVlKHdpbmRvdy0+dGl0bGUpOworICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkod2lu
ZG93LT51cmlFbnRyeSksIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKK30KIAor
c3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmplY3QpCit7CiAg
ICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
Z09iamVjdCk7CiAKICAgICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmd2luZG93Q291
bnQpKQogICAgICAgICBndGtfbWFpbl9xdWl0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJyb3dzZXJX
aW5kb3dHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCBicm93c2VyV2luZG93R2V0UHJv
cGVydHkoR09iamVjdCAqb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSAqdmFsdWUsIEdQYXJh
bVNwZWMgKnBzcGVjKQogewotICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRvdyA9IEJST1dTRVJfV0lO
RE9XKG9iamVjdCk7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1co
b2JqZWN0KTsKIAogICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAgY2FzZSBQUk9QX1ZJRVc6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgKGdwb2ludGVyKWJyb3dzZXJfd2luZG93
X2dldF92aWV3KHdpbmRvdykpOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIGJy
b3dzZXJfd2luZG93X2dldF92aWV3KHdpbmRvdykpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSWQsIHBzcGVjKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dTZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCBicm93c2VyV2luZG93U2V0UHJvcGVy
dHkoR09iamVjdCAqb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSAqdmFsdWUsIEdQ
YXJhbVNwZWMgKnBzcGVjKQogewogICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRvdyA9IEJST1dTRVJf
V0lORE9XKG9iamVjdCk7CiAKQEAgLTExNyw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBicm93c2Vy
V2luZG93U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdW
YWx1ZQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2Vy
V2luZG93KiB3aW5kb3cpCitzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKIHsKICAgICBnX2F0b21pY19pbnRfaW5jKCZ3aW5kb3dDb3VudCk7CiAK
QEAgLTEyNywxMSArMTE2LDcgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93
c2VyV2luZG93KiB3aW5kb3cpCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHdpbmRvdy0+
dXJpRW50cnksICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soYWN0aXZhdGVVcmlFbnRyeUNhbGxiYWNr
KSwgKGdwb2ludGVyKXdpbmRvdyk7CiAKICAgICBHdGtXaWRnZXQgKnRvb2xiYXIgPSBndGtfdG9v
bGJhcl9uZXcoKTsKLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNSwgMCkKICAgICBndGtfb3Jp
ZW50YWJsZV9zZXRfb3JpZW50YXRpb24oR1RLX09SSUVOVEFCTEUodG9vbGJhciksIEdUS19PUklF
TlRBVElPTl9IT1JJWk9OVEFMKTsKLSNlbHNlCi0gICAgZ3RrX3Rvb2xiYXJfc2V0X29yaWVudGF0
aW9uKEdUS19UT09MQkFSKHRvb2xiYXIpLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7Ci0j
ZW5kaWYKICAgICBndGtfdG9vbGJhcl9zZXRfc3R5bGUoR1RLX1RPT0xCQVIodG9vbGJhciksIEdU
S19UT09MQkFSX0JPVEhfSE9SSVopOwogCiAgICAgR3RrVG9vbEl0ZW0gKml0ZW0gPSBndGtfbWVu
dV90b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfR09fQkFDSyk7CkBAIC0xNjks
MzIgKzE1NCwyMCBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5k
b3cqIHdpbmRvdykKICAgICBndGtfd2lkZ2V0X3Nob3codmJveCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0KiBnT2JqZWN0KQorc3RhdGljIHZvaWQg
YnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiB7Ci0gICAgQnJvd3Nl
cldpbmRvdyogd2luZG93ID0gQlJPV1NFUl9XSU5ET1coZ09iamVjdCk7CisgICAgQnJvd3Nlcldp
bmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1coZ09iamVjdCk7CisKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHdpbmRvdy0+d2ViVmlldywgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyh3ZWJWaWV3
VVJJQ2hhbmdlZCksIHdpbmRvdyk7CiAKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh3
aW5kb3ctPm1haW5Cb3gpLCBHVEtfV0lER0VUKHdpbmRvdy0+d2ViVmlldyksIFRSVUUsIFRSVUUs
IDApOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHdpbmRvdy0+d2ViVmlldykpOwot
Ci0gICAgd2luZG93LT5zdGF0dXNCYXIgPSBndGtfc3RhdHVzYmFyX25ldygpOwotICAgIHdpbmRv
dy0+c3RhdHVzQmFyQ29udGV4dElkID0gZ3RrX3N0YXR1c2Jhcl9nZXRfY29udGV4dF9pZChHVEtf
U1RBVFVTQkFSKHdpbmRvdy0+c3RhdHVzQmFyKSwgIkxpbmsgSG92ZXIiKTsKLSAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gpLCB3aW5kb3ctPnN0YXR1c0Jhciwg
RkFMU0UsIEZBTFNFLCAwKTsKLSAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT5zdGF0dXNCYXIp
OwotCi0gICAgd2luZG93LT5oaXN0b3J5ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KFdLVmll
d0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSk7Ci0KLSAgICBicm93c2VyV2luZG93TG9hZGVyQ2xp
ZW50SW5pdCh3aW5kb3cpOwotICAgIGJyb3dzZXJXaW5kb3dVSUNsaWVudEluaXQod2luZG93KTsK
LSAgICBicm93c2VyV2luZG93UG9saWN5Q2xpZW50SW5pdCh3aW5kb3cpOwotCi0gICAgV0tQYWdl
R3JvdXBSZWYgZ3JvdXBSZWYgPSBXS1BhZ2VHZXRQYWdlR3JvdXAoV0tWaWV3R2V0UGFnZSh3aW5k
b3ctPndlYlZpZXcpKTsKLSAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmID0gV0tQ
YWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhncm91cFJlZik7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQocHJlZmVyZW5jZXNSZWYsIHRydWUpOwogfQogCi1zdGF0aWMg
dm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19pbml0KEJyb3dzZXJXaW5kb3dDbGFzcyoga2xhc3Mp
CitzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19pbml0KEJyb3dzZXJXaW5kb3dDbGFz
cyAqa2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhrbGFzcyk7CisgICAgR09iamVjdENsYXNzICpnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhrbGFzcyk7CisKICAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gYnJvd3Nlcldp
bmRvd0NvbnN0cnVjdGVkOwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gYnJvd3Nl
cldpbmRvd0dldFByb3BlcnR5OwogICAgIGdvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gYnJv
d3NlcldpbmRvd1NldFByb3BlcnR5OwpAQCAtMjA1LDUxOCArMTc4LDIxIEBAIHN0YXRpYyB2b2lk
IGJyb3dzZXJfd2luZG93X2NsYXNzX2luaXQoQnJvd3NlcldpbmRvd0NsYXNzKiBrbGFzcykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoInZp
ZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVmlldyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaGUgd2ViIHZpZXcgb2YgdGhpcyB3aW5kb3ciLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfVFlQRV9XSURH
RVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKTsKIH0KIAotc3RhdGljIGNoYXIqIFdLU3RyaW5nR2V0Q1N0cmluZyhXS1N0
cmluZ1JlZiBzdHJpbmcpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9IFdLU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGNoYXIgKmJ1ZmZlciA9IChjaGFyICopIGdf
bWFsbG9jKGxlbmd0aCk7Ci0gICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZl
ciwgbGVuZ3RoKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1zdGF0aWMgY2hhciogV0tVUkxH
ZXRDU3RyaW5nKFdLVVJMUmVmIHVybCkKLXsKLSAgICBXS1N0cmluZ1JlZiB1cmxTdHJpbmcgPSBX
S1VSTENvcHlTdHJpbmcodXJsKTsKLSAgICBjaGFyICp1cmxUZXh0ID0gV0tTdHJpbmdHZXRDU3Ry
aW5nKHVybFN0cmluZyk7Ci0gICAgV0tSZWxlYXNlKHVybFN0cmluZyk7Ci0gICAgcmV0dXJuIHVy
bFRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dVcGRhdGVUaXRsZShCcm93c2Vy
V2luZG93KiB3aW5kb3cpCi17Ci0gICAgR1N0cmluZyAqc3RyaW5nID0gZ19zdHJpbmdfbmV3KHdp
bmRvdy0+dGl0bGUpOwotICAgIGdkb3VibGUgbG9hZFByb2dyZXNzID0gd2luZG93LT5sb2FkUHJv
Z3Jlc3MgKiAxMDA7Ci0gICAgZ19zdHJpbmdfYXBwZW5kKHN0cmluZywgIiAtIFdlYktpdCBMYXVu
Y2hlciIpOwotICAgIGlmIChsb2FkUHJvZ3Jlc3MgPCAxMDApCi0gICAgICAgIGdfc3RyaW5nX2Fw
cGVuZF9wcmludGYoc3RyaW5nLCAiICglZiUlKSIsIGxvYWRQcm9ncmVzcyk7Ci0gICAgZ2NoYXIg
KnRpdGxlID0gZ19zdHJpbmdfZnJlZShzdHJpbmcsIEZBTFNFKTsKLSAgICBndGtfd2luZG93X3Nl
dF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIHRpdGxlKTsKLSAgICBnX2ZyZWUodGl0bGUpOwot
fQotCi1zdGF0aWMgdm9pZCBicm93c2VyV2luZG93U2V0VGl0bGUoQnJvd3NlcldpbmRvdyogd2lu
ZG93LCBjb25zdCBnY2hhciogdGl0bGUpCi17Ci0gICAgaWYgKCFnX3N0cmNtcDAod2luZG93LT50
aXRsZSwgdGl0bGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnX2ZyZWUod2luZG93LT50aXRs
ZSk7Ci0gICAgd2luZG93LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlKTsKLSAgICBicm93c2VyV2lu
ZG93VXBkYXRlVGl0bGUod2luZG93KTsKLX0KLQotc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1Nl
dExvYWRQcm9ncmVzcyhCcm93c2VyV2luZG93KiB3aW5kb3csIGdkb3VibGUgcHJvZ3Jlc3MpCi17
Ci0gICAgd2luZG93LT5sb2FkUHJvZ3Jlc3MgPSBwcm9ncmVzczsKLSAgICBicm93c2VyV2luZG93
VXBkYXRlVGl0bGUod2luZG93KTsKLX0KLQotc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0
ZVVSTChCcm93c2VyV2luZG93KiB3aW5kb3csIFdLVVJMUmVmIHVybCkKLXsKLSAgICBpZiAoIXVy
bCkgewotICAgICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHdpbmRvdy0+dXJpRW50
cnkpLCAiIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjaGFyICp1cmxUZXh0ID0g
V0tVUkxHZXRDU3RyaW5nKHVybCk7Ci0gICAgZ3RrX2VudHJ5X3NldF90ZXh0KEdUS19FTlRSWSh3
aW5kb3ctPnVyaUVudHJ5KSwgdXJsVGV4dCk7Ci0gICAgZ19mcmVlKHVybFRleHQpOwotfQotCi1z
dGF0aWMgdm9pZCBicm93c2VyV2luZG93SGlzdG9yeUl0ZW1BY3RpdmF0ZWQoQnJvd3NlcldpbmRv
dyAqd2luZG93LCBHdGtBY3Rpb24gKmFjdGlvbikKLXsKLSAgICBXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgaXRlbSA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGFjdGlvbiksICJiYWNrLWZv
cndhcmQtbGlzdC1pdGVtIik7Ci0gICAgaWYgKCFpdGVtKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBXS1BhZ2VHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXS1ZpZXdHZXRQYWdlKHdpbmRvdy0+d2Vi
VmlldyksIGl0ZW0pOwotfQotCi1zdGF0aWMgdm9pZCBicm93c2VyV2luZG93SGlzdG9yeUl0ZW1T
ZWxlY3RlZChCcm93c2VyV2luZG93ICp3aW5kb3csIEd0a01lbnVJdGVtICppdGVtKQotewotICAg
IGd0a19zdGF0dXNiYXJfcG9wKEdUS19TVEFUVVNCQVIod2luZG93LT5zdGF0dXNCYXIpLCB3aW5k
b3ctPnN0YXR1c0JhckNvbnRleHRJZCk7Ci0KLSAgICBHdGtBY3Rpb24gKmFjdGlvbiA9IGd0a19h
Y3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FDVElWQVRBQkxFKGl0ZW0pKTsKLSAg
ICBpZiAoIWFjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ3RrX3N0YXR1c2Jhcl9wdXNo
KEdUS19TVEFUVVNCQVIod2luZG93LT5zdGF0dXNCYXIpLCB3aW5kb3ctPnN0YXR1c0JhckNvbnRl
eHRJZCwgZ3RrX2FjdGlvbl9nZXRfbmFtZShhY3Rpb24pKTsKLX0KLQotc3RhdGljIEd0a0FjdGlv
biAqY3JlYXRlR3RrQWN0aW9uRnJvbUJhY2tGb3J3YXJkSXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgaXRlbSkKLXsKLSAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
V0tVUkxSZWYgdXJsID0gV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChpdGVtKTsKLSAgICBj
aGFyICpuYW1lID0gV0tVUkxHZXRDU3RyaW5nKHVybCk7Ci0gICAgV0tSZWxlYXNlKHVybCk7Ci0K
LSAgICBXS1N0cmluZ1JlZiB0aXRsZSA9IFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShp
dGVtKTsKLSAgICBjaGFyICpsYWJlbCA9IFdLU3RyaW5nR2V0Q1N0cmluZyh0aXRsZSk7Ci0gICAg
V0tSZWxlYXNlKHRpdGxlKTsKLQotICAgIEd0a0FjdGlvbiAqYWN0aW9uID0gZ3RrX2FjdGlvbl9u
ZXcobmFtZSwgbGFiZWwsIDAsIDApOwotICAgIGdfZnJlZShuYW1lKTsKLSAgICBnX2ZyZWUobGFi
ZWwpOwotCi0gICAgcmV0dXJuIGFjdGlvbjsKLX0KLQotc3RhdGljIEd0a1dpZGdldCAqYnJvd3Nl
cldpbmRvd0NyZWF0ZU1lbnVJdGVtRnJvbUJhY2tGb3J3YXJkSXRlbShCcm93c2VyV2luZG93ICp3
aW5kb3csIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKQotewotICAgIEd0a0FjdGlvbiAq
YWN0aW9uID0gY3JlYXRlR3RrQWN0aW9uRnJvbUJhY2tGb3J3YXJkSXRlbShpdGVtKTsKLSAgICBp
ZiAoIWFjdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBnX29iamVjdF9zZXRfZGF0YV9m
dWxsKEdfT0JKRUNUKGFjdGlvbiksICJiYWNrLWZvcndhcmQtbGlzdC1pdGVtIiwgKGdwb2ludGVy
KVdLUmV0YWluKGl0ZW0pLCAoR0Rlc3Ryb3lOb3RpZnkpV0tSZWxlYXNlKTsKLSAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGJyb3dzZXJX
aW5kb3dIaXN0b3J5SXRlbUFjdGl2YXRlZCksIHdpbmRvdyk7Ci0KLSAgICBHdGtXaWRnZXQgKm1l
bnVJdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfbWVudV9pdGVtKGFjdGlvbik7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdF9zd2FwcGVkKG1lbnVJdGVtLCAic2VsZWN0IiwgR19DQUxMQkFDSyhicm93c2Vy
V2luZG93SGlzdG9yeUl0ZW1TZWxlY3RlZCksIHdpbmRvdyk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
YWN0aW9uKTsKLQotICAgIHJldHVybiBtZW51SXRlbTsKLX0KLQotc3RhdGljIEd0a1dpZGdldCAq
YnJvd3NlcldpbmRvd0NyZWF0ZUJhY2tGb3J3YXJkTWVudShCcm93c2VyV2luZG93ICp3aW5kb3cs
IFdLQXJyYXlSZWYgbGlzdCkKLXsKLSAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgZ3VpbnQgbGlzdENvdW50ID0gV0tBcnJheUdldFNpemUobGlzdCk7Ci0gICAgaWYgKCFs
aXN0Q291bnQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgR3RrV2lkZ2V0ICptZW51ID0gZ3Rr
X21lbnVfbmV3KCk7Ci0gICAgZ2Jvb2xlYW4gaGFzSXRlbXMgPSBGQUxTRTsKLSAgICBndWludCBp
OwotICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Q291bnQ7IGkrKykgewotICAgICAgICBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChsaXN0LCBpKTsK
LSAgICAgICAgR3RrV2lkZ2V0ICptZW51SXRlbSA9IGJyb3dzZXJXaW5kb3dDcmVhdGVNZW51SXRl
bUZyb21CYWNrRm9yd2FyZEl0ZW0od2luZG93LCBpdGVtKTsKLSAgICAgICAgaWYgKCFtZW51SXRl
bSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGd0a19tZW51X3NoZWxsX3ByZXBl
bmQoR1RLX01FTlVfU0hFTEwobWVudSksIG1lbnVJdGVtKTsKLSAgICAgICAgZ3RrX3dpZGdldF9z
aG93KG1lbnVJdGVtKTsKLSAgICAgICAgaGFzSXRlbXMgPSBUUlVFOwotICAgIH0KLQotICAgIGlm
ICghaGFzSXRlbXMpIHsKLSAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1lbnUpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVudTsKLX0KLQotc3RhdGljIHZvaWQg
YnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKEJyb3dzZXJXaW5kb3cqIHdpbmRv
dykKLXsKLSAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUod2luZG93LT5iYWNrSXRlbSwgV0tQ
YWdlQ2FuR29CYWNrKFdLVmlld0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSkpOwotICAgIGd0a193
aWRnZXRfc2V0X3NlbnNpdGl2ZSh3aW5kb3ctPmZvcndhcmRJdGVtLCBXS1BhZ2VDYW5Hb0Zvcndh
cmQoV0tWaWV3R2V0UGFnZSh3aW5kb3ctPndlYlZpZXcpKSk7Ci0KLSAgICBXS0FycmF5UmVmIGxp
c3QgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlzdFdpdGhMaW1pdCh3aW5kb3ctPmhpc3Rv
cnksIDEwKTsKLSAgICBHdGtXaWRnZXQgKm1lbnUgPSBicm93c2VyV2luZG93Q3JlYXRlQmFja0Zv
cndhcmRNZW51KHdpbmRvdywgbGlzdCk7Ci0gICAgZ3RrX21lbnVfdG9vbF9idXR0b25fc2V0X21l
bnUoR1RLX01FTlVfVE9PTF9CVVRUT04od2luZG93LT5iYWNrSXRlbSksIG1lbnUpOwotICAgIGlm
IChsaXN0KQotICAgICAgICBXS1JlbGVhc2UobGlzdCk7Ci0KLSAgICBsaXN0ID0gV0tCYWNrRm9y
d2FyZExpc3RDb3B5Rm9yd2FyZExpc3RXaXRoTGltaXQod2luZG93LT5oaXN0b3J5LCAxMCk7Ci0g
ICAgbWVudSA9IGJyb3dzZXJXaW5kb3dDcmVhdGVCYWNrRm9yd2FyZE1lbnUod2luZG93LCBsaXN0
KTsKLSAgICBndGtfbWVudV90b29sX2J1dHRvbl9zZXRfbWVudShHVEtfTUVOVV9UT09MX0JVVFRP
Tih3aW5kb3ctPmZvcndhcmRJdGVtKSwgbWVudSk7Ci0gICAgaWYgKGxpc3QpCi0gICAgICAgIFdL
UmVsZWFzZShsaXN0KTsKLX0KLQotLy8gTG9hZGVyIGNsaWVudC4KLXN0YXRpYyB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBp
ZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdL
VVJMUmVmIHVybCA9IFdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpOwotICAgIGJyb3dz
ZXJXaW5kb3dVcGRhdGVVUkwoQlJPV1NFUl9XSU5ET1coY2xpZW50SW5mbyksIHVybCk7Ci0gICAg
aWYgKHVybCkKLSAgICAgICAgV0tSZWxlYXNlKHVybCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBXS1VSTFJlZiB1cmwgPSBXS0ZyYW1lQ29weVByb3Zpc2lvbmFsVVJM
KGZyYW1lKTsKLSAgICBicm93c2VyV2luZG93VXBkYXRlVVJMKEJST1dTRVJfV0lORE9XKGNsaWVu
dEluZm8pLCB1cmwpOwotICAgIGlmICh1cmwpCi0gICAgICAgIFdLUmVsZWFzZSh1cmwpOwotfQot
Ci1zdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdLVVJMUmVmIHVybCA9
IFdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpOwotICAgIGJyb3dzZXJXaW5kb3dVcGRh
dGVVUkwoQlJPV1NFUl9XSU5ET1coY2xpZW50SW5mbyksIHVybCk7Ci0gICAgaWYgKHVybCkKLSAg
ICAgICAgV0tSZWxlYXNlKHVybCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tVUkxSZWYgdXJsID0gV0tGcmFtZUNv
cHlVUkwoZnJhbWUpOwotICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVVUkwoQlJPV1NFUl9XSU5ET1co
Y2xpZW50SW5mbyksIHVybCk7Ci0gICAgaWYgKHVybCkKLSAgICAgICAgV0tSZWxlYXNlKHVybCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAg
ICAgICByZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQnJvd3NlcldpbmRvdyogd2luZG93ID0gQlJPV1NFUl9X
SU5ET1coY2xpZW50SW5mbyk7Ci0gICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURHRVQo
d2luZG93LT53ZWJWaWV3KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJy
b3IsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBp
ZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLX0KLQotc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIHRpdGxlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFyICp0aXRsZVRleHQgPSBXS1N0cmluZ0dldENTdHJp
bmcodGl0bGUpOwotICAgIGJyb3dzZXJXaW5kb3dTZXRUaXRsZShCUk9XU0VSX1dJTkRPVyhjbGll
bnRJbmZvKSwgdGl0bGVUZXh0KTsKLSAgICBnX2ZyZWUodGl0bGVUZXh0KTsKLX0KLQotc3RhdGlj
IHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotfQotCi1z
dGF0aWMgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShm
cmFtZSkpCi0gICAgICAgIHJldHVybjsKLX0KLQotc3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVz
cyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBicm93c2Vy
V2luZG93U2V0TG9hZFByb2dyZXNzKEJST1dTRVJfV0lORE9XKGNsaWVudEluZm8pLCAwLik7Ci19
Ci0KLXN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIGJyb3dzZXJXaW5kb3dTZXRMb2FkUHJvZ3Jlc3MoQlJP
V1NFUl9XSU5ET1coY2xpZW50SW5mbyksIFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2Up
KTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgYnJvd3NlcldpbmRvd1NldExvYWRQcm9ncmVz
cyhCUk9XU0VSX1dJTkRPVyhjbGllbnRJbmZvKSwgMS4pOwotfQotCi1zdGF0aWMgdm9pZCBkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEJlY29tZVJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFk
ZGVkSXRlbSwgV0tBcnJheVJlZiByZW1vdmVkSXRlbXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Ci17Ci0gICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKEJST1dTRVJfV0lO
RE9XKGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0xvYWRlckNs
aWVudEluaXQoQnJvd3NlcldpbmRvdyogd2luZG93KQotewotICAgIFdLUGFnZUxvYWRlckNsaWVu
dCBsb2FkQ2xpZW50ID0gewotICAgICAgICBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNp
b24sCi0gICAgICAgIHdpbmRvdywgIC8qIGNsaWVudEluZm8gKi8KLSAgICAgICAgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSwKLSAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCi0gICAgICAgIGRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZSwKLSAgICAgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lLAotICAg
ICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKLSAgICAgICAgZGlkRmluaXNoTG9h
ZEZvckZyYW1lLAotICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lLAotICAgICAg
ICAwLCAgICAgICAvKiBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUgKi8KLSAgICAg
ICAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUsCi0gICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJh
bWUsCi0gICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lLAotICAg
ICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHksCi0gICAgICAgIDAsICAgICAgIC8qIGRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSAqLwotICAgICAgICAwLCAgICAgICAvKiBk
aWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSAqLwotICAgICAgICAwLCAgICAgICAvKiBjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSAqLwotICAgICAgICAwLCAg
ICAgICAvKiBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lICovCi0gICAg
ICAgIGRpZFN0YXJ0UHJvZ3Jlc3MsCi0gICAgICAgIGRpZENoYW5nZVByb2dyZXNzLAotICAgICAg
ICBkaWRGaW5pc2hQcm9ncmVzcywKLSAgICAgICAgZGlkQmVjb21lVW5yZXNwb25zaXZlLAotICAg
ICAgICBkaWRCZWNvbWVSZXNwb25zaXZlLAotICAgICAgICAwLCAgICAgICAvKiBwcm9jZXNzRGlk
Q3Jhc2ggKi8KLSAgICAgICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0LAotICAgICAgICAwLCAg
ICAgICAvKiBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSAqLwotICAgICAgICAwICAgICAg
ICAvKiBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luICovCi0gICAgfTsKLSAgICBXS1BhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLVmlld0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSwgJmxvYWRDbGll
bnQpOwotfQotCi0vLyBVSSBDbGllbnQuCi1zdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2Uo
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0RpY3Rpb25hcnlSZWYg
ZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24g
YnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIFdLVmlld1JlZiB3ZWJWaWV3
ID0gV0tWaWV3Q3JlYXRlKFdLUGFnZUdldENvbnRleHQocGFnZSksIDApOwotICAgIEJyb3dzZXJX
aW5kb3cqIHdpbmRvdyA9IEJST1dTRVJfV0lORE9XKGJyb3dzZXJfd2luZG93X25ldyh3ZWJWaWV3
KSk7Ci0gICAgcmV0dXJuIFdLUmV0YWluKFdLVmlld0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHNob3dQYWdlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKQotewotICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGNsaWVudEluZm8p
KTsKLX0KLQotc3RhdGljIHZvaWQgY2xvc2VQYWdlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKQotewotICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGNsaWVu
dEluZm8pKTsKLX0KLQotc3RhdGljIEd0a1dpZGdldCogY3JlYXRlTWVzc2FnZURpYWxvZyhHdGtX
aW5kb3cgKnBhcmVudCwgR3RrTWVzc2FnZVR5cGUgdHlwZSwgR3RrQnV0dG9uc1R5cGUgYnV0dG9u
cywgZ2ludCBkZWZhdWx0UmVzcG9uc2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUpCi17Ci0gICAgY2hhciAqbWVzc2FnZVRleHQgPSBXS1N0cmluZ0dldENTdHJpbmcobWVz
c2FnZSk7Ci0gICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KHBh
cmVudCwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULCB0eXBlLCBidXR0b25zLCAiJXMi
LCBtZXNzYWdlVGV4dCk7Ci0gICAgZ19mcmVlKG1lc3NhZ2VUZXh0KTsKLQotICAgIFdLVVJMUmVm
IHVybCA9IFdLRnJhbWVDb3B5VVJMKGZyYW1lKTsKLSAgICBjaGFyICp1cmxUZXh0ID0gV0tVUkxH
ZXRDU3RyaW5nKHVybCk7Ci0gICAgV0tSZWxlYXNlKHVybCk7Ci0gICAgZ2NoYXIgKnRpdGxlID0g
Z19zdHJkdXBfcHJpbnRmKCJKYXZhU2NyaXB0IC0gJXMiLCB1cmxUZXh0KTsKLSAgICBnX2ZyZWUo
dXJsVGV4dCk7Ci0gICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCB0
aXRsZSk7Ci0gICAgZ19mcmVlKHRpdGxlKTsKLQotICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRf
cmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBkZWZhdWx0UmVzcG9uc2UpOwotCi0gICAgcmV0
dXJuIGRpYWxvZzsKLX0KLQotc3RhdGljIHZvaWQgZm9jdXMoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NF
Ul9XSU5ET1coY2xpZW50SW5mbyk7Ci0gICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURH
RVQod2luZG93LT53ZWJWaWV3KSk7Ci19IAotCi1zdGF0aWMgdm9pZCB1bmZvY3VzKFdLUGFnZVJl
ZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIEJyb3dzZXJXaW5kb3cgKndp
bmRvdyA9IEJST1dTRVJfV0lORE9XKGNsaWVudEluZm8pOwotICAgIGlmIChndGtfd2lkZ2V0X2lz
X3RvcGxldmVsKEdUS19XSURHRVQod2luZG93KSkpCi0gICAgICAgIGd0a193aW5kb3dfc2V0X2Zv
Y3VzKEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7Ci19IAotCi1zdGF0aWMgdm9pZCBydW5KYXZh
U2NyaXB0QWxlcnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgR3RrV2lkZ2V0ICpkaWFs
b2cgPSBjcmVhdGVNZXNzYWdlRGlhbG9nKEdUS19XSU5ET1coY2xpZW50SW5mbyksIEdUS19NRVNT
QUdFX1dBUk5JTkcsIEdUS19CVVRUT05TX0NMT1NFLCBHVEtfUkVTUE9OU0VfQ0xPU0UsIG1lc3Nh
Z2UsIGZyYW1lKTsKLSAgICBndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpOwotICAg
IGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwotfQotCi1zdGF0aWMgYm9vbCBydW5KYXZhU2Ny
aXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBHdGtXaWRnZXQgKmRpYWxv
ZyA9IGNyZWF0ZU1lc3NhZ2VEaWFsb2coR1RLX1dJTkRPVyhjbGllbnRJbmZvKSwgR1RLX01FU1NB
R0VfUVVFU1RJT04sIEdUS19CVVRUT05TX09LX0NBTkNFTCwgR1RLX1JFU1BPTlNFX09LLCBtZXNz
YWdlLCBmcmFtZSk7Ci0gICAgYm9vbCByZXR1cm5WYWx1ZSA9IChndGtfZGlhbG9nX3J1bihHVEtf
RElBTE9HKGRpYWxvZykpID09IEdUS19SRVNQT05TRV9PSyk7Ci0gICAgZ3RrX3dpZGdldF9kZXN0
cm95KGRpYWxvZyk7Ci0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci19Ci0KLXN0YXRpYyBXS1N0
cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBjcmVhdGVNZXNz
YWdlRGlhbG9nKEdUS19XSU5ET1coY2xpZW50SW5mbyksIEdUS19NRVNTQUdFX1FVRVNUSU9OLCBH
VEtfQlVUVE9OU19PS19DQU5DRUwsIEdUS19SRVNQT05TRV9PSywgbWVzc2FnZSwgZnJhbWUpOwot
Ci0gICAgR3RrV2lkZ2V0ICplbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBjaGFyICp2YWx1
ZSA9IFdLU3RyaW5nR2V0Q1N0cmluZyhkZWZhdWx0VmFsdWUpOwotICAgIGd0a19lbnRyeV9zZXRf
dGV4dChHVEtfRU5UUlkoZW50cnkpLCB2YWx1ZSk7Ci0gICAgZ19mcmVlKHZhbHVlKTsKLSAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJl
YShHVEtfRElBTE9HKGRpYWxvZykpKSwgZW50cnkpOwotICAgIGd0a19lbnRyeV9zZXRfYWN0aXZh
dGVzX2RlZmF1bHQoR1RLX0VOVFJZKGVudHJ5KSwgVFJVRSk7Ci0gICAgZ3RrX3dpZGdldF9zaG93
KGVudHJ5KTsKLQotICAgIFdLU3RyaW5nUmVmIHJldHVyblZhbHVlID0gKGd0a19kaWFsb2dfcnVu
KEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09LKSA/IFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoZW50cnkpKSkgOiAw
OwotICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwotCi0gICAgcmV0dXJuIHJldHVyblZh
bHVlOwotfQotCi1zdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXS1BhZ2VSZWYg
cGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17
Ci0gICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1coY2xpZW50SW5mbyk7
Ci0gICAgZ3RrX3N0YXR1c2Jhcl9wb3AoR1RLX1NUQVRVU0JBUih3aW5kb3ctPnN0YXR1c0Jhciks
IHdpbmRvdy0+c3RhdHVzQmFyQ29udGV4dElkKTsKLQotICAgIFdLVVJMUmVmIGxpbmtVcmxSZWYg
PSBXS0hpdFRlc3RSZXN1bHRDb3B5QWJzb2x1dGVMaW5rVVJMKGhpdFRlc3RSZXN1bHQpOwotICAg
IGlmICghbGlua1VybFJlZikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2NoYXIgKmxpbmsgPSBX
S1VSTEdldENTdHJpbmcobGlua1VybFJlZik7Ci0gICAgV0tSZWxlYXNlKGxpbmtVcmxSZWYpOwot
ICAgIGd0a19zdGF0dXNiYXJfcHVzaChHVEtfU1RBVFVTQkFSKHdpbmRvdy0+c3RhdHVzQmFyKSwg
d2luZG93LT5zdGF0dXNCYXJDb250ZXh0SWQsIGxpbmspOwotICAgIGdfZnJlZShsaW5rKTsKLX0K
LQotc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VJQ2xpZW50SW5pdChCcm93c2VyV2luZG93ICp3
aW5kb3cpCi17Ci0gICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQgPSB7Ci0gICAgICAgIGtXS1Bh
Z2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uLAotICAgICAgICB3aW5kb3csIC8qIGNsaWVudEluZm8g
Ki8KLSAgICAgICAgMCwgICAgICAvKiBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAgKi8KLSAgICAgICAgc2hvd1BhZ2UsCi0gICAgICAgIGNsb3NlUGFnZSwKLSAgICAgICAgMCwg
ICAgICAvKiB0YWtlRm9jdXMgKi8KLSAgICAgICAgZm9jdXMsCi0gICAgICAgIHVuZm9jdXMsCi0g
ICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKLSAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm0s
Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQsCi0gICAgICAgIDAsICAgICAgLyogc2V0U3Rh
dHVzVGV4dCAqLwotICAgICAgICAwLCAgICAgIC8qIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgICAgICAvKiBtaXNzaW5nUGx1Z2lu
QnV0dG9uQ2xpY2tlZCAqLwotICAgICAgICAwLCAgICAgIC8qIGRpZE5vdEhhbmRsZUtleUV2ZW50
ICovCi0gICAgICAgIDAsICAgICAgLyogZGlkTm90SGFuZGxlV2hlZWxFdmVudCAqLwotICAgICAg
ICAwLCAgICAgIC8qIHRvb2xiYXJzQXJlVmlzaWJsZSAqLwotICAgICAgICAwLCAgICAgIC8qIHNl
dFRvb2xiYXJzQXJlVmlzaWJsZSAqLwotICAgICAgICAwLCAgICAgIC8qIG1lbnVCYXJJc1Zpc2li
bGUgKi8KLSAgICAgICAgMCwgICAgICAvKiBzZXRNZW51QmFySXNWaXNpYmxlICovCi0gICAgICAg
IDAsICAgICAgLyogc3RhdHVzQmFySXNWaXNpYmxlICovCi0gICAgICAgIDAsICAgICAgLyogc2V0
U3RhdHVzQmFySXNWaXNpYmxlICovCi0gICAgICAgIDAsICAgICAgLyogaXNSZXNpemFibGUgKi8K
LSAgICAgICAgMCwgICAgICAvKiBzZXRJc1Jlc2l6YWJsZSAqLwotICAgICAgICAwLCAgICAgIC8q
IGdldFdpbmRvd0ZyYW1lICovCi0gICAgICAgIDAsICAgICAgLyogc2V0V2luZG93RnJhbWUgKi8K
LSAgICAgICAgMCwgICAgICAvKiBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgKi8KLSAgICAg
ICAgMCwgICAgICAvKiBkaWREcmF3ICovCi0gICAgICAgIDAsICAgICAgLyogcGFnZURpZFNjcm9s
bCAqLwotICAgICAgICAwLCAgICAgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLwotICAgICAg
ICAwLCAgICAgIC8qIHJ1bk9wZW5QYW5lbCAqLwotICAgICAgICAwLCAgICAgIC8qIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgKi8KLSAgICAgICAgMCwgICAgICAv
KiBoZWFkZXJIZWlnaHQgKi8KLSAgICAgICAgMCwgICAgICAvKiBmb290ZXJIZWlnaHQgKi8KLSAg
ICAgICAgMCwgICAgICAvKiBkcmF3SGVhZGVyICovCi0gICAgICAgIDAsICAgICAgLyogZHJhd0Zv
b3RlciAqLwotICAgICAgICAwLCAgICAgIC8qIHByaW50RnJhbWUgKi8KLSAgICAgICAgMCwgICAg
ICAvKiBydW5Nb2RhbCAqLwotICAgICAgICAwLCAgICAgIC8qIGRpZENvbXBsZXRlUnViYmVyQmFu
ZEZvck1haW5GcmFtZSAqLwotICAgICAgICAwLCAgICAgIC8qIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIgKi8KLSAgICAgICAgMCwgICAgICAvKiBzaG91bGRJbnRlcnJ1cHRKYXZhU2Ny
aXB0ICovCi0gICAgICAgIGNyZWF0ZU5ld1BhZ2UsCi0gICAgICAgIG1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50Ci0gICAgfTsKLSAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tWaWV3R2V0UGFnZSh3
aW5kb3ctPndlYlZpZXcpLCAmdWlDbGllbnQpOwotfQotCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9k
aWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAobmF2aWdhdGlvblR5cGUg
IT0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkIHx8IG1vdXNlQnV0dG9uICE9IGtX
S0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b24pIHsKLSAgICAgICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlKGxpc3RlbmVyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdLVmll
d1JlZiB3ZWJWaWV3ID0gV0tWaWV3Q3JlYXRlKFdLUGFnZUdldENvbnRleHQocGFnZSksIDApOwot
ICAgIEd0a1dpZGdldCAqd2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KHdlYlZpZXcpOwotICAg
IFdLVVJMUmVmIHVybCA9IFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCk7Ci0gICAgV0tQYWdl
TG9hZFVSTChXS1ZpZXdHZXRQYWdlKHdlYlZpZXcpLCB1cmwpOwotICAgIFdLUmVsZWFzZSh1cmwp
OwotICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBn
dGtfd2lkZ2V0X3Nob3cod2luZG93KTsKLQotICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9y
ZShsaXN0ZW5lcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dQb2xpY3lDbGllbnRJ
bml0KEJyb3dzZXJXaW5kb3cqIHdpbmRvdykKLXsKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnQgcG9s
aWN5Q2xpZW50ID0gewotICAgICAgICBrV0tQYWdlUG9saWN5Q2xpZW50Q3VycmVudFZlcnNpb24s
Ci0gICAgICAgIHdpbmRvdywgLyogY2xpZW50SW5mbyAqLwotICAgICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uLAotICAgICAgICAwLCAgICAgIC8qIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbiAqLwotICAgICAgICAwLCAgICAgIC8qIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlICovCi0gICAgICAgIDAgICAgICAgLyogdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kgKi8KLSAg
ICB9OwotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tWaWV3R2V0UGFnZSh3aW5kb3ct
PndlYlZpZXcpLCAmcG9saWN5Q2xpZW50KTsKLX0KLQogLy8gUHVibGljIEFQSS4KLUd0a1dpZGdl
dCogYnJvd3Nlcl93aW5kb3dfbmV3KFdLVmlld1JlZiB2aWV3KQorR3RrV2lkZ2V0ICpicm93c2Vy
X3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyAqdmlldykKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChHVEtfSVNfV0lER0VUKHZpZXcpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcodmlldyksIDApOwogCiAgICAgcmV0dXJuIEdUS19XSURHRVQoZ19v
YmplY3RfbmV3KEJST1dTRVJfVFlQRV9XSU5ET1csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0eXBlIiwgR1RLX1dJTkRPV19UT1BMRVZFTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInZpZXciLCB2aWV3LCBOVUxMKSk7CiB9CiAKLVdLVmlld1JlZiBi
cm93c2VyX3dpbmRvd19nZXRfdmlldyhCcm93c2VyV2luZG93KiB3aW5kb3cpCitXZWJLaXRXZWJW
aWV3ICpicm93c2VyX3dpbmRvd19nZXRfdmlldyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQlJPV1NFUl9JU19XSU5ET1cod2luZG93KSwgMCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IGViODAxZTUuLjQ2YTA2YzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaApAQCAtMjYsNyArMjYsNyBAQAog
I2lmbmRlZiBCcm93c2VyV2luZG93X2gKICNkZWZpbmUgQnJvd3NlcldpbmRvd19oCiAKLSNpbmNs
dWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTQzLDggKzQzLDggQEAgdHlw
ZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3dDbGFzcyAgIEJyb3dzZXJXaW5kb3dDbGFzczsKIAog
R1R5cGUgYnJvd3Nlcl93aW5kb3dfZ2V0X3R5cGUodm9pZCk7CiAKLUd0a1dpZGdldCogYnJvd3Nl
cl93aW5kb3dfbmV3KFdLVmlld1JlZik7Ci1XS1ZpZXdSZWYgYnJvd3Nlcl93aW5kb3dfZ2V0X3Zp
ZXcoQnJvd3NlcldpbmRvdyopOworR3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0
V2ViVmlldyopOworV2ViS2l0V2ViVmlldyogYnJvd3Nlcl93aW5kb3dfZ2V0X3ZpZXcoQnJvd3Nl
cldpbmRvdyopOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUu
YW0KaW5kZXggZTM3ODU3Ni4uZTMyYTE2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmls
ZS5hbQpAQCAtMSw5ICsxLDEwIEBACi1iaW5fUFJPR1JBTVMgKz0gXAorbm9pbnN0X1BST0dSQU1T
ICs9IFwKIAlQcm9ncmFtcy9NaW5pQnJvd3NlcgogCiBQcm9ncmFtc19NaW5pQnJvd3Nlcl9DUFBG
TEFHUyA9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UgXAotCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZSBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL3dlYmtpdDJndGsvaW5jbHVkZSBcCiAJLURXRUJLSVRfRVhFQ19QQVRIPVwi
JHtzaGVsbCBwd2R9LyQodG9wX2J1aWxkZGlyKS9Qcm9ncmFtcy9cIiBcCiAJJChnbG9iYWxfY3Bw
ZmxhZ3MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCkBAIC0xNCwxNSArMTUsNiBAQCBQcm9ncmFtc19N
aW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKIAotQlVJTFRfU09VUkNFUyAr
PSBcCi0JZ2VuZXJhdGUtbWluaWJyb3dzZXItZm9yd2FyZC1oZWFkZXJzCi0KLU1pbmlCcm93c2Vy
IDo9ICQoc3JjZGlyKS9Ub29scy9NaW5pQnJvd3Nlci9ndGsKLU1pbmlCcm93c2VyRndkSGVhZGVy
cyA6PSAkKEdFTlNPVVJDRVNfV0VCS0lUMikvaW5jbHVkZQotZ2VuZXJhdGUtbWluaWJyb3dzZXIt
Zm9yd2FyZC1oZWFkZXJzOiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1o
ZWFkZXJzLnBsICQoUHJvZ3JhbXNfTWluaUJyb3dzZXJfU09VUkNFUykKLQkkKEFNX1ZfR0VOKSQo
UEVSTCkgJDwgJChNaW5pQnJvd3NlcikgJChNaW5pQnJvd3NlckZ3ZEhlYWRlcnMpIGd0awotCSQo
QU1fVl9HRU4pJChQRVJMKSAkPCAkKE1pbmlCcm93c2VyKSAkKE1pbmlCcm93c2VyRndkSGVhZGVy
cykgc291cAotCiBQcm9ncmFtc19NaW5pQnJvd3Nlcl9MREFERCA9IFwKIAlsaWJ3ZWJraXQyZ3Rr
LUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05ALmxhIFwKIAkkKEdMSUJfTElCUykgXApAQCAtMzUsMjAgKzI3LDMgQEAgUHJvZ3JhbXNfTWlu
aUJyb3dzZXJfTERGTEFHUyA9IFwKIENMRUFORklMRVMgKz0gXAogCSQodG9wX2J1aWxkZGlyKS9Q
cm9ncmFtcy9NaW5pQnJvd3NlcgogCi0jIEluamVjdGVkIGJ1bmRsZQotbm9pbnN0X0xUTElCUkFS
SUVTICs9IExpYnJhcmllcy9saWJNaW5pQnJvd3NlcldlYkJ1bmRsZS5sYQotTGlicmFyaWVzX2xp
Yk1pbmlCcm93c2VyV2ViQnVuZGxlX2xhX1NPVVJDRVMgPSBcCi0JVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLmMKLQotTGlicmFyaWVzX2xpYk1pbmlCcm93c2Vy
V2ViQnVuZGxlX2xhX0xERkxBR1MgPSBcCi0JLXJwYXRoICR7c2hlbGwgcHdkfS8kKHRvcF9idWls
ZGRpcikvLi4vdW5peC9UZXN0TmV0c2NhcGVQbHVnaW4vLmxpYnMgXAotCSQobm9fdW5kZWZpbmVk
KSBcCi0JLWF2b2lkLXZlcnNpb24gXAotCS1tb2R1bGUKLQotTGlicmFyaWVzX2xpYk1pbmlCcm93
c2VyV2ViQnVuZGxlX2xhX0NQUEZMQUdTID0gXAotCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL0luamVjdGVkQnVuZGxlIFwKLQktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL2luY2x1ZGUgXAotCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCi0JJChqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncykgXAotCSQoR0xJQl9DRkxBR1MpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4uYyBiL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlYWUxMDQwLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9XZWJCdW5k
bGUvV2ViQnVuZGxlTWFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZUhpdFRlc3RSZXN1bHQuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW5pdGlh
bGl6ZS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+Ci0jaW5jbHVkZSA8Z2xp
Yi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1zdGF0aWMgV0tCdW5kbGVSZWYgZ2xvYmFsQnVu
ZGxlOwotCi1zdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgKnVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQotewotICAgICp1c2VyRGF0YSA9IFdLQnVuZGxlSGl0VGVzdFJlc3VsdENvcHlBYnNv
bHV0ZUxpbmtVUkwoaGl0VGVzdFJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZENyZWF0ZVBh
Z2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBXS0J1bmRsZVBhZ2VVSUNsaWVudCB1aUNsaWVudDsKLSAgICBt
ZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKLSAgICB1aUNsaWVudC52ZXJz
aW9uID0ga1dLQnVuZGxlUGFnZVVJQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgdWlDbGllbnQu
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQgPSBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKLQotICAg
IFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KHBhZ2UsICZ1aUNsaWVudCk7Ci19Ci0KLXZvaWQgV0tC
dW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0
aW9uVXNlckRhdGEpCi17Ci0gICAgZ2xvYmFsQnVuZGxlID0gYnVuZGxlOwotCi0gICAgV0tCdW5k
bGVDbGllbnQgY2xpZW50ID0gewotICAgICAgICBrV0tCdW5kbGVDbGllbnRDdXJyZW50VmVyc2lv
biwKLSAgICAgICAgMCwKLSAgICAgICAgZGlkQ3JlYXRlUGFnZSwKLSAgICAgICAgMCwgLyogd2ls
bERlc3Ryb3lQYWdlICovCi0gICAgICAgIDAsIC8qIGRpZEluaXRpYWxpemVQYWdlR3JvdXAgKi8K
LSAgICAgICAgMCwgLyogZGlkUmVjaWV2ZU1lc3NhZ2UgKi8KLSAgICB9OwotICAgIFdLQnVuZGxl
U2V0Q2xpZW50KGJ1bmRsZSwgJmNsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAxMjAy
NzM1Li4wYzNmM2YyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTI2LDI3ICsyNiwxMSBAQAogICov
CiAKICNpbmNsdWRlICJCcm93c2VyV2luZG93LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQy
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
CiBzdGF0aWMgY29uc3QgZ2NoYXIgKip1cmlBcmd1bWVudHMgPSBOVUxMOwogCi1zdGF0aWMgV0tD
b250ZXh0UmVmIGNyZWF0ZVdLQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpCi17Ci0gICAgV0tT
dHJpbmdSZWYgYnVuZGxlUGF0aCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMaWJy
YXJpZXMvLmxpYnMvbGliTWluaUJyb3dzZXJXZWJCdW5kbGUuc28iKTsKLSAgICBXS0NvbnRleHRS
ZWYgcHJvY2Vzc0NvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRo
KGJ1bmRsZVBhdGgpOwotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGJ1bmRsZUNs
aWVudCA9IHsKLSAgICAgICAga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVudFZl
cnNpb24sCi0gICAgICAgIDAsIC8qIGNsaWVudEluZm8gKi8KLSAgICAgICAgMCwgLyogZGlkUmVj
aWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsKi8KLSAgICAgICAgMAotICAgIH07Ci0gICAg
V0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQocHJvY2Vzc0NvbnRleHQsICZidW5kbGVD
bGllbnQpOwotICAgIFdLUmVsZWFzZShidW5kbGVQYXRoKTsKLQotICAgIHJldHVybiBwcm9jZXNz
Q29udGV4dDsKLX0KLQogc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZp
bGVuYW1lKQogewogICAgIEdGaWxlICpnZmlsZSA9IGdfZmlsZV9uZXdfZm9yX2NvbW1hbmRsaW5l
X2FyZyhmaWxlbmFtZSk7CkBAIC01NiwxNyArNDAsMTUgQEAgc3RhdGljIGdjaGFyICphcmd1bWVu
dFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAgIHJldHVybiBmaWxlVVJMOwogfQogCi1z
dGF0aWMgdm9pZCBsb2FkVVJJKGNvbnN0IGdjaGFyICp1cmksIFdLQ29udGV4dFJlZiBwcm9jZXNz
Q29udGV4dCkKK3N0YXRpYyB2b2lkIGxvYWRVUkkoY29uc3QgZ2NoYXIgKnVyaSkKIHsKLSAgICBX
S1ZpZXdSZWYgd2ViVmlldyA9IFdLVmlld0NyZWF0ZShwcm9jZXNzQ29udGV4dCwgMCk7Ci0gICAg
R3RrV2lkZ2V0ICptYWluV2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KHdlYlZpZXcpOworICAg
IEd0a1dpZGdldCAqd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKyAgICBHdGtXaWRn
ZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKICAgICBnY2hhciAqdXJsID0gYXJndW1lbnRUb1VSTCh1cmkpOwotICAgIFdLVVJMUmVm
IHdrVVJMID0gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJsKTsKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpLCB1cmwpOwogICAgIGdfZnJl
ZSh1cmwpOwotICAgIFdLUGFnZUxvYWRVUkwoV0tWaWV3R2V0UGFnZSh3ZWJWaWV3KSwgd2tVUkwp
OwotICAgIFdLUmVsZWFzZSh3a1VSTCk7CiAKLSAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RL
X1dJREdFVCh3ZWJWaWV3KSk7CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdlYlZpZXcpOwog
ICAgIGd0a193aWRnZXRfc2hvdyhtYWluV2luZG93KTsKIH0KIApAQCAtOTcsMTUgKzc5LDEzIEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgLy8gUHJlZmVyIHRoZSBub3Qg
aW5zdGFsbGVkIHdlYiBhbmQgcGx1Z2luIHByb2Nlc3Nlcy4KICAgICBnX3NldGVudigiV0VCS0lU
X0VYRUNfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEgsIEZBTFNFKTsKIAotICAgIFdLQ29udGV4dFJl
ZiBwcm9jZXNzQ29udGV4dCA9IGNyZWF0ZVdLQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpOwot
CiAgICAgaWYgKHVyaUFyZ3VtZW50cykgewogICAgICAgICBpbnQgaTsKIAogICAgICAgICBmb3Ig
KGkgPSAwOyB1cmlBcmd1bWVudHNbaV07IGkrKykKLSAgICAgICAgICAgIGxvYWRVUkkodXJpQXJn
dW1lbnRzW2ldLCBwcm9jZXNzQ29udGV4dCk7CisgICAgICAgICAgICBsb2FkVVJJKHVyaUFyZ3Vt
ZW50c1tpXSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxvYWRVUkkoImh0dHA6Ly93d3cud2Via2l0
Z3RrLm9yZy8iLCBwcm9jZXNzQ29udGV4dCk7CisgICAgICAgIGxvYWRVUkkoImh0dHA6Ly93d3cu
d2Via2l0Z3RrLm9yZy8iKTsKIAogICAgIGd0a19tYWluKCk7CiAK
</data>
<flag name="review"
          id="111841"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>