<?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>169394</bug_id>
          
          <creation_ts>2017-03-08 16:52:07 -0800</creation_ts>
          <short_desc>Add new delegate methods</short_desc>
          <delta_ts>2017-03-09 10:33:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285099</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-03-08 16:52:07 -0800</bug_when>
    <thetext>Add new delegate methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285100</commentid>
    <comment_count>1</comment_count>
      <attachid>303865</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-03-08 16:53:19 -0800</bug_when>
    <thetext>Created attachment 303865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285104</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-08 16:56:07 -0800</bug_when>
    <thetext>Attachment 303865 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:534:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 5 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285351</commentid>
    <comment_count>3</comment_count>
      <attachid>303927</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-03-09 09:40:19 -0800</bug_when>
    <thetext>Created attachment 303927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285353</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 09:41:16 -0800</bug_when>
    <thetext>Attachment 303927 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285387</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-03-09 10:33:33 -0800</bug_when>
    <thetext>Committed r213647: &lt;http://trac.webkit.org/changeset/213647&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303865</attachid>
            <date>2017-03-08 16:53:19 -0800</date>
            <delta_ts>2017-03-09 09:40:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169394-20170308165319.patch</filename>
            <type>text/plain</type>
            <size>22730</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Q1M2VmZWUzNjJiMjFm
NTRhY2VhNTdiNmI5MjYxNjU3OTZlMzA5ZC4uN2NkOTJlOWYyMTM4ZGQ3OTAwNDU2MjhhMjNhZDU4
ZjI3ZTBkNWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE3LTAzLTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIG5ldyBkZWxl
Z2F0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkzOTQKKyAgICAgICAgUGFydCBvZiByZGFyOi8vcHJvYmxlbS8yODg4MDcxNC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIGludmFsaWRhdGVdKToKKyAgICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50
TWV0aG9kOmhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpk
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKFdlYktpdDo6
dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1Bh
eW1lbnRFcnJvckNvZGUpOgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3IpOgorICAgICAgICAo
V2ViS2l0Ojp0b05TRXJyb3JzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbik6CisKKzIwMTctMDMtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBDbGVhbiB1cCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5MzkzCiAgICAgICAgIFBhcnQgb2YgcmRhcjovL3Byb2JsZW0vMjg4ODA3MTQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAppbmRleCA1NmY5Y2NmODU5
ODcyODRhZWUyMTViNDAwNTY5N2MzOTI1NzI0MTNkLi42NDEwNDRhYzIyNTIyYjI1MDViNjkzNjJi
MTczYzY3YzEyZDE2YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLmgKQEAgLTUyLDEwICs1MiwxNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVz
dD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTAog
ICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9yICop
PiBfc2Vzc2lvbkJsb2NrOwogCiAgICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0YXRlOworI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApCisgICAgQmxvY2tQdHI8dm9pZCAoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3Vs
dCAqKT4gX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbjsKKyAgICBCbG9ja1B0cjx2b2lkIChQ
S1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFBheW1lbnRN
ZXRob2RDb21wbGV0aW9uOworICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ01ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsK
KyAgICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICopPiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKKyNlbHNlCiAgICAgQmxv
Y2tQdHI8dm9pZCAoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyk+IF9wYXltZW50QXV0aG9y
aXplZENvbXBsZXRpb247CiAgICAgQmxvY2tQdHI8dm9pZCAoTlNBcnJheSAqKT4gX2RpZFNlbGVj
dFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwogICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb247CiAgICAgQmxvY2tQdHI8dm9pZCAoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cywgTlNBcnJheSAqLCBOU0FycmF5ICopPiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxl
dGlvbjsKKyNlbmRpZgogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRp
bmF0b3JQcm94eTooV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCmluZGV4IDY5MjVmMzczMGZmYTM0OWRkYmFlZTFiN2ExODczOWIyOTBhNTMz
ZGQuLmI0ODQ5NjU2MDU3MGY3OWY1MGNjNTQyNGQ1NDk0OWI2N2NjNWZjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC01Nyw2ICs1Nywx
NCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXltZW50TmV0d29ya01hc3RlckNh
cmQsIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudE5l
dHdvcmtQcml2YXRlTGFiZWwsIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NL
aXQsIFBLUGF5bWVudE5ldHdvcmtWaXNhLCBOU1N0cmluZyAqKTsKIAorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CitTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCkK
K1NPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSkKK1NPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdD
b250YWN0VXBkYXRlKQorU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ01ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1l
bnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkICheUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uKShCT09MIGlzVmFsaWQsIE5TRXJyb3IgKmVycm9yKTsK
IGV4dGVybiAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJB
bmREb21haW4oTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFr
ZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKTsKIApAQCAtNzgsNyArODYsMTEgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nh
bk1ha2VQYXltZW50c1dpdGhNZXIKIHsKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkg
PSBudWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7CisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkKKyAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5T
KFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3Rh
dHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczogQFtdXSkuZ2V0
KCkpOworI2Vsc2UKICAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7CisjZW5kaWYKICAgICAgICAgX3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbiA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMTA5LDEwICsxMjEs
MjQgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNz
S2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXIKICAgICB9XTsKIH0KIAotLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAq
KXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cykpY29tcGxldGlvbgorc3RhdGljIFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZCB0b1NoaXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRob2QgKnNoaXBwaW5nTWV0aG9kKQor
eworICAgIEFTU0VSVChzaGlwcGluZ01ldGhvZCk7CisKKyAgICBXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6U2hpcHBpbmdNZXRob2QgcmVzdWx0OworICAgIHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5n
TWV0aG9kLmxhYmVsOworICAgIHJlc3VsdC5kZXRhaWwgPSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7
CisgICAgcmVzdWx0LmFtb3VudCA9IFtzaGlwcGluZ01ldGhvZC5hbW91bnQgZGVjaW1hbE51bWJl
ckJ5TXVsdGlwbHlpbmdCeVBvd2VyT2YxMDoyXS5pbnRlZ2VyVmFsdWU7CisgICAgcmVzdWx0Lmlk
ZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb24K
IHsKICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21w
bGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKKyAgICAgICAgY29t
cGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5j
ZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVy
cm9yczogQFtdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjIsMjMg
KzE0OCwyMSBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQs
IFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcgogICAgIF93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQp
KTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCB0
b1NoaXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRob2QgKnNoaXBwaW5nTWV0aG9kKQorLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBL
UGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50
UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgogewotICAgIEFT
U0VSVChzaGlwcGluZ01ldGhvZCk7Ci0KLSAgICBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hp
cHBpbmdNZXRob2QgcmVzdWx0OwotICAgIHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxh
YmVsOwotICAgIHJlc3VsdC5kZXRhaWwgPSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7Ci0gICAgcmVz
dWx0LmFtb3VudCA9IFtzaGlwcGluZ01ldGhvZC5hbW91bnQgZGVjaW1hbE51bWJlckJ5TXVsdGlw
bHlpbmdCeVBvd2VyT2YxMDoyXS5pbnRlZ2VyVmFsdWU7Ci0gICAgcmVzdWx0LmlkZW50aWZpZXIg
PSBzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyOworICAgIGlmICghX3dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRS
ZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgcGF5bWVudFN1bW1hcnlJdGVtczpAW11dKS5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IEFTU0VSVCghX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKTsKKyAgICBfZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworICAgIF93ZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVudE1ldGhvZChXZWJDb3JlOjpQYXltZW50
TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKIH0KIAotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hp
cHBpbmdNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVt
cykpY29tcGxldGlvbgoteworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2Qg
aGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1
cGRhdGUpKWNvbXBsZXRpb24gewogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1
cmUsIEBbXSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIHBheW1lbnRTdW1tYXJ5SXRlbXM6QFtdXSkuZ2V0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDcsMTAgKzE3MSwxMCBAQCBzdGF0
aWMgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRo
b2QoUEtTaGlwcGluZ01ldGhvZAogICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwog
fQogCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBp
bmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KHZvaWQgKF4pKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2Qg
Kj4gKnNoaXBwaW5nTWV0aG9kcywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3Vt
bWFyeUl0ZW1zKSljb21wbGV0aW9uCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGhhbmRsZXI6
KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSkp
Y29tcGxldGlvbgogewogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBb
XSwgQFtdKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAW10gcGF5bWVudFN1bW1hcnlJdGVt
czpAW10gc2hpcHBpbmdNZXRob2RzOkBbXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTU4LDYgKzE4MiwzMSBAQCBzdGF0aWMgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6
OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZAogICAgIF9k
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKICAgICBfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChXZWJDb3Jl
OjpQYXltZW50Q29udGFjdChjb250YWN0KSk7CiB9CisjZWxzZQorLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1l
bnQgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykpY29t
cGxldGlvbgoreworICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7CisgICAg
ICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFfcGF5bWVudEF1dGhvcml6ZWRDb21w
bGV0aW9uKTsKKyAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gY29tcGxldGlvbjsK
KworICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChX
ZWJDb3JlOjpQYXltZW50KHBheW1lbnQpKTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICop
c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJ
dGVtcykpY29tcGxldGlvbgoreworICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KSB7CisgICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1
cmUsIEBbXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIV9kaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS0+ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhv
ZCkpOworfQogCiAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0
UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9u
Oih2b2lkICheKShOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMp
KWNvbXBsZXRpb24KIHsKQEAgLTE3Miw2ICsyMjEsMTkgQEAgc3RhdGljIFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCB0b1NoaXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRo
b2QKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFBheW1lbnRNZXRo
b2QoV2ViQ29yZTo6UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9kKSk7CiB9CiAKKy0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBL
Q29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdN
ZXRob2RzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNv
bXBsZXRpb24KK3sKKyAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgeworICAg
ICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlLCBAW10s
IEBbXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIV9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKKyAgICBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
Q29tcGxldGlvbiA9IGNvbXBsZXRpb247CisgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoV2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29udGFj
dCkpOworfQorI2VuZGlmCisKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRpZEZpbmlzaDooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlcgogewogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KQpAQCAtMzAz
LDYgKzM2NSwzMSBAQCBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50Q2Fw
YWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3N0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMpCit7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgc3dpdGNoIChz
dGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpT
dWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nl
c3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVy
ZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwor
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkludmFsaWRCaWxs
aW5nUG9zdGFsQWRkcmVzczoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6SW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczoKKyAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdQ
b3N0YWxBZGRyZXNzOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXM6OkludmFsaWRTaGlwcGluZ0NvbnRhY3Q6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKKyAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKKyAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6CisgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0OworICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6CisgICAgICAg
IHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsKKyAgICB9Cisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCit9CisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKSAmJiBfX2hhc19pbmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYUFkZGl0aW9ucy5tbT4pCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYUFkZGl0aW9ucy5tbT4KICNlbHNlCkBAIC00NDAs
NDAgKzUyNyw1OCBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1
ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKK3N0YXRpYyBQS1BheW1lbnRFcnJvckNvZGUgdG9QS1BheW1l
bnRFcnJvckNvZGUoV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlIGNvZGUpCiB7Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVz
czoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmls
bGluZ1Bvc3RhbEFkZHJlc3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1czo6SW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwot
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkludmFsaWRTaGlw
cGluZ0NvbnRhY3Q6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
SW52YWxpZFNoaXBwaW5nQ29udGFjdDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsKKyAgICBzd2l0Y2ggKGNvZGUpIHsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93bkVycm9yOworICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250YWN0SW52YWxpZDoKKyAgICAgICAgICAg
IHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3I7CisgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Cisg
ICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QmlsbGluZ0NvbnRhY3RJbnZhbGlkRXJyb3I7Cisg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNh
YmxlOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5nQWRkcmVzc1Vuc2Vydmlj
ZWFibGVFcnJvcjsKICAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiB9CiAKK3N0
YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRF
cnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5t
ZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKKworICAgIC8vIEZJWE1F
OiBTZXQgdGhlIGNvbnRhY3QgZmllbGQga2V5LgorCisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vy
cm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpnZXRQS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6
dG9QS1BheW1lbnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCld
KTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAgIGZvciAoYXV0byBl
cnJvciA6IGVycm9ycykgeworICAgICAgICBpZiAoYXV0byBuc0Vycm9yID0gdG9OU0Vycm9yKGVy
cm9yKSkKKyAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3IuZ2V0KCldOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7
CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAgICAg
QVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKIAog
ICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKLQogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29y
ZTo6aXNGaW5hbFN0YXRlU3RhdHVzKHN0YXR1cyk7CisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorICAgIGF1
dG8gcGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0
LT5lcnJvcnMpLmdldCgpIDogQFtdXSk7CisgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdC5nZXQoKSk7CisjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpKTsKKyNlbmRpZgogICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhv
cml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIApAQCAtNDk2LDcgKzYwMSwxMiBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oY29uc3QgcwogICAgIGlmICh1cGRhdGUpCiAgICAgICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwog
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkKKyAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9w
dE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgcGF5
bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29t
cGxldGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpKTsKKyNlbHNlCiAgICAgbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cyks
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1
bW1hcnlJdGVtcy5nZXQoKSk7CisjZW5kaWYKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9
IG51bGxwdHI7CiB9CiAKQEAgLTUxNyw3ICs2MjcsMTIgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25z
dAogICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUoc2hpcHBpbmdNZXRob2RzKTsKICAgICB9CiAKKyNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQorICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5T
KFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9y
czp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbXSBwYXltZW50
U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCld
KTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
Z2V0KCkpOworI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cyksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkp
OworI2VuZGlmCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIApA
QCAtNTI2LDIwICs2NDEsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QKICAgICBBU1NFUlQo
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKICAgICBBU1NFUlQobV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwogCi0gICAgaWYgKHVwZGF0
ZSkgewotICAgICAgICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHVw
ZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAg
ICAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbS5n
ZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5
bWVudFN1bW1hcnlJdGVtKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQotICAg
ICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07
CisgICAgYXV0byBzdGF0dXMgPSB1cGRhdGUgPyB1cGRhdGUtPnN0YXR1cyA6IFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOwogCi0gICAgICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9
IFdURk1vdmUocGF5bWVudFN1bW1hcnlJdGVtcyk7Ci0gICAgfQorICAgIGlmICh1cGRhdGUpCisg
ICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5
bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90
YWxBbmRMaW5lSXRlbXMpOwogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyAgICBhdXRvIHBrUGF5bWVudE1l
dGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyhzdGF0dXMpIHBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOworI2Vs
c2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CisjZW5kaWYK
ICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNl
bGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303927</attachid>
            <date>2017-03-09 09:40:19 -0800</date>
            <delta_ts>2017-03-09 10:18:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169394-20170309094018.patch</filename>
            <type>text/plain</type>
            <size>22646</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmZkOTk2MDNkNmE4ZjVj
YzFmNjViMTc5YTQ1YzA1YmM3NzRhMzg4Yy4uYTU1NDgwM2VhYmQ5ZGY0OTc3MjVjMDM5ZmZlZGU2
MTI4NjBkM2RlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAzLTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG5ldyBkZWxl
Z2F0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkzOTQKKyAgICAgICAgUGFydCBvZiByZGFyOi8vcHJvYmxlbS8yODg4MDcxNC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIGludmFsaWRhdGVdKToKKyAgICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50
TWV0aG9kOmhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpk
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKFdlYktpdDo6
dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1Bh
eW1lbnRFcnJvckNvZGUpOgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3IpOgorICAgICAgICAo
V2ViS2l0Ojp0b05TRXJyb3JzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbik6CisKIDIwMTctMDMtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV0tXZWJWaWV3IHNob3VsZCBhdXRvbWF0aWNh
bGx5IHJlc3BlY3QgaW5zZXRzIGZyb20gdGhlIHZpZXcgY29udHJvbGxlciBoaWVyYXJjaHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDU2Zjlj
Y2Y4NTk4NzI4NGFlZTIxNWI0MDA1Njk3YzM5MjU3MjQxM2QuLjY0MTA0NGFjMjI1MjJiMjUwNWI2
OTM2MmIxNzNjNjdjMTJkMTZiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EuaApAQCAtNTIsMTAgKzUyLDE3IEBAIFJldGFpblB0cjxQS1BheW1lbnRS
ZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
VVJMCiAgICAgQmxvY2tQdHI8dm9pZCAoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJy
b3IgKik+IF9zZXNzaW9uQmxvY2s7CiAKICAgICBCT09MIF9kaWRSZWFjaEZpbmFsU3RhdGU7Cisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKKyAgICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0ICopPiBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOworICAgIEJsb2NrUHRyPHZv
aWQgKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopPiBfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb247CisgICAgQmxvY2tQdHI8dm9pZCAoUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlICopPiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uOworICAgIEJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RV
cGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOworI2Vsc2UKICAg
ICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKT4gX3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbjsKICAgICBCbG9ja1B0cjx2b2lkIChOU0FycmF5ICopPiBfZGlk
U2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247CiAgICAgQmxvY2tQdHI8dm9pZCAoUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kQ29tcGxldGlvbjsKICAgICBCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzLCBOU0FycmF5ICosIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RD
b21wbGV0aW9uOworI2VuZGlmCiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRD
b29yZGluYXRvclByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0KaW5kZXggNjkyNWYzNzMwZmZhMzQ5ZGRiYWVlMWI3YTE4NzM5YjI5
MGE1MzNkZC4uMDQ2MmI3ODQ0ZjFkNTAxNjFkMjlkOWYwZWZhMTJjNTc2NjE2OGY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTU3LDYg
KzU3LDE0IEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnROZXR3b3JrTWFz
dGVyQ2FyZCwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXlt
ZW50TmV0d29ya1ByaXZhdGVMYWJlbCwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQo
UGFzc0tpdCwgUEtQYXltZW50TmV0d29ya1Zpc2EsIE5TU3RyaW5nICopOwogCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMCkKK1NPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0KQorU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlKQorU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ0NvbnRhY3RVcGRhdGUpCitTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQorU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBL
UGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKTsKKyNlbmRpZgorCiB0eXBlZGVmIHZvaWQg
KF5QS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJy
b3IpOwogZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwogCkBAIC03OCw3ICs4NiwxMSBA
QCBTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQs
IFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcgogewogICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSA9IG51bGxwdHI7CiAgICAgaWYgKF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pIHsK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQorICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFk
b3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdp
dGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOiBAW11d
KS5nZXQoKSk7CisjZWxzZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKKyNlbmRpZgogICAgICAgICBfcGF5
bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKICAgICB9CiB9CkBAIC0xMDksMTAg
KzEyMSwyNCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQs
IFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcgogICAgIH1dOwogfQogCi0tICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXlt
ZW50ICopcGF5bWVudCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKSljb21wbGV0aW9uCitzdGF0aWMgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBw
aW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hpcHBpbmdNZXRo
b2QpCit7CisgICAgQVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKKworICAgIFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7CisgICAgcmVzdWx0LmxhYmVsID0gc2hp
cHBpbmdNZXRob2QubGFiZWw7CisgICAgcmVzdWx0LmRldGFpbCA9IHNoaXBwaW5nTWV0aG9kLmRl
dGFpbDsKKyAgICByZXN1bHQuYW1vdW50ID0gW3NoaXBwaW5nTWV0aG9kLmFtb3VudCBkZWNpbWFs
TnVtYmVyQnlNdWx0aXBseWluZ0J5UG93ZXJPZjEwOjJdLmludGVnZXJWYWx1ZTsKKyAgICByZXN1
bHQuaWRlbnRpZmllciA9IHNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXI7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRs
ZXI6KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxl
dGlvbgogewogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOworICAgICAg
ICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdElu
c3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1
cmUgZXJyb3JzOiBAW11dKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEy
MiwyMyArMTQ4LDIxIEBAIFNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdl
YktpdCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyCiAgICAgX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LT5kaWRBdXRob3JpemVQYXltZW50KFdlYkNvcmU6OlBheW1lbnQocGF5
bWVudCkpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hpcHBpbmdNZXRob2QpCist
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBoYW5kbGVyOih2b2lkICheKShQS1Bh
eW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uCiB7Ci0g
ICAgQVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKLQotICAgIFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7Ci0gICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdNZXRo
b2QubGFiZWw7Ci0gICAgcmVzdWx0LmRldGFpbCA9IHNoaXBwaW5nTWV0aG9kLmRldGFpbDsKLSAg
ICByZXN1bHQuYW1vdW50ID0gW3NoaXBwaW5nTWV0aG9kLmFtb3VudCBkZWNpbWFsTnVtYmVyQnlN
dWx0aXBseWluZ0J5UG93ZXJPZjEwOjJdLmludGVnZXJWYWx1ZTsKLSAgICByZXN1bHQuaWRlbnRp
ZmllciA9IHNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXI7CisgICAgaWYgKCFfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5
bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBwYXltZW50U3VtbWFyeUl0ZW1zOkBb
XV0pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHJldHVybiByZXN1bHQ7
CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24pOworICAgIF9k
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisgICAgX3dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBh
eW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOwogfQogCi0tICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2Qg
KilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFy
eUl0ZW1zKSljb21wbGV0aW9uCi17CistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01l
dGhvZCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGUgKnVwZGF0ZSkpY29tcGxldGlvbiB7CiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
RmFpbHVyZSwgQFtdKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgcGF5bWVudFN1bW1hcnlJdGVtczpAW11d
KS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0NywxMCArMTcxLDEwIEBA
IHN0YXRpYyBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgdG9TaGlwcGlu
Z01ldGhvZChQS1NoaXBwaW5nTWV0aG9kCiAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LT5kaWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9k
KSk7CiB9CiAKLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoodm9pZCAoXiko
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtTaGlwcGluZ01l
dGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+
ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24KKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgaGFu
ZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqdXBk
YXRlKSljb21wbGV0aW9uCiB7CiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkp
IHsKLSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSwgQFtdLCBAW10pOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50
UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbXSBwYXltZW50U3VtbWFy
eUl0ZW1zOkBbXSBzaGlwcGluZ01ldGhvZHM6QFtdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xNTgsNiArMTgyLDMxIEBAIHN0YXRpYyBXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6U2hpcHBpbmdNZXRob2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBwaW5nTWV0aG9kCiAg
ICAgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwogICAg
IF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdl
YkNvcmU6OlBheW1lbnRDb250YWN0KGNvbnRhY3QpKTsKIH0KKyNlbHNlCistICh2b2lkKXBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICop
cGF5bWVudCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
KSljb21wbGV0aW9uCit7CisgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsK
KyAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIV9wYXltZW50QXV0aG9yaXpl
ZENvbXBsZXRpb24pOworICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24gPSBjb21wbGV0
aW9uOworCisgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRBdXRob3JpemVQYXlt
ZW50KFdlYkNvcmU6OlBheW1lbnQocGF5bWVudCkpOworfQorCistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3Vt
bWFyeUl0ZW1zKSljb21wbGV0aW9uCit7CisgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
RmFpbHVyZSwgQFtdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghX2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7CisgICAgX2RpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisgICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5n
TWV0aG9kKSk7Cit9CiAKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRT
ZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBs
ZXRpb246KHZvaWQgKF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJ
dGVtcykpY29tcGxldGlvbgogewpAQCAtMTcyLDYgKzIyMSwxOSBAQCBzdGF0aWMgV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGlu
Z01ldGhvZAogICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKIH0KIAorLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlw
cGluZ01ldGhvZHMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVt
cykpY29tcGxldGlvbgoreworICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7
CisgICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUs
IEBbXSwgQFtdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RTaGlwcGluZ0Nv
bnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKKyAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHktPmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChXZWJDb3JlOjpQYXltZW50Q29udGFjdChj
b250YWN0KSk7Cit9CisjZW5kaWYKKwogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGlkRmluaXNoOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyCiB7CiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpCkBA
IC0zMDMsNiArMzY1LDMxIEBAIHN0YXRpYyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hh
bnRDYXBhYmlsaXRpZXMoY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykKK3sKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBzd2l0
Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
U3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpG
YWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1
cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6SW52YWxp
ZEJpbGxpbmdQb3N0YWxBZGRyZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzczsKKyAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNz
OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlw
cGluZ1Bvc3RhbEFkZHJlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1czo6SW52YWxpZFNoaXBwaW5nQ29udGFjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OworICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAg
IH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKK30KKwogI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspICYmIF9faGFzX2luY2x1ZGUoPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPikKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hQWRkaXRpb25zLm1tPgogI2Vsc2UKQEAg
LTQ0MCw0MCArNTI3LDU4IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVu
dFJlcXVlc3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorc3RhdGljIFBLUGF5bWVudEVycm9yQ29kZSB0b1BL
UGF5bWVudEVycm9yQ29kZShXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGUgY29kZSkKIHsKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBzd2l0Y2ggKHN0YXR1cykgewot
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6SW52YWxpZEJpbGxpbmdQb3N0YWxB
ZGRyZXNzOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFs
aWRCaWxsaW5nUG9zdGFsQWRkcmVzczsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOgotICAgICAgICByZXR1
cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJl
c3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6SW52YWxp
ZFNoaXBwaW5nQ29udGFjdDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKLSAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7Ci0gICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIHN3aXRjaCAoY29kZSkg
eworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAg
ICByZXR1cm4gUEtQYXltZW50VW5rbm93bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQ
YXltZW50U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRCaWxsaW5nQ29udGFjdEludmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2VydmljYWJsZToKKyAgICAgICAgcmV0dXJuIFBL
UGF5bWVudFNoaXBwaW5nQWRkcmVzc1Vuc2VydmljZWFibGVFcnJvcjsKICAgICB9Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9O
U0Vycm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1
c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Cisg
ICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERl
c2NyaXB0aW9uS2V5XTsKKworICAgIC8vIEZJWE1FOiBTZXQgdGhlIGNvbnRhY3QgZmllbGQga2V5
LgorCisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpn
ZXRQS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1lbnRFcnJvckNvZGUoZXJyb3Iu
Y29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKK30KKworc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBl
cnJvcnMpCit7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKworICAgIGZvciAoYXV0byBlcnJvciA6IGVycm9ycykgeworICAgICAgICBp
ZiAoYXV0byBuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIFtyZXN1bHQg
YWRkT2JqZWN0Om5zRXJyb3IuZ2V0KCldOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisjZW5kaWYKKwogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21w
bGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKIAogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8g
cmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3Vj
Y2VzczsKLQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29yZTo6aXNGaW5hbFN0YXRlU3RhdHVzKHN0YXR1
cyk7CisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorICAgIGF1dG8gcGtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNl
KCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJy
b3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFtdXSk7Cisg
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
QXV0aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5nZXQoKSk7
CisjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyhzdGF0dXMpKTsKKyNlbmRpZgogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsK
IH0KIApAQCAtNDk2LDcgKzYwMSwxMiBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3QgcwogICAgIGlm
ICh1cGRhdGUpCiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVw
ZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyAgICBhdXRv
IHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgcGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMu
Z2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBwaW5nTWV0aG9kVXBk
YXRlLmdldCgpKTsKKyNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24odG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cyksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CisjZW5kaWYK
ICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IG51bGxwdHI7CiB9CiAKQEAgLTUxNyw3ICs2
MjcsMTIgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAogICAgICAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUo
c2hpcHBpbmdNZXRob2RzKTsKICAgICB9CiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorICAgIGF1dG8gcGtT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0
ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQo
KSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBs
ZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCkpOworI2Vsc2UKICAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cyks
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdN
ZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOworI2VuZGlmCiAgICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIApAQCAtNTI2LDIwICs2NDEsMTYgQEAgdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oY29uc3Qgc3QKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyKTsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUpOwogCi0gICAgaWYgKHVwZGF0ZSkgewotICAgICAgICBhdXRvIHBheW1lbnRT
dW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMu
bGluZUl0ZW1zKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAgICAgIFtwYXltZW50U3VtbWFy
eUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbS5nZXQoKV07Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRl
bXMgYWRkT2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07Ci0KLSAgICAgICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gV1RG
TW92ZShwYXltZW50U3VtbWFyeUl0ZW1zKTsKLSAgICB9CisgICAgaWYgKHVwZGF0ZSkKKyAgICAg
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFu
ZExpbmVJdGVtcyk7CiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorICAgIGF1dG8gc3RhdHVzID0gdXBkYXRl
ID8gdXBkYXRlLT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6
U3VjY2VzczsKKyAgICBhdXRvIHBrUGF5bWVudE1ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoU3Rh
dHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIHBheW1lbnRTdW1tYXJ5
SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXlt
ZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbihwa1Bh
eW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOworI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0
aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVu
dFN1bW1hcnlJdGVtcy5nZXQoKSk7CisjZW5kaWYKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
ID0gbnVsbHB0cjsKIH0KIAo=
</data>
<flag name="review"
          id="325526"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>