<?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>113813</bug_id>
          
          <creation_ts>2013-04-02 11:42:59 -0700</creation_ts>
          <short_desc>Add platform AudioSession and iOS platform-specific code.</short_desc>
          <delta_ts>2013-04-02 13:47:54 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>113806</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>868123</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-02 11:42:59 -0700</bug_when>
    <thetext>Add platform AudioSession and iOS platform-specific code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868167</commentid>
    <comment_count>1</comment_count>
      <attachid>196210</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-02 12:34:01 -0700</bug_when>
    <thetext>Created attachment 196210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868223</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-02 13:47:54 -0700</bug_when>
    <thetext>Committed r147494: &lt;http://trac.webkit.org/changeset/147494&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196210</attachid>
            <date>2013-04-02 12:34:01 -0700</date>
            <delta_ts>2013-04-02 12:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113813-20130402123352.patch</filename>
            <type>text/plain</type>
            <size>33831</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQwNDViYzExNGNlNjFl
NDBlMjY1YWIwMGU1MTQyMmYzYmYxYzE0Ni4uMDU2ZDE1OWZjZWExMGY4MDU4YTE4OTQ4YzIyNWM1
NGYxNDU3MDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDEzLTA0LTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBwbGF0Zm9ybSBBdWRp
b1Nlc3Npb24gYW5kIGlPUyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzODEzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMTcwMTc5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIHRoZSBkZXByZWNhdGVkIEF1ZGlvVG9vbGJveCBBdWRpb1Nlc3Np
b24gQVBJcyB3aXRoIHRoZSBuZXcgQVZBdWRpb1Nlc3Npb24gQVBJLgorICAgICAgICBUbyBwcm90
ZWN0IGFnYWluc3QgZXhwb3NpbmcgcGxhdGZvcm0gc3BlY2lmaWMgaW50cmluc2ljcyB0byBjcm9z
cy1wbGF0Zm9ybSBjb2RlLCBhZGQgYQorICAgICAgICBwbGF0Zm9ybSBnZW5lcmljIGNsYXNzIEF1
ZGlvU2Vzc2lvbiwgd2l0aCBwb3J0LXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gQSBkZWZhdWx0
CisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLgorCisgICAgICAgIEFkZCBhIG5l
dyBsaXN0ZW5lciBpbnRlcmZhY2UgdG8gcmVjZWl2ZSBpbnRlcnJ1cHRpb24gbm90aWZpY2F0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25MaXN0ZW5lci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbkxpc3RlbmVyOjpBdWRpb1Nlc3Npb25M
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25MaXN0ZW5lcjo6fkF1ZGlv
U2Vzc2lvbkxpc3RlbmVyKToKKworICAgICAgICBBZGQgYSBwbGF0Zm9ybSBnZW5lcmljIEF1ZGlv
U2Vzc2lvbiBjbGFzczoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbik6IEF1ZGlvU2Vz
c2lvbiBpcyBhIHNpbmdsZXRvbiBvYmplY3QsIGFuZCB0aGlzIGlzIGl0cyBhY2Nlc3Nvci4KKyAg
ICAgICAgKEF1ZGlvU2Vzc2lvbjo6YWRkTGlzdGVuZXIpOiBBZGQgdGhlIHBhcmFtZXRlciB0byB0
aGUgbGlzdGVuZXJzIHNldC4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlTGlzdGVuZXIp
OiBSZW1vdmUgdGhlIHBhcmFtZXRlciBmcm9tIHRoZSBsaXN0ZXJzIHNldC4KKyAgICAgICAgKEF1
ZGlvU2Vzc2lvbjo6YmVnYW5BdWRpb0ludGVycnVwdGlvbik6IEl0ZXJhdGUgb3ZlciB0aGUgcGFy
YW1ldGVycy4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbjo6ZW5kZWRBdWRpb0ludGVycnVwdGlvbik6
IERpdHRvLgorICAgICAgICAoQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBFbXB0eSBzdHVi
LgorICAgICAgICAoQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGl0dG8uCisgICAgICAg
IChBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTogRGl0dG8uCisgICAgICAgIChBdWRpb1Nlc3Np
b246OmNhdGVnb3J5KTogRGl0dG8uCisgICAgICAgIChBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUp
OiBEaXR0by4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyk6
IERpdHRvLgorICAgICAgICAoQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEaXR0by4KKyAgICAg
ICAgKEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyRHVyYXRpb24pOiBEaXR0by4KKyAgICAg
ICAgKEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24pOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDogQWRkZWQuCisKKyAgICAgICAg
QWRkIElPUy1zcGVjaWZpYyBBdWRpb1Nlc3Npb24gaW1wbGVtZW50YXRpb246CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbTogQWRkZWQuCisgICAgICAgICgt
W1dlYkF1ZGlvU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOldlYkNvcmU6Ol0pOiBSZWdp
c3RlciBmb3IgaW50ZXJydXB0aW9uIG5vdGlmaWNhdGlvbnMuCisgICAgICAgICgtW1dlYkF1ZGlv
U2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6IFVucmVnaXN0ZXIgZm9yIGludGVycnVwdGlvbiBub3Rp
ZmljYXRpb25zLgorICAgICAgICAoLVtXZWJBdWRpb1Nlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9u
Ol0pOiBQYXNzIHRvIEF1ZGlvU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
blByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBQcml2YXRlIHN0b3JhZ2UgZm9yIEF1ZGlv
U2Vzc2lvbklPUy4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KTogQ3JlYXRlIEF1ZGlvU2Vzc2lvblByaXZhdGUgYW5kIFdlYkF1ZGlvU2Vzc2lvbkhlbHBlci4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbik6IFNpbXBsZSBk
ZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6
IENoZWNrIHRoZSBjdXJyZW50IGNhdGVnb3J5T3ZlcnJpZGUsIGFuZCByZWZ1c2UgdG8gb3Zlcndy
aXRlCisgICAgICAgICAgICAiTWVkaWFQbGF5YmFjayIgd2l0aCAiQW1iaWVudFNvdW5kIi4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IFNpbXBs
ZSBzZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJp
ZGUpOiBTaW1wbGUgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRl
Z29yeSk6IFBhc3MgdG8gQVZBdWRpb1Nlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb246OnNhbXBsZVJhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6cHJlZmVycmVkQnVmZmVyRHVyYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24pOiBEaXR0by4KKworICAg
ICAgICBVc2UgdGhlIG5ldyBBdWRpb1Nlc3Npb24gY2xhc3MgaW4gcGxhY2Ugb2YgZXhwbGljaXQg
QXVkaW9Ub29sYm94IG9yIEFWQXVkaW9TZXNzaW9uIGNhbGxzOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSk6IFBhc3MgdG8gQXVkaW9TZXNzaW9u
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rlc3Rp
bmF0aW9uSU9TKTogUmVnaXN0ZXIgZm9yIGxpc3RlbmVycyBhbmQgYWN0aXZhdGUuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjp+QXVkaW9EZXN0aW5hdGlvbklPUyk6IFVu
cmVnaXN0ZXIgYW5kIGRlYWN0aXZhdGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uSU9TOjpjb25maWd1cmUpOiBVc2UgQXVkaW9TZXNzaW9uIHRvIHNldCB0aGUgYnVmZmVyIGxl
bmd0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5o
OgorCisgICAgICAgIEFkZCB0aGUgbmV3IGZpbGVzIHRvIHRoZSBwcm9qZWN0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMy0wNC0wMiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBVcHN0cmVhbSBBdWRpb0Rlc3Rp
YW50aW9uSU9TLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEzODA2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1NGYxZWMwMjVkYzE4MmVkNTY0YmQ1NjU1NzRiZjliNzI3Y2M4MDJi
Li41ODk0NGJiNWZmYjQwNDE0ODZmODIwMmMyZTk3NTI2NDkxN2YyMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDMzLDYg
KzYwMzMsOSBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93
QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQTc5ODI0
MTcwQTI1ODMwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjMxNzBBMjU4MzAwRDQ1QzU1IC8qIEF1
ZGlvU2Vzc2lvbi5jcHAgKi87IH07CisJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRp
b1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9
OworCQlDREE3OTgyQTE3MEEzRDAwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMTE3MEEyMkRDMDBE
NDVDNTUgLyogQXVkaW9TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKIAkJ
Q0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REQ1MTYwMjVC
RUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CiAJCUNEQTk4RERG
MTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RERCMTYwMjZBMTgwMEZF
QTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTEzNzA5LDYgKzEz
NzEyLDEwIEBACiAJCUNEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldp
bmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5k
b3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1
QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTc5ODIzMTcwQTI1ODMwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEF1ZGlvU2Vzc2lvbklPUy5tbTsgcGF0aCA9IGlvcy9BdWRpb1Nlc3Npb25JT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAv
KiBKU01lZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RB
OThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlOZWVk
ZWRFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVk
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4NTgsNiArMjE4NjUs
NyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuY3BwICovLAogCQkJCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAv
KiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmggKi8sCisJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMTkzLDYgKzIzMjAxLDkgQEAKIAkJCQlGRDMxNjA1
MDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBsZXIuaCAqLywKIAkJCQlGRDMxNjA1MTEy
QjAyNkY3MDBDMUEzNTkgLyogQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwICovLAogCQkJCUZEMzE2
MDUyMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1Jlc2FtcGxlcktlcm5lbC5oICovLAorCQkJCUNE
QTc5ODIxMTcwQTIyREMwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb24uaCAqLywKKwkJCQlDREE3OTgy
MzE3MEEyNTgzMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmNwcCAqLywKKwkJCQlDREE3OTgyMjE3
MEEyNEY0MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCAqLywKIAkJCQlGRDMxNjA1
MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9Tb3VyY2VQcm92aWRlci5oICovLAogCQkJCUZENjJG
NTJEMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggKi8sCiAJ
CQkJRkQzMTYwNTQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmNwcCAqLywKQEAg
LTIzNDQzLDYgKzIzNDU0LDcgQEAKIAkJCQlGRDMxNjA4NjEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9SZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg4MTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ4QzQ2RUMx
NTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwMjIxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvU291cmNlTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODkxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlv
U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0
QjBFRCAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MTgzLDYgKzI3MTk1LDggQEAKIAkJCQlGRDMxNjA4NTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9S
ZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwODcxMkIwMjZGNzAwQzFBMzU5
IC8qIEF1ZGlvUmVzYW1wbGVyS2VybmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEOEM0NkVC
MTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBNzk4MjQxNzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCMDUyREYxNTYxQTQyQzAwQjUwMEQ2IC8q
IEF1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDhBMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RUU2ODQ1RjEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DRi5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNkZjgzMzcyMzdmYjA3OTkzOTZjZmJhMjRlYTg5NDM1ZGVhYzVmZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uY3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0F1ZGlvU2Vzc2lvbiYgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbiwgc2Vzc2lvbiwgKCkpOworICAgIHJl
dHVybiBzZXNzaW9uOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkTGlzdGVuZXIoQXVkaW9T
ZXNzaW9uTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5l
cik7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVMaXN0ZW5lcihBdWRpb1Nlc3Npb25M
aXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsK
K30KKwordm9pZCBBdWRpb1Nlc3Npb246OmJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24oKQoreworICAg
IGZvciAoSGFzaFNldDxBdWRpb1Nlc3Npb25MaXN0ZW5lcio+OjppdGVyYXRvciBpID0gbV9saXN0
ZW5lcnMuYmVnaW4oKTsgaSAhPSBtX2xpc3RlbmVycy5lbmQoKTsgKytpKQorICAgICAgICAoKmkp
LT5iZWdhbkF1ZGlvSW50ZXJydXB0aW9uKCk7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjplbmRl
ZEF1ZGlvSW50ZXJydXB0aW9uKCkKK3sKKyAgICBmb3IgKEhhc2hTZXQ8QXVkaW9TZXNzaW9uTGlz
dGVuZXIqPjo6aXRlcmF0b3IgaSA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7IGkgIT0gbV9saXN0ZW5l
cnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+ZW5kZWRBdWRpb0ludGVycnVwdGlvbigpOwor
fQorCisjaWYgIVBMQVRGT1JNKElPUykKK2NsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgeworfTsK
KworQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQorICAgIDogbV9wcml2YXRlKDApCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkK
K3sKK30KKwordm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBB
dWRpb1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIE5vbmU7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRl
Z29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBOb25lOworfQorCitmbG9h
dCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitmbG9hdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlckR1
cmF0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24oZmxvYXQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdjMjAyZWI2YjEwNWY3YzRkODQ0MGRjOWU0NTM3ODZmODZiNGYwMzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1Nlc3Npb25faAorI2Rl
ZmluZSBBdWRpb1Nlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TZXNz
aW9uTGlzdGVuZXI7CitjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlOworCitjbGFzcyBBdWRpb1Nl
c3Npb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbik7CitwdWJsaWM6
CisgICAgc3RhdGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vzc2lvbigpOworCisgICAgZW51bSBD
YXRlZ29yeVR5cGUgeworICAgICAgICBOb25lLAorICAgICAgICBBbWJpZW50U291bmQsCisgICAg
ICAgIFNvbG9BbWJpZW50U291bmQsCisgICAgICAgIE1lZGlhUGxheWJhY2ssCisgICAgICAgIFJl
Y29yZEF1ZGlvLAorICAgICAgICBQbGF5QW5kUmVjb3JkLAorICAgICAgICBBdWRpb1Byb2Nlc3Np
bmcsCisgICAgfTsKKyAgICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSk7CisgICAgQ2F0
ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJp
ZGUoQ2F0ZWdvcnlUeXBlKTsKKyAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnlPdmVycmlkZSgpIGNv
bnN0OworCisgICAgdm9pZCBhZGRMaXN0ZW5lcihBdWRpb1Nlc3Npb25MaXN0ZW5lciopOworICAg
IHZvaWQgcmVtb3ZlTGlzdGVuZXIoQXVkaW9TZXNzaW9uTGlzdGVuZXIqKTsKKworICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdDsKKyAgICBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
IGNvbnN0OworCisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CisKKyAgICBmbG9hdCBwcmVmZXJy
ZWRCdWZmZXJEdXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyRHVy
YXRpb24oZmxvYXQgc2Vjb25kcyk7CisKKyAgICB2b2lkIGJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24o
KTsKKyAgICB2b2lkIGVuZGVkQXVkaW9JbnRlcnJ1cHRpb24oKTsKKworcHJpdmF0ZToKKyAgICBB
dWRpb1Nlc3Npb24oKTsKKyAgICB+QXVkaW9TZXNzaW9uKCk7CisKKyAgICBPd25QdHI8QXVkaW9T
ZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIEhhc2hTZXQ8QXVkaW9TZXNzaW9uTGlzdGVu
ZXIqPiBtX2xpc3RlbmVyczsKK307CisKK30KKworI2VuZGlmIC8vIEF1ZGlvU2Vzc2lvbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25MaXN0
ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTGlzdGVu
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MmM1YjExNTM1MThkOWQyOTBkODQ2ZGRkNmFjZjNhNTQxM2MxMWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBB
dWRpb1Nlc3Npb25MaXN0ZW5lcl9oCisjZGVmaW5lIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyX2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Nlc3Npb25MaXN0ZW5lciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uTGlzdGVuZXIpCitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVuZGVkQXVkaW9JbnRlcnJ1cHRpb24oKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgQXVkaW9T
ZXNzaW9uTGlzdGVuZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BdWRpb1Nlc3Npb25MaXN0ZW5lcigp
IHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gQXVkaW9TZXNzaW9uTGlzdGVuZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRp
b25JT1MuY3BwCmluZGV4IGI4MTRkYTliNjQxNGVhZWVmNzIwNTNmN2IyMjhjYTNiMWNiN2MwNjMu
LmEwNmNmOGIxODdiMDhjYTAzYmFhY2NiMjkyMTZmMjE3YzNjMDUzMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25JT1Mu
aCIKIAogI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgogI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Nl
cnZpY2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1Mu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTEsMTAgKzUxLDYgQEAgU09GVF9MSU5L
KEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UsIE9TU3RhdHVzLCAo
QXVkaW9Db21wb25lbnQKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50SW5z
dGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlvQ29t
cG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5jZSkp
CiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb091dHB1dFVuaXRTdGFydCwgT1NTdGF0dXMs
IChBdWRpb1VuaXQgY2kpLCAoY2kpKQogU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9PdXRw
dXRVbml0U3RvcCwgT1NTdGF0dXMsIChBdWRpb1VuaXQgY2kpLCAoY2kpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9TZXNzaW9uSW5pdGlhbGl6ZSwgT1NTdGF0dXMsIChDRlJ1bkxvb3BS
ZWYgaW5SdW5Mb29wLCBDRlN0cmluZ1JlZiBpblJ1bkxvb3BNb2RlLCBBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb25MaXN0ZW5lciBpbkludGVycnVwdGlvbkxpc3RlbmVyLCB2b2lkICppbkNsaWVudERh
dGEpLCAoaW5SdW5Mb29wLCBpblJ1bkxvb3BNb2RlLCBpbkludGVycnVwdGlvbkxpc3RlbmVyLCBp
bkNsaWVudERhdGEpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9TZXNzaW9uR2V0UHJv
cGVydHksIE9TU3RhdHVzLCAoQXVkaW9TZXNzaW9uUHJvcGVydHlJRCBpbklELCBVSW50MzIgKmlv
RGF0YVNpemUsIHZvaWQgKm91dERhdGEpLCAoaW5JRCwgaW9EYXRhU2l6ZSwgb3V0RGF0YSkpCi1T
T0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1Nlc3Npb25TZXRBY3RpdmUsIE9TU3RhdHVzLCAo
Qm9vbGVhbiBhY3RpdmUpLCAoYWN0aXZlKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlv
U2Vzc2lvblNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvU2Vzc2lvblByb3BlcnR5SUQgaW5J
RCwgVUludDMyIGluRGF0YVNpemUsIGNvbnN0IHZvaWQgKmluRGF0YSksIChpbklELCBpbkRhdGFT
aXplLCBpbkRhdGEpKQogU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVy
dHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0
eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Q
cm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKIFNP
RlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1
ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUg
aW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQz
MiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0
YSwgaW9EYXRhU2l6ZSkpCiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFs
aXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKQEAgLTg4LDIwICs4
NCw5IEBAIFBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBB
dWRpb0Rlc3RpbmF0aW9uSU9TKGNhbGxiYWNrLCBzYW1wbGVSYXRlKSk7CiB9CiAKLS8vIGlPUyA3
LjAvSW5uc2JydWNrIHdpbGwgZGVwcmVjYXRlIEF1ZGlvU2Vzc2lvbiBBUElzLiBGb3Igbm93IGNv
bnRpbnVlIHRvIHVzZSB0aGUgb2xkIEFQSS4KLS8vIDxyZGFyOi8vcHJvYmxlbS8xMTcwMTc5Mj4g
QXVkaW9TZXNzaW9uIHNob3VsZCBtb3ZlIHRvIHVzaW5nIEFWQXVkaW9TZXNzaW9uIChJbm5zYnJ1
Y2spCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLQogZmxvYXQgQXVkaW9EZXN0aW5h
dGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKIHsKLSAgICBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpp
bml0aWFsaXplQXVkaW9TZXNzaW9uKCk7Ci0KLSAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IDA7Ci0g
ICAgVUludDMyIHNhbXBsZVJhdGVTaXplID0gc2l6ZW9mKHNhbXBsZVJhdGUpOwotCi0gICAgQXVk
aW9TZXNzaW9uR2V0UHJvcGVydHkoa0F1ZGlvU2Vzc2lvblByb3BlcnR5X0N1cnJlbnRIYXJkd2Fy
ZVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlU2l6ZSwgJnNhbXBsZVJhdGUpOwotICAgIHJldHVybiBz
YW1wbGVSYXRlOworICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1w
bGVSYXRlKCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5l
bENvdW50KCkKQEAgLTEyMSwxMSArMTA2LDEzIEBAIEF1ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlv
RGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZG91YmxlIHNhbXBsCiAg
ICAgLCBtX2lzUGxheWluZyhmYWxzZSkKICAgICAsIG1faW50ZXJydXB0ZWRPblBsYXliYWNrKGZh
bHNlKQogewotICAgIGluaXRpYWxpemVBdWRpb1Nlc3Npb24oKTsKKyAgICBBdWRpb1Nlc3Npb24m
IHNlc3Npb24gPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKTsKKyAgICBzZXNzaW9uLmFk
ZExpc3RlbmVyKHRoaXMpOworICAgIHNlc3Npb24uc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpB
bWJpZW50U291bmQpOwogCiAgICAgYXVkaW9EZXN0aW5hdGlvbnMoKS5hZGQodGhpcyk7CiAgICAg
aWYgKGF1ZGlvRGVzdGluYXRpb25zKCkuc2l6ZSgpID09IDEpCi0gICAgICAgIEF1ZGlvU2Vzc2lv
blNldEFjdGl2ZSh0cnVlKTsKKyAgICAgICAgc2Vzc2lvbi5zZXRBY3RpdmUoMSk7CiAKICAgICAv
LyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25l
bnQgY29tcDsKQEAgLTE0NSwxMSArMTMyLDExIEBAIEF1ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlv
RGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZG91YmxlIHNhbXBsCiAK
ICAgICBVSW50MzIgZmxhZyA9IDE7CiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHko
bV9vdXRwdXRVbml0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQXVkaW9P
dXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsYWcsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihmbGFnKSk7CisgICAgICAg
IGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywgCisgICAgICAgIGtBdWRpb1VuaXRT
Y29wZV9PdXRwdXQsIAorICAgICAgICAwLAorICAgICAgICAmZmxhZywgCisgICAgICAgIHNpemVv
ZihmbGFnKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0
QWRkUHJvcGVydHlMaXN0ZW5lcihtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9NYXhp
bXVtRnJhbWVzUGVyU2xpY2UsIGZyYW1lU2l6ZUNoYW5nZWRQcm9jLCB0aGlzKTsKQEAgLTE2NCw4
ICsxNTEsOCBAQCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rlc3RpbmF0aW9uSU9TKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbGJhY2ssIGRvdWJsZSBzYW1wbAogQXVkaW9EZXN0aW5hdGlvbklPUzo6
fkF1ZGlvRGVzdGluYXRpb25JT1MoKQogewogICAgIGF1ZGlvRGVzdGluYXRpb25zKCkucmVtb3Zl
KHRoaXMpOwotICAgIGlmIChhdWRpb0Rlc3RpbmF0aW9ucygpLnNpemUoKSA9PSAwKQotICAgICAg
ICBBdWRpb1Nlc3Npb25TZXRBY3RpdmUoZmFsc2UpOworICAgIGlmICghYXVkaW9EZXN0aW5hdGlv
bnMoKS5zaXplKCkpCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldEFj
dGl2ZSgwKTsKIAogICAgIGlmIChtX291dHB1dFVuaXQpCiAgICAgICAgIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7CkBAIC0yMDEsMzQgKzE4OCw5IEBAIHZvaWQg
QXVkaW9EZXN0aW5hdGlvbklPUzo6Y29uZmlndXJlKCkKICAgICByZXN1bHQgPSBBdWRpb1VuaXRT
ZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQs
IGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAKLSAg
ICBGbG9hdDMyIGR1cmF0aW9uID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChrUHJlZmVycmVkQnVm
ZmVyU2l6ZSAvIG1fc2FtcGxlUmF0ZSk7Ci0gICAgQXVkaW9TZXNzaW9uU2V0UHJvcGVydHkoa0F1
ZGlvU2Vzc2lvblByb3BlcnR5X1ByZWZlcnJlZEhhcmR3YXJlSU9CdWZmZXJEdXJhdGlvbiwgc2l6
ZW9mKGR1cmF0aW9uKSwgJmR1cmF0aW9uKTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9T
OjphdWRpb0Rlc3RpbmF0aW9uSW50ZXJydXB0aW9uTGlzdGVuZXIodm9pZCAqdXNlckRhdGEsIFVJ
bnQzMiBpbnRlcnJ1cHRpb25TdGF0ZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVzZXJEYXRhLCB1
c2VyRGF0YSk7Ci0gICAgZm9yIChBdWRpb0Rlc3RpbmF0aW9uU2V0OjppdGVyYXRvciBpID0gYXVk
aW9EZXN0aW5hdGlvbnMoKS5iZWdpbigpOyBpICE9IGF1ZGlvRGVzdGluYXRpb25zKCkuZW5kKCk7
ICsraSkgewotICAgICAgICBpZiAoaW50ZXJydXB0aW9uU3RhdGUgPT0ga0F1ZGlvU2Vzc2lvbkJl
Z2luSW50ZXJydXB0aW9uKQotICAgICAgICAgICAgKCppKS0+YmVnYW5BdWRpb0ludGVycnVwdGlv
bigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAoKmkpLT5lbmRlZEF1ZGlvSW50ZXJydXB0
aW9uKCk7Ci0gICAgfQorICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZl
cnJlZEJ1ZmZlckR1cmF0aW9uKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoa1ByZWZlcnJlZEJ1ZmZl
clNpemUgLyBtX3NhbXBsZVJhdGUpKTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpp
bml0aWFsaXplQXVkaW9TZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBhdWRpb1Nlc3Npb25X
YXNJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmIChhdWRpb1Nlc3Npb25XYXNJbml0aWFsaXpl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXVkaW9TZXNzaW9uV2FzSW5pdGlhbGl6ZWQgPSB0
cnVlOwotICAgIEF1ZGlvU2Vzc2lvbkluaXRpYWxpemUoMCwgMCwgJmF1ZGlvRGVzdGluYXRpb25J
bnRlcnJ1cHRpb25MaXN0ZW5lciwgMCk7Ci0gICAgUGFnZTo6c2V0QXVkaW9TZXNzaW9uQ2F0ZWdv
cnkoa0F1ZGlvU2Vzc2lvbkNhdGVnb3J5X0FtYmllbnRTb3VuZCk7Ci19Ci0KLSNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgcG9wCi0KIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogewog
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7
CkBAIC0yNjgsNyArMjMwLDcgQEAgT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbklPUzo6cmVuZGVy
KFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0QKIHsKICAgICBBdWRp
b0J1ZmZlciogYnVmZmVycyA9IGlvRGF0YS0+bUJ1ZmZlcnM7CiAgICAgZm9yIChVSW50MzIgZnJh
bWVPZmZzZXQgPSAwOyBmcmFtZU9mZnNldCArIGtSZW5kZXJCdWZmZXJTaXplIDw9IG51bWJlck9m
RnJhbWVzOyBmcmFtZU9mZnNldCArPSBrUmVuZGVyQnVmZmVyU2l6ZSkgewotICAgICAgICBVSW50
MzIgcmVtYWluaW5nRnJhbWVzID0gTUlOKGtSZW5kZXJCdWZmZXJTaXplLCBudW1iZXJPZkZyYW1l
cyAtIGZyYW1lT2Zmc2V0KTsKKyAgICAgICAgVUludDMyIHJlbWFpbmluZ0ZyYW1lcyA9IHN0ZDo6
bWluPFVJbnQzMj4oa1JlbmRlckJ1ZmZlclNpemUsIG51bWJlck9mRnJhbWVzIC0gZnJhbWVPZmZz
ZXQpOwogICAgICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8IGlvRGF0YS0+bU51bWJlckJ1ZmZl
cnM7ICsraSkgewogICAgICAgICAgICAgVUludDMyIGJ5dGVzUGVyRnJhbWUgPSBidWZmZXJzW2ld
Lm1EYXRhQnl0ZVNpemUgLyBudW1iZXJPZkZyYW1lczsKICAgICAgICAgICAgIFVJbnQzMiBieXRl
T2Zmc2V0ID0gZnJhbWVPZmZzZXQgKiBieXRlc1BlckZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGFmM2U2YTZmM2IwYzM2YjY0Mzc0MDE3ZDViYzc4M2YyNGQ5OWM3YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0K
QEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkF1ZGlvU2Vzc2lvbi5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJTb2Z0
TGlua2luZy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CisjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworU09GVF9M
SU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVkF1ZGlvU2Vzc2lvbikKKworU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkF1
ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50LCBOU1N0cmlu
ZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbkNhdGVn
b3J5UGxheWJhY2ssIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lv
bkNhdGVnb3J5QXVkaW9Qcm9jZXNzaW5nLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlS2V5LCBOU1N0cmluZyAqKQorCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9u
IGdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5
QW1iaWVudCBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCgpCisjZGVmaW5lIEFWQXVk
aW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudCBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29s
b0FtYmllbnQoKQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheWJhY2sgZ2V0QVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrKCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25DYXRl
Z29yeVJlY29yZCBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UmVjb3JkKCkKKyNkZWZpbmUgQVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVBsYXlBbmRSZWNvcmQgZ2V0QVZBdWRpb1Nlc3Npb25DYXRlZ29y
eVBsYXlBbmRSZWNvcmQoKQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QXVkaW9Qcm9j
ZXNzaW5nIGdldEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcoKQorI2RlZmlu
ZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBnZXRBVkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbk5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uVHlwZUtleSBnZXRBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXkoKQorCitA
aW50ZXJmYWNlIFdlYkF1ZGlvU2Vzc2lvbkhlbHBlciA6IE5TT2JqZWN0IHsKKyAgICBXZWJDb3Jl
OjpBdWRpb1Nlc3Npb24qIF9jYWxsYmFjazsKK30KKy0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KFdl
YkNvcmU6OkF1ZGlvU2Vzc2lvbiopY2FsbGJhY2s7CistICh2b2lkKWludGVycnVwdGlvbjooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkF1
ZGlvU2Vzc2lvbkhlbHBlcgorLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uKiljYWxsYmFjaworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGludGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OltBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0
YW5jZV1dOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2Vs
Zl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludGVycnVwdGlvbjooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tu
b3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVw
dGlvblR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBpZiAodHlwZSA9PSBBVkF1
ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVCZWdhbikKKyAgICAgICAgX2NhbGxiYWNrLT5iZWdh
bkF1ZGlvSW50ZXJydXB0aW9uKCk7CisgICAgZWxzZQorICAgICAgICBfY2FsbGJhY2stPmVuZGVk
QXVkaW9JbnRlcnJ1cHRpb24oKTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKK3B1YmxpYzoKKyAgICBBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiopOworICAgIFJldGFpblB0cjxXZWJBdWRpb1Nlc3Npb25IZWxwZXI+
IG1faGVscGVyOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVy
cmlkZTsKK307CisKK0F1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVk
aW9TZXNzaW9uKiBzZXNzaW9uKQorICAgIDogbV9oZWxwZXIoYWRvcHROUyhbW1dlYkF1ZGlvU2Vz
c2lvbkhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpzZXNzaW9uXSkpCisgICAgLCBtX2Nh
dGVnb3J5T3ZlcnJpZGUoQXVkaW9TZXNzaW9uOjpOb25lKQoreworfQorCitBdWRpb1Nlc3Npb246
OkF1ZGlvU2Vzc2lvbigpCisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lv
blByaXZhdGUodGhpcykpKQoreworfQorCitBdWRpb1Nlc3Npb246On5BdWRpb1Nlc3Npb24oKQor
eworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIG5ld0Nh
dGVnb3J5KQoreworICAgIGlmIChjYXRlZ29yeU92ZXJyaWRlKCkgJiYgY2F0ZWdvcnlPdmVycmlk
ZSgpICE9IG5ld0NhdGVnb3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWNhdGVnb3J5
T3ZlcnJpZGUoKSkgeworICAgICAgICAvLyBJZiBhIHBhZ2UgcGxheXMgb25seSBXZWJBdWRpbyB3
ZSBzZXQgdGhlIGF1ZGlvIGNhdGVnb3J5IHRvICJhbWJpZW50IiBzbyBpdCBpcyBtdXRlZCBieSB0
aGUgcmluZ2VyIHN3aXRjaC4KKyAgICAgICAgLy8gSG93ZXZlciwgYXVkaW8gZnJvbSBhbiBIVE1M
NSBtZWRpYSBlbGVtZW50IG9yIGZyb20gYSBwbHVnLWluIHNob3VsZCBhbHdheXMgcGxheSBhcyAi
bWVkaWEiIHNvIGRvbid0IGNoYW5nZSB0aGUKKyAgICAgICAgLy8gY2F0ZWdvcnkgb25jZSBpdCBo
YXMgYWxyZWFkeSBiZWVuIHNldCB0byBtZWRpYS4KKyAgICAgICAgaWYgKG5ld0NhdGVnb3J5ID09
IEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kICYmIGNhdGVnb3J5KCkgPT0gQXVkaW9TZXNzaW9u
OjpNZWRpYVBsYXliYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3Ry
aW5nKiBjYXRlZ29yeVN0cmluZzsKKyAgICBzd2l0Y2ggKG5ld0NhdGVnb3J5KSB7CisgICAgY2Fz
ZSBBbWJpZW50U291bmQ6CisgICAgICAgIGNhdGVnb3J5U3RyaW5nID0gQVZBdWRpb1Nlc3Npb25D
YXRlZ29yeUFtYmllbnQ7CisgICAgY2FzZSBTb2xvQW1iaWVudFNvdW5kOgorICAgICAgICBjYXRl
Z29yeVN0cmluZyA9IEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudDsKKyAgICBjYXNl
IE1lZGlhUGxheWJhY2s6CisgICAgICAgIGNhdGVnb3J5U3RyaW5nID0gQVZBdWRpb1Nlc3Npb25D
YXRlZ29yeVBsYXliYWNrOworICAgIGNhc2UgUmVjb3JkQXVkaW86CisgICAgICAgIGNhdGVnb3J5
U3RyaW5nID0gQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVJlY29yZDsKKyAgICBjYXNlIFBsYXlBbmRS
ZWNvcmQ6CisgICAgICAgIGNhdGVnb3J5U3RyaW5nID0gQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBs
YXlBbmRSZWNvcmQ7CisgICAgY2FzZSBBdWRpb1Byb2Nlc3Npbmc6CisgICAgICAgIGNhdGVnb3J5
U3RyaW5nID0gQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUF1ZGlvUHJvY2Vzc2luZzsKKyAgICBjYXNl
IE5vbmU6CisgICAgZGVmYXVsdDoKKyAgICAgICAgY2F0ZWdvcnlTdHJpbmcgPSBuaWw7CisgICAg
fQorICAgIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldENhdGVnb3J5OmNhdGVn
b3J5U3RyaW5nIGVycm9yOm5pbF07Cit9CisKK0F1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1
ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkoKSBjb25zdAoreworICAgIE5TU3RyaW5nKiBjYXRlZ29yeVN0
cmluZyA9IFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIGNhdGVnb3J5XTsKKyAgICBp
ZiAoW2NhdGVnb3J5U3RyaW5nIGlzRXF1YWw6QVZBdWRpb1Nlc3Npb25DYXRlZ29yeUFtYmllbnRd
KQorICAgICAgICByZXR1cm4gQW1iaWVudFNvdW5kOworICAgIGlmIChbY2F0ZWdvcnlTdHJpbmcg
aXNFcXVhbDpBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0FtYmllbnRdKQorICAgICAgICByZXR1
cm4gU29sb0FtYmllbnRTb3VuZDsKKyAgICBpZiAoW2NhdGVnb3J5U3RyaW5nIGlzRXF1YWw6QVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrXSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWJh
Y2s7CisgICAgaWYgKFtjYXRlZ29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdv
cnlSZWNvcmRdKQorICAgICAgICByZXR1cm4gUmVjb3JkQXVkaW87CisgICAgaWYgKFtjYXRlZ29y
eVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkXSkKKyAg
ICAgICAgcmV0dXJuIFBsYXlBbmRSZWNvcmQ7CisgICAgaWYgKFtjYXRlZ29yeVN0cmluZyBpc0Vx
dWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmddKQorICAgICAgICByZXR1
cm4gQXVkaW9Qcm9jZXNzaW5nOworICAgIHJldHVybiBOb25lOworfQorCit2b2lkIEF1ZGlvU2Vz
c2lvbjo6c2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit7CisgICAg
aWYgKG1fcHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5Owor
ICAgIHNldENhdGVnb3J5KGNhdGVnb3J5KTsKK30KKworQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5
cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGU7Cit9CisKK2Zsb2F0IEF1ZGlvU2Vzc2lvbjo6
c2FtcGxlUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVk
SW5zdGFuY2VdIHNhbXBsZVJhdGVdOworfQorCitzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJP
Zk91dHB1dENoYW5uZWxzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBz
aGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVsc107Cit9CisKK3ZvaWQgQXVkaW9T
ZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgW1tBVkF1ZGlvU2Vzc2lvbiBz
aGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOmFjdGl2ZSBlcnJvcjpuaWxdOworfQorCitmbG9hdCBB
dWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gcHJlZmVycmVkSU9CdWZmZXJEdXJh
dGlvbl07Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJEdXJhdGlv
bihmbG9hdCBkdXJhdGlvbikKK3sKKyAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNl
XSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9yOm5pbF07Cit9CisK
K30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>
<flag name="review"
          id="218241"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>