<?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>29788</bug_id>
          
          <creation_ts>2009-09-27 10:58:55 -0700</creation_ts>
          <short_desc>Web Inspector: Migrate database inspection to the injected script-based schema.</short_desc>
          <delta_ts>2009-10-07 02:32:35 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150398</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-27 10:58:55 -0700</bug_when>
    <thetext>This one is a bit different than the others since db transactions can&apos;t be executed synchronously on the injected script side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150399</commentid>
    <comment_count>1</comment_count>
      <attachid>40203</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-27 11:01:16 -0700</bug_when>
    <thetext>Created attachment 40203
db</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152844</commentid>
    <comment_count>2</comment_count>
      <attachid>40203</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-06 13:27:57 -0700</bug_when>
    <thetext>Comment on attachment 40203
db

&gt; +        errorCallback(null, &quot;No database&quot;);

Is this string shown to the user? If so it should be a UIString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152999</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-07 02:32:35 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomBinding.h
	M	WebCore/bindings/v8/custom/V8InspectorBackendCustom.cpp
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorDatabaseResource.cpp
	M	WebCore/inspector/InspectorDatabaseResource.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/front-end/Database.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/InjectedScriptAccess.js
	M	WebCore/inspector/front-end/StoragePanel.js
	M	WebCore/inspector/front-end/inspector.js
Committed r49234</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40203</attachid>
            <date>2009-09-27 11:01:16 -0700</date>
            <delta_ts>2009-10-06 13:27:57 -0700</delta_ts>
            <desc>db</desc>
            <filename>db</filename>
            <type>text/plain</type>
            <size>39090</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWFmMGEzNC4uNmJiNTA5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAwOS0wOS0yNyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWlncmF0ZSBkYXRhYmFzZSBpbnNw
ZWN0aW9uIHRvIHRoZSBpbmplY3RlZCBzY3JpcHQtYmFzZWQgc2NoZW1hLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTc4OAorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW5zcGVjdG9yQmFja2VuZDo6ZGF0YWJhc2VGb3JJZCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FM
TEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkaXNwYXRjaE9uSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZGF0YWJhc2VG
b3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpzZWxlY3REYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXREYXRhYmFzZVRhYmxl
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6cmVwb3J0RGlkRGlz
cGF0Y2hPbkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNlbGVjdERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRhdGFiYXNlRm9ySWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFVzZURPTVN0b3JhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2VsZWN0RE9NU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRET01TdG9yYWdlUmVzb3Vy
Y2VGb3JJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJp
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpkYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjppZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjphZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6c2VsZWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmQ6OmRpZEdldERhdGFiYXNlVGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZDo6YWRkRE9NU3RvcmFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFz
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlLmdldCBpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGF0YWJhc2UucHJvdG90eXBlLnNldCBuYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
YmFzZS5wcm90b3R5cGUuc2V0IHZlcnNpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFi
YXNlLnByb3RvdHlwZS5zZXQgZG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFz
ZS5wcm90b3R5cGUuZ2V0VGFibGVOYW1lcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJh
c2UucHJvdG90eXBlLmV4ZWN1dGVTcWwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW5qZWN0ZWRTY3JpcHQuanM6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5kaXNwYXRjaCk6Cisg
ICAgICAgIChJbmplY3RlZFNjcmlwdC5leGVjdXRlU3FsKToKKyAgICAgICAgKEluamVjdGVkU2Ny
aXB0LmV4ZWN1dGVTcWwuZXJyb3JDYWxsYmFjayk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5l
eGVjdXRlU3FsLnF1ZXJ5VHJhbnNhY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanM6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEFjY2Vz
cy5faW5zdGFsbEhhbmRsZXIuSW5qZWN0ZWRTY3JpcHRBY2Nlc3MubWV0aG9kTmFtZSk6CisgICAg
ICAgIChJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2VsZWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuZGF0YUdyaWRGb3JSZXN1bHQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmFkZERhdGFiYXNlKToKKwogMjAwOS0wOS0yNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFBhcnQgMiBvZiAyOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8y
OTc1Mz4gRGVyaXZlZFNvdXJjZXMubWFrZSBicm9rZW4gZm9yIG5vbi1NYWMgdGFyZ2V0cwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IDU4M2Q5NzEuLjFhNDAwMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTEyMiwyNyArMTIyLDIwIEBAIEpTVmFsdWUgSlNJbnNw
ZWN0b3JCYWNrZW5kOjpzZWFyY2goRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQogfQogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQotSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6
OmRhdGFiYXNlVGFibGVOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
CitKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6ZGF0YWJhc2VGb3JJZChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBKU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjphc1dyYXBwZXIoYXJn
cy5hdCgwKSk7Ci0gICAgaWYgKCF3cmFwcGVyKQorICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGlj
ID0gaW1wbCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaWYgKCFpYykKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0b0RhdGFi
YXNlKHdyYXBwZXItPnVud3JhcHBlZE9iamVjdCgpKTsKKyAgICBEYXRhYmFzZSogZGF0YWJhc2Ug
PSBpbXBsKCktPmRhdGFiYXNlRm9ySWQoYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpKTsKICAgICBp
ZiAoIWRhdGFiYXNlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIHJlc3VsdDsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlTmFtZXMg
PSBkYXRhYmFzZS0+dGFibGVOYW1lcygpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRhYmxlTmFt
ZXMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChqc1N0cmluZyhleGVjLCB0YWJsZU5hbWVzW2ldKSk7Ci0KLSAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgcmVzdWx0KTsKKyAgICBKU0RPTVdpbmRvdyog
aW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhpYy0+aW5zcGVjdGVkUGFnZSgpLT5tYWlu
RnJhbWUoKSk7CisgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChpbnNw
ZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgdG9KUyhleGVjLCBkYXRhYmFzZSkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5k
ZXggMjgxNDEyMS4uM2MwMmE2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgKQEAgLTQ0MSw2ICs0NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEFkZFNvdXJjZVRvRnJhbWUp
OwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZWFyY2gpOwogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRTZXR0aW5nKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kRGF0YWJhc2VGb3JJZCk7CiAgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZEluc3BlY3RlZFdpbmRvdyk7CiAgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQmFja2VuZFNldFNldHRpbmcpOwogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckJhY2tlbmRDdXJyZW50Q2FsbEZyYW1lKTsKQEAg
LTQ1Miw3ICs0NTMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soSW5zcGVjdG9yQmFja2VuZFVud3JhcE9iamVjdCk7CiAgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soSW5zcGVjdG9yQmFja2VuZFB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOwogI2lmIEVOQUJM
RShEQVRBQkFTRSkKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNrZW5kRGF0
YWJhc2VUYWJsZU5hbWVzKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JCYWNr
ZW5kU2VsZWN0RGF0YWJhc2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JCYWNrZW5kQ3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yQmFja2VuZEN1
c3RvbS5jcHAKaW5kZXggYzhkNmJmMi4uZjFlODA3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZC5oIgogCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0xMDIsMTEgKzEw
MywxNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woSW5zcGVjdG9yQmFja2VuZFNlYXJjaCkKIH0KIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JCYWNrZW5k
RGF0YWJhc2VUYWJsZU5hbWVzKQorQ0FMTEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckJhY2tlbmRE
YXRhYmFzZUZvcklkKQogewotICAgIElOQ19TVEFUUygiSW5zcGVjdG9yQmFja2VuZC5kYXRhYmFz
ZVRhYmxlTmFtZXMoKSIpOwotICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJlc3VsdCA9IHY4OjpB
cnJheTo6TmV3KDApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgSU5DX1NUQVRTKCJJbnNwZWN0
b3JCYWNrZW5kLmRhdGFiYXNlRm9ySWQoKSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
KyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEluc3BlY3RvckJhY2tlbmQq
IGluc3BlY3RvckJhY2tlbmQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxJ
bnNwZWN0b3JCYWNrZW5kPihWOENsYXNzSW5kZXg6OklOU1BFQ1RPUkJBQ0tFTkQsIGFyZ3MuSG9s
ZGVyKCkpOworICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IGluc3BlY3RvckJhY2tlbmQtPmRhdGFi
YXNlRm9ySWQoYXJnc1swXS0+VG9JbnQzMigpLT5WYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGFiYXNl
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0PERhdGFiYXNlPihWOENsYXNzSW5kZXg6OkRBVEFCQVNFLCBk
YXRhYmFzZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNw
cAppbmRleCBhZDBjNTEwLi5lOTk4ODg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
CisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKQEAgLTQwOCw3ICs0MDksNyBAQCB2b2lkIElu
c3BlY3RvckJhY2tlbmQ6OnN0ZXBPdXRPZkZ1bmN0aW9uSW5EZWJ1Z2dlcigpCiAKICNlbmRpZgog
Ci12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cykK
K3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBi
b29sIGFzeW5jKQogewogICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCA9IGluc3BlY3Rv
ckZyb250ZW5kKCk7CiAgICAgaWYgKCFmcm9udGVuZCkKQEAgLTQxNyw4ICs0MTgsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYgbWV0aG8KICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9p
bnNwZWN0b3JDb250cm9sbGVyLT5tX3NjcmlwdFN0YXRlLCBtX2luc3BlY3RvckNvbnRyb2xsZXIt
Pm1faW5qZWN0ZWRTY3JpcHRPYmosICJkaXNwYXRjaCIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG1ldGhvZE5hbWUpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGFyZ3VtZW50
cyk7CisgICAgaWYgKGFzeW5jKQorICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzdGF0
aWNfY2FzdDxpbnQ+KGNhbGxJZCkpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAg
ICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAg
IGlmIChhc3luYykKKyAgICAgICAgcmV0dXJuOyAgLy8gSW5qZWN0ZWRTY3JpcHQgd2lsbCByZXR1
cm4gcmVzdWx0IGFzeW5jaHJvbm91c2x5IGJ5IG1lYW5zIG9mIDo6cmVwb3J0RGlkRGlzcGF0Y2hP
bkluamVjdGVkU2NyaXB0LgogICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgIGZyb250ZW5k
LT5kaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoY2FsbElkLCAiIiwgdHJ1ZSk7CiAgICAgZWxz
ZQpAQCAtNTA0LDEwICs1MDksMzIgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjphZGROb2Rlc1Rv
U2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgbm9kZUlkcykKIH0KIAogI2lmIEVOQUJMRShEQVRB
QkFTRSkKK0RhdGFiYXNlKiBJbnNwZWN0b3JCYWNrZW5kOjpkYXRhYmFzZUZvcklkKGxvbmcgZGF0
YWJhc2VJZCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1
cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOworICAg
IHJldHVybiAwOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnNlbGVjdERhdGFiYXNlKERh
dGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
ID0gaW5zcGVjdG9yRnJvbnRlbmQoKSkKLSAgICAgICAgZnJvbnRlbmQtPnNlbGVjdERhdGFiYXNl
KGRhdGFiYXNlKTsKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPnNlbGVjdERhdGFiYXNlKGRhdGFiYXNlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjpnZXREYXRhYmFzZVRhYmxlTmFtZXMobG9uZyBjYWxsSWQsIGxvbmcg
ZGF0YWJhc2VJZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kID0gaW5z
cGVjdG9yRnJvbnRlbmQoKSkgeworICAgICAgICBTY3JpcHRBcnJheSByZXN1bHQgPSBmcm9udGVu
ZC0+bmV3U2NyaXB0QXJyYXkoKTsKKyAgICAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gbV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5kYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOworICAgICAgICBpZiAo
ZGF0YWJhc2UpIHsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlTmFtZXMgPSBkYXRh
YmFzZS0+dGFibGVOYW1lcygpOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGFibGVO
YW1lcy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNldChpLCB0YWJsZU5hbWVzW2ldKTsKKyAg
ICAgICAgfQorICAgICAgICBmcm9udGVuZC0+ZGlkR2V0RGF0YWJhc2VUYWJsZU5hbWVzKGNhbGxJ
ZCwgcmVzdWx0KTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtNTM3LDYgKzU2NCwxMiBAQCB2b2lk
IEluc3BlY3RvckJhY2tlbmQ6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25n
IHN0b3JhZ2VJZCwgY29uc3QgUwogfQogI2VuZGlmCiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
cmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIHJlc3VsdCwgYm9vbCBpc0V4Y2VwdGlvbikKK3sKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKSkKKyAgICAgICAgZnJvbnRlbmQtPmRp
ZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChjYWxsSWQsIHJlc3VsdCwgaXNFeGNlcHRpb24pOwor
fQorCiBJbnNwZWN0b3JET01BZ2VudCogSW5zcGVjdG9yQmFja2VuZDo6aW5zcGVjdG9yRE9NQWdl
bnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oCmluZGV4IDczOWQyOGUuLjM5MDI0ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIoKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaXNwYXRj
aE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwg
Y29uc3QgU3RyaW5nJiBhcmd1bWVudHMpOworICAgIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2Ny
aXB0KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIGNvbnN0IFN0cmluZyYg
YXJndW1lbnRzLCBib29sIGFzeW5jKTsKICAgICB2b2lkIGdldENoaWxkTm9kZXMobG9uZyBjYWxs
SWQsIGxvbmcgbm9kZUlkKTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZShsb25nIGNhbGxJZCwgbG9u
ZyBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUobG9uZyBjYWxsSWQsIGxvbmcgZWxlbWVudElkLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwpAQCAtMTQ4LDcgKzE0OCw5IEBAIHB1YmxpYzoKICAgICBsb25nIHB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZSwgYm9vbCBzZWxlY3RJblVJKTsKICAgICB2
b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5nJiBub2RlSWRzKTsKICNpZiBF
TkFCTEUoREFUQUJBU0UpCisgICAgRGF0YWJhc2UqIGRhdGFiYXNlRm9ySWQobG9uZyBkYXRhYmFz
ZUlkKTsKICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSk7CisgICAg
dm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMobG9uZyBjYWxsSWQsIGxvbmcgZGF0YWJhc2VJZCk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgdm9pZCBzZWxlY3RET01TdG9y
YWdlKFN0b3JhZ2UqIHN0b3JhZ2UpOwpAQCAtMTU2LDYgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgcmVtb3ZlRE9NU3Rv
cmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7
CiAjZW5kaWYKKyAgICB2b2lkIHJlcG9ydERpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGJvb2wgaXNFeGNlcHRpb24pOwogCiBwcml2
YXRlOgogICAgIEluc3BlY3RvckJhY2tlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBkOGNjZjlmLi4xNjA2OGJhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNTIsOCArNTIsOSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIGJvb2xlYW4gYWRkU291cmNlVG9GcmFtZShpbiBET01TdHJpbmcgbWltZVR5cGUsIGlu
IERPTVN0cmluZyBzb3VyY2VWYWx1ZSwgaW4gTm9kZSBmcmFtZSk7CiAgICAgICAgIFtDdXN0b21d
IHZvaWQgc2VhcmNoKGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIHF1ZXJ5KTsKICNpZiBkZWZp
bmVkKEVOQUJMRV9EQVRBQkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCi0gICAgICAgIFtDdXN0b21d
IERPTU9iamVjdCBkYXRhYmFzZVRhYmxlTmFtZXMoaW4gRGF0YWJhc2UgZGF0YWJhc2UpOworICAg
ICAgICB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBk
YXRhYmFzZUlkKTsKICNlbmRpZgorCiAgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBzZXR0aW5n
KGluIERPTVN0cmluZyBrZXkpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldFNldHRpbmcoaW4g
RE9NU3RyaW5nIGtleSwgaW4gRE9NT2JqZWN0ICB2YWx1ZSk7CiAgICAgICAgIFtDdXN0b21dIERP
TVdpbmRvdyBpbnNwZWN0ZWRXaW5kb3coKTsKQEAgLTEwNCwxNCArMTA1LDE1IEBAIG1vZHVsZSBj
b3JlIHsKIAogICAgICAgICBbQ3VzdG9tXSBBcnJheSBwcm9maWxlcygpOwogI2VuZGlmCi0gICAg
ICAgIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBET01T
dHJpbmcgbWV0aG9kTmFtZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50cyk7CisgICAgICAgIHZvaWQg
ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgbWV0
aG9kTmFtZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50cywgaW4gYm9vbGVhbiBhc3luYyk7CiAgICAg
ICAgIHZvaWQgZ2V0Q2hpbGROb2RlcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwog
ICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBlbGVtZW50
SWQsIGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWUpOwogICAgICAgICB2b2lk
IHJlbW92ZUF0dHJpYnV0ZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBlbGVtZW50SWQsIGluIERP
TVN0cmluZyBuYW1lKTsKICAgICAgICAgdm9pZCBzZXRUZXh0Tm9kZVZhbHVlKGluIGxvbmcgY2Fs
bElkLCBpbiBsb25nIG5vZGVJZCwgaW4gRE9NU3RyaW5nIHZhbHVlKTsKICAgICAgICAgdm9pZCBj
b3B5Tm9kZShpbiBsb25nIG5vZGVJZCk7CiAKLSAgICAgICAgLy8gQ2FsbGVkIGZyb20gSW5qZWN0
ZWRTY3JpcHQuCisgICAgICAgIC8vIENhbGxlZCBmcm9tIEluamVjdGVkU2NyaXB0IG9ubHkuCisg
ICAgICAgIC8vIFRPRE86IGV4dHJhY3QgaW50byBhIHNlcGFyYXRlIElETC4KICAgICAgICAgW0N1
c3RvbV0gRE9NT2JqZWN0IG5vZGVGb3JJZChpbiBsb25nIG5vZGVJZCk7CiAgICAgICAgIFtDdXN0
b21dIGxvbmcgd3JhcE9iamVjdChpbiBET01PYmplY3Qgb2JqZWN0KTsKICAgICAgICAgW0N1c3Rv
bV0gRE9NT2JqZWN0IHVud3JhcE9iamVjdChpbiBsb25nIG9iamVjdElkKTsKQEAgLTExOSw2ICsx
MjEsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgYWRkTm9kZXNUb1NlYXJjaFJlc3Vs
dChpbiBET01TdHJpbmcgbm9kZUlkcyk7CiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYm
IEVOQUJMRV9EQVRBQkFTRQogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNlbGVjdERhdGFiYXNlKGlu
IERPTU9iamVjdCBkYXRhYmFzZSk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBkYXRhYmFz
ZUZvcklkKGluIGxvbmcgZGF0YWJhc2VJZCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9E
T01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAgIFtDdXN0b21dIHZvaWQg
c2VsZWN0RE9NU3RvcmFnZShpbiBET01PYmplY3Qgc3RvcmFnZSk7CkBAIC0xMjYsNSArMTI5LDYg
QEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcg
Y2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSwgaW4gRE9NU3RyaW5n
IHZhbHVlKTsKICAgICAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJ
ZCwgaW4gbG9uZyBzdG9yYWdlSWQsIGluIERPTVN0cmluZyBrZXkpOwogI2VuZGlmCisgICAgICAg
IHZvaWQgcmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBp
biBET01TdHJpbmcgcmVzdWx0LCBpbiBib29sZWFuIGlzRXhjZXB0aW9uKTsKICAgICB9OwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2OWE3ZTYwLi43
MTRiOTRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
NjU3LDE0ICs2NTcsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlw
dE9iamVjdHMoKQogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Db25zb2xlKG1f
ZnJvbnRlbmQuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQotICAgIERhdGFiYXNlUmVz
b3VyY2VzU2V0OjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVzb3VyY2VzLmVu
ZCgpOwotICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZVJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCi0gICAgICAg
ICgqaXQpLT5iaW5kKG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIERhdGFiYXNlUmVzb3VyY2VzTWFw
OjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVzb3VyY2VzLmVuZCgpOworICAg
IGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCisgICAgICAgIGl0LT5zZWNv
bmQtPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCi0gICAgRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9
IG1fZG9tU3RvcmFnZVJlc291cmNlcy5lbmQoKTsKLSAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJj
ZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9
IGRvbVN0b3JhZ2VFbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5iaW5kKG1fZnJvbnRlbmQuZ2V0
KCkpOworICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGRvbVN0b3JhZ2VFbmQg
PSBtX2RvbVN0b3JhZ2VSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChET01TdG9yYWdlUmVzb3Vy
Y2VzTWFwOjppdGVyYXRvciBpdCA9IG1fZG9tU3RvcmFnZVJlc291cmNlcy5iZWdpbigpOyBpdCAh
PSBkb21TdG9yYWdlRW5kOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT5iaW5kKG1fZnJvbnRl
bmQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVyZmFjZSgp
OwpAQCAtNjgwLDE0ICs2ODAsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNj
cmlwdE9iamVjdHMoKQogICAgICAgICBpdC0+c2Vjb25kLT5yZWxlYXNlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCksIGZhbHNlKTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICBEYXRh
YmFzZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9kYXRhYmFzZVJlc291
cmNlcy5lbmQoKTsKLSAgICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzU2V0OjppdGVyYXRvciBpdCA9
IG1fZGF0YWJhc2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VzRW5kOyArK2l0KQot
ICAgICAgICAoKml0KS0+dW5iaW5kKCk7CisgICAgRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJh
dG9yIGRhdGFiYXNlc0VuZCA9IG1fZGF0YWJhc2VSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChE
YXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlUmVzb3VyY2VzLmJl
Z2luKCk7IGl0ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+dW5i
aW5kKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgRE9NU3RvcmFnZVJl
c291cmNlc1NldDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291cmNl
cy5lbmQoKTsKLSAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0g
bV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQp
Ci0gICAgICAgICgqaXQpLT51bmJpbmQoKTsKKyAgICBET01TdG9yYWdlUmVzb3VyY2VzTWFwOjpp
dGVyYXRvciBkb21TdG9yYWdlRW5kID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmVuZCgpOworICAg
IGZvciAoRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX2RvbVN0b3JhZ2VS
ZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytpdCkKKyAgICAgICAgaXQt
PnNlY29uZC0+dW5iaW5kKCk7CiAjZW5kaWYKIAogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCkBA
IC0xMDgwLDYgKzEwODAsMjcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjp0aW1lbGluZUVu
YWJsZWQoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQordm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgaWYg
KCFtX2Zyb250ZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKERhdGFiYXNlUmVzb3Vy
Y2VzTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0g
bV9kYXRhYmFzZVJlc291cmNlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29u
ZC0+ZGF0YWJhc2UoKSA9PSBkYXRhYmFzZSkgeworICAgICAgICAgICAgbV9mcm9udGVuZC0+c2Vs
ZWN0RGF0YWJhc2UoaXQtPmZpcnN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorfQorCitEYXRhYmFzZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGF0YWJhc2VGb3JJZChp
bnQgZGF0YWJhc2VJZCkKK3sKKyAgICBEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQg
PSBtX2RhdGFiYXNlUmVzb3VyY2VzLmZpbmQoZGF0YWJhc2VJZCk7CisgICAgaWYgKGl0ID09IG1f
ZGF0YWJhc2VSZXNvdXJjZXMuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBp
dC0+c2Vjb25kLT5kYXRhYmFzZSgpOworfQorCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAoIWVu
YWJsZWQoKSkKQEAgLTEwODcsNyArMTEwOCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21hCiAK
ICAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lv
bik7CiAKLSAgICBtX2RhdGFiYXNlUmVzb3VyY2VzLmFkZChyZXNvdXJjZSk7CisgICAgbV9kYXRh
YmFzZVJlc291cmNlcy5zZXQocmVzb3VyY2UtPmlkKCksIHJlc291cmNlKTsKIAogICAgIGlmICht
X2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKQEAg
LTExMDAsMTUgKzExMjEsMTUgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRVc2VET01T
dG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2EKICAgICBpZiAoIWVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRE9NU3RvcmFnZVJlc291cmNlc1NldDo6
aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291cmNlcy5lbmQoKTsKLSAg
ICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdl
UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQpCi0gICAgICAgIGlm
ICgoKml0KS0+aXNTYW1lSG9zdEFuZFR5cGUoZnJhbWUsIGlzTG9jYWxTdG9yYWdlKSkKKyAgICBE
T01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkb21TdG9yYWdlRW5kID0gbV9kb21TdG9y
YWdlUmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRl
cmF0b3IgaXQgPSBtX2RvbVN0b3JhZ2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFn
ZUVuZDsgKytpdCkKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmlzU2FtZUhvc3RBbmRUeXBlKGZy
YW1lLCBpc0xvY2FsU3RvcmFnZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8
U3RvcmFnZT4gZG9tU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShmcmFtZSwgc3RvcmFnZUFyZWEp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U+IHJlc291cmNlID0gSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpjcmVhdGUoZG9tU3RvcmFnZS5nZXQoKSwgaXNMb2Nh
bFN0b3JhZ2UsIGZyYW1lKTsKIAotICAgIG1fZG9tU3RvcmFnZVJlc291cmNlcy5hZGQocmVzb3Vy
Y2UpOworICAgIG1fZG9tU3RvcmFnZVJlc291cmNlcy5zZXQocmVzb3VyY2UtPmlkKCksIHJlc291
cmNlKTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9u
dGVuZC5nZXQoKSk7CiB9CkBAIC0xMTIyLDEwICsxMTQzLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9yYWdlKQogICAgIEZyYW1lKiBm
cmFtZSA9IHN0b3JhZ2UtPmZyYW1lKCk7CiAgICAgYm9vbCBpc0xvY2FsU3RvcmFnZSA9IChmcmFt
ZS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZSgpID09IHN0b3JhZ2UpOwogICAgIGludCBzdG9y
YWdlUmVzb3VyY2VJZCA9IDA7Ci0gICAgRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3Ig
ZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291cmNlcy5lbmQoKTsKLSAgICBmb3IgKERP
TVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdlUmVzb3VyY2Vz
LmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQp
LT5pc1NhbWVIb3N0QW5kVHlwZShmcmFtZSwgaXNMb2NhbFN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBzdG9yYWdlUmVzb3VyY2VJZCA9ICgqaXQpLT5pZCgpOworICAgIERPTVN0b3JhZ2VSZXNvdXJj
ZXNNYXA6Oml0ZXJhdG9yIGRvbVN0b3JhZ2VFbmQgPSBtX2RvbVN0b3JhZ2VSZXNvdXJjZXMuZW5k
KCk7CisgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fZG9t
U3RvcmFnZVJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkb21TdG9yYWdlRW5kOyArK2l0KSB7Cisg
ICAgICAgIGlmIChpdC0+c2Vjb25kLT5pc1NhbWVIb3N0QW5kVHlwZShmcmFtZSwgaXNMb2NhbFN0
b3JhZ2UpKSB7CisgICAgICAgICAgICBzdG9yYWdlUmVzb3VyY2VJZCA9IGl0LT5maXJzdDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE4NiwxMSArMTIwNywxMCBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKGxvbmcgY2Fs
bElkLCBsb25nIHN0b3JhZ2VJZCwgY29ucwogCiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uq
IEluc3BlY3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklkKGludCBzdG9y
YWdlSWQpCiB7Ci0gICAgRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZG9tU3RvcmFn
ZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291cmNlcy5lbmQoKTsKLSAgICBmb3IgKERPTVN0b3JhZ2VS
ZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7
IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQpCi0gICAgICAgIGlmICgoKml0KS0+aWQoKSA9PSBz
dG9yYWdlSWQpCi0gICAgICAgICAgICByZXR1cm4gaXQtPmdldCgpOwotICAgIHJldHVybiAwOwor
ICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdlUmVz
b3VyY2VzLmZpbmQoc3RvcmFnZUlkKTsKKyAgICBpZiAoaXQgPT0gbV9kb21TdG9yYWdlUmVzb3Vy
Y2VzLmVuZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5nZXQo
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggMjAyOTVhYS4uZDBjNTQwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcgbG9uZywgUmVmUHRyPEluc3BlY3RvclJlc291cmNl
PiA+IFJlc291cmNlc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwgUmVz
b3VyY2VzTWFwKj4gRnJhbWVSZXNvdXJjZXNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiA+IERhdGFiYXNlUmVzb3VyY2VzU2V0OwotICAg
IHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlPiA+IERP
TVN0b3JhZ2VSZXNvdXJjZXNTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+ID4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZT4gPiBE
T01TdG9yYWdlUmVzb3VyY2VzTWFwOwogCiAgICAgdHlwZWRlZiBlbnVtIHsKICAgICAgICAgQ3Vy
cmVudFBhbmVsLApAQCAtMzA2LDYgKzMwNiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgdG9nZ2xl
UmVjb3JkQnV0dG9uKGJvb2wpOwogICAgIHZvaWQgZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQo
Ym9vbCBhbHdheXMpOwogI2VuZGlmCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHZvaWQgc2Vs
ZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKTsKKyAgICBEYXRhYmFzZSogZGF0YWJhc2VG
b3JJZChpbnQgZGF0YWJhc2VJZCk7CisjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAg
ICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJ
ZChpbnQgc3RvcmFnZUlkKTsKICNlbmRpZgpAQCAtMzQzLDEwICszNDcsMTAgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwogICAgIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4gbV9jb3VudHM7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQotICAgIERhdGFiYXNl
UmVzb3VyY2VzU2V0IG1fZGF0YWJhc2VSZXNvdXJjZXM7CisgICAgRGF0YWJhc2VSZXNvdXJjZXNN
YXAgbV9kYXRhYmFzZVJlc291cmNlczsKICNlbmRpZgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
LSAgICBET01TdG9yYWdlUmVzb3VyY2VzU2V0IG1fZG9tU3RvcmFnZVJlc291cmNlczsKKyAgICBE
T01TdG9yYWdlUmVzb3VyY2VzTWFwIG1fZG9tU3RvcmFnZVJlc291cmNlczsKICNlbmRpZgogICAg
IFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwogICAgIGJvb2wgbV93aW5kb3dWaXNpYmxlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRl
eCBhNTg5NjhmLi5jMmRjNWM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcApAQCAtNDEsOCArNDEsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitpbnQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6c19uZXh0VW51c2VkSWQgPSAx
OworCiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
KERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkK
KyAgICAsIG1faWQoc19uZXh0VW51c2VkSWQrKykKICAgICAsIG1fZG9tYWluKGRvbWFpbikKICAg
ICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCkBAIC01OSw3ICs2Miw3
IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQpCiAgICAgU2NyaXB0T2JqZWN0IGRhdGFiYXNlOwogICAgIGlmICghZ2V0UXVh
cmFudGluZWRTY3JpcHRPYmplY3QobV9kYXRhYmFzZS5nZXQoKSwgZGF0YWJhc2UpKQogICAgICAg
ICByZXR1cm47Ci0gICAganNvbk9iamVjdC5zZXQoImRhdGFiYXNlIiwgZGF0YWJhc2UpOworICAg
IGpzb25PYmplY3Quc2V0KCJpZCIsIG1faWQpOwogICAgIGpzb25PYmplY3Quc2V0KCJkb21haW4i
LCBtX2RvbWFpbik7CiAgICAganNvbk9iamVjdC5zZXQoIm5hbWUiLCBtX25hbWUpOwogICAgIGpz
b25PYmplY3Quc2V0KCJ2ZXJzaW9uIiwgbV92ZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaAppbmRleCAzOGY5ZmExLi5mODJkODk4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCkBAIC01Mywx
NiArNTMsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgYmluZChJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwogICAgICAgICB2b2lkIHVuYmluZCgpOwotCisgICAg
ICAgIERhdGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KKyAg
ICAgICAgbG9uZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKERhdGFiYXNlKiwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICAg
ICAgCiAgICAgICAgIFJlZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICAgICAgaW50IG1f
aWQ7CiAgICAgICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAg
ICAgICAgU3RyaW5nIG1fdmVyc2lvbjsKICAgICAgICAgYm9vbCBtX3NjcmlwdE9iamVjdENyZWF0
ZWQ7CiAKKyAgICAgICAgc3RhdGljIGludCBzX25leHRVbnVzZWRJZDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
aW5kZXggYzk3OTNjYi4uYTJmY2FlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcApAQCAtMjc2LDI4ICsyNzYsNiBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZXN1
bWVkU2NyaXB0KCkKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKERBVEFCQVNFKQotYm9vbCBJbnNw
ZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2UoY29uc3QgU2NyaXB0T2JqZWN0JiBkYk9iamVjdCkK
LXsKLSAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNh
bGwoImFkZERhdGFiYXNlIikpOwotICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChkYk9iamVj
dCk7Ci0gICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBmdW5jdGlvbi0+Y2FsbCho
YWRFeGNlcHRpb24pOwotICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOwotfQotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi1ib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRET01TdG9y
YWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgZG9tU3RvcmFnZU9iaikKLXsKLSAgICBPd25QdHI8U2Ny
aXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZERPTVN0b3JhZ2Ui
KSk7Ci0gICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGRvbVN0b3JhZ2VPYmopOwotICAgIGJv
b2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgZnVuY3Rpb24tPmNhbGwoaGFkRXhjZXB0aW9u
KTsKLSAgICByZXR1cm4gIWhhZEV4Y2VwdGlvbjsKLX0KLSNlbmRpZgotCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kOjpzZXREb2N1bWVudChjb25zdCBTY3JpcHRPYmplY3QmIHJvb3QpCiB7CiAgICAg
T3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJzZXRE
b2N1bWVudCIpKTsKQEAgLTM4NywxOCArMzY1LDQwIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6
OmRpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChpbnQgY2FsbElkLCBjb25zdCBTdHJpbmcmIHJl
CiB9CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpzZWxl
Y3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpCitib29sIEluc3BlY3RvckZyb250ZW5kOjph
ZGREYXRhYmFzZShjb25zdCBTY3JpcHRPYmplY3QmIGRiT2JqZWN0KQoreworICAgIE93blB0cjxT
Y3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkRGF0YWJhc2Ui
KSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGRiT2JqZWN0KTsKKyAgICBib29sIGhh
ZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIGZ1bmN0aW9uLT5jYWxsKGhhZEV4Y2VwdGlvbik7Cisg
ICAgcmV0dXJuICFoYWRFeGNlcHRpb247Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnNl
bGVjdERhdGFiYXNlKGludCBkYXRhYmFzZUlkKQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlv
bkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgic2VsZWN0RGF0YWJhc2UiKSk7Ci0gICAg
U2NyaXB0T2JqZWN0IHF1YXJhbnRpbmVkT2JqZWN0OwotICAgIGlmICghZ2V0UXVhcmFudGluZWRT
Y3JpcHRPYmplY3QoZGF0YWJhc2UsIHF1YXJhbnRpbmVkT2JqZWN0KSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChxdWFyYW50aW5lZE9iamVjdCk7CisgICAg
ZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGRhdGFiYXNlSWQpOworICAgIGZ1bmN0aW9uLT5jYWxs
KCk7Cit9Cit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXREYXRhYmFzZVRhYmxlTmFtZXMo
aW50IGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIHRhYmxlTmFtZXMpCit7CisgICAgT3duUHRy
PFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJkaWRHZXREYXRh
YmFzZVRhYmxlTmFtZXMiKSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGNhbGxJZCk7
CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHRhYmxlTmFtZXMpOwogICAgIGZ1bmN0aW9u
LT5jYWxsKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKK2Jvb2wgSW5z
cGVjdG9yRnJvbnRlbmQ6OmFkZERPTVN0b3JhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBkb21TdG9y
YWdlT2JqKQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1
bmN0aW9uQ2FsbCgiYWRkRE9NU3RvcmFnZSIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1l
bnQoZG9tU3RvcmFnZU9iaik7CisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBm
dW5jdGlvbi0+Y2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOwor
fQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpzZWxlY3RET01TdG9yYWdlKGludCBzdG9yYWdl
SWQpCiB7CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rp
b25DYWxsKCJzZWxlY3RET01TdG9yYWdlIikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmgKaW5kZXggZjlkM2JhMS4uMmQ3OWRlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCkBAIC05NCw3ICs5NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShEQVRBQkFTRSkKICAgICAgICAgYm9vbCBhZGREYXRhYmFzZShjb25zdCBTY3JpcHRPYmpl
Y3QmIGRiT2JqKTsKLSAgICAgICAgdm9pZCBzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJh
c2UpOworICAgICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKGludCBkYXRhYmFzZUlkKTsKKyAgICAg
ICAgdm9pZCBkaWRHZXREYXRhYmFzZVRhYmxlTmFtZXMoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0
QXJyYXkmIHRhYmxlTmFtZXMpOwogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwppbmRleCBkY2FiMmFi
Li4xYTM0OGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJh
c2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCkBAIC0y
NiwxOCArMjYsMTggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNl
ID0gZnVuY3Rpb24oZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbikKK1dlYkluc3BlY3Rv
ci5EYXRhYmFzZSA9IGZ1bmN0aW9uKGlkLCBkb21haW4sIG5hbWUsIHZlcnNpb24pCiB7Ci0gICAg
dGhpcy5fZGF0YWJhc2UgPSBkYXRhYmFzZTsKLSAgICB0aGlzLmRvbWFpbiA9IGRvbWFpbjsKLSAg
ICB0aGlzLm5hbWUgPSBuYW1lOwotICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247CisgICAgdGhp
cy5faWQgPSBpZDsKKyAgICB0aGlzLl9kb21haW4gPSBkb21haW47CisgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CisgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247CiB9CiAKIFdlYkluc3BlY3Rvci5E
YXRhYmFzZS5wcm90b3R5cGUgPSB7Ci0gICAgaXNEYXRhYmFzZTogZnVuY3Rpb24oZGIpCisgICAg
Z2V0IGlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZSA9PT0gZGI7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9pZDsKICAgICB9LAogCiAgICAgZ2V0IG5hbWUoKQpAQCAtNDcs
OCArNDcsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0gewogCiAgICAgc2V0
IG5hbWUoeCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9uYW1lID09PSB4KQotICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9uYW1lID0geDsKICAgICB9LAogCkBAIC01OSw4ICs1
Nyw2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUgPSB7CiAKICAgICBzZXQgdmVy
c2lvbih4KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3ZlcnNpb24gPT09IHgpCi0gICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3ZlcnNpb24gPSB4OwogICAgIH0sCiAKQEAgLTcx
LDggKzY3LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKIAogICAgIHNl
dCBkb21haW4oeCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kb21haW4gPT09IHgpCi0gICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2RvbWFpbiA9IHg7CiAgICAgfSwKIApAQCAt
ODMsMzEgKzc3LDI2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBnZXRUYWJsZU5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBu
YW1lcyA9IEluc3BlY3RvckNvbnRyb2xsZXIuZGF0YWJhc2VUYWJsZU5hbWVzKHRoaXMuX2RhdGFi
YXNlKTsKLSAgICAgICAgZnVuY3Rpb24gc29ydGluZ0NhbGxiYWNrKCkKKyAgICAgICAgZnVuY3Rp
b24gc29ydGluZ0NhbGxiYWNrKG5hbWVzKQogICAgICAgICB7CiAgICAgICAgICAgICBjYWxsYmFj
ayhuYW1lcy5zb3J0KCkpOwogICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQoc29ydGluZ0Nh
bGxiYWNrLCAwKTsKKyAgICAgICAgdmFyIGNhbGxJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53
cmFwKHNvcnRpbmdDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZ2V0RGF0
YWJhc2VUYWJsZU5hbWVzKGNhbGxJZCwgdGhpcy5faWQpOwogICAgIH0sCiAgICAgCiAgICAgZXhl
Y3V0ZVNxbDogZnVuY3Rpb24ocXVlcnksIG9uU3VjY2Vzcywgb25FcnJvcikKICAgICB7Ci0gICAg
ICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayh0eCwgcmVzdWx0KQorICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhyZXN1bHQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghKHJlc3VsdCBp
bnN0YW5jZW9mIEFycmF5KSkgeworICAgICAgICAgICAgICAgIG9uRXJyb3IocmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBvblN1Y2Nl
c3MocmVzdWx0KTsKICAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGVycm9yQ2FsbGJhY2so
dHgsIGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBvbkVycm9yKGVycm9yKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZnVuY3Rpb24gcXVlcnlU
cmFuc2FjdGlvbih0eCkKLSAgICAgICAgewotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbChxdWVy
eSwgbnVsbCwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNr
LmJpbmQoc2VsZikpLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhlcnJvckNhbGxi
YWNrLmJpbmQoc2VsZikpKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9kYXRhYmFzZS50cmFu
c2FjdGlvbihJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhxdWVyeVRyYW5zYWN0aW9u
LmJpbmQodGhpcykpLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhlcnJvckNhbGxi
YWNrLmJpbmQodGhpcykpKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZXhlY3V0ZVNx
bCh0aGlzLl9pZCwgcXVlcnksIGNhbGxiYWNrKTsKICAgICB9CiB9CisKK1dlYkluc3BlY3Rvci5k
aWRHZXREYXRhYmFzZVRhYmxlTmFtZXMgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0Nh
bGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVk
U2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0Lmpz
CmluZGV4IDA2MDNiMzMuLjE2MGE5MmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTQxLDkgKzQxLDEyIEBAIEluamVjdGVkU2NyaXB0LnJl
c2V0ID0gZnVuY3Rpb24oKQogCiBJbmplY3RlZFNjcmlwdC5yZXNldCgpOwogCi1JbmplY3RlZFNj
cmlwdC5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGFyZ3MpCitJbmplY3RlZFNjcmlw
dC5kaXNwYXRjaCA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGFyZ3MsIGNhbGxJZCkKIHsKLSAgICB2
YXIgcmVzdWx0ID0gSW5qZWN0ZWRTY3JpcHRbbWV0aG9kTmFtZV0uYXBwbHkoSW5qZWN0ZWRTY3Jp
cHQsIEpTT04ucGFyc2UoYXJncykpOworICAgIHZhciBhcmdzQXJyYXkgPSBKU09OLnBhcnNlKGFy
Z3MpOworICAgIGlmIChjYWxsSWQpCisgICAgICAgIGFyZ3NBcnJheS5zcGxpY2UoMCwgMCwgY2Fs
bElkKTsgIC8vIE1ldGhvZHMgdGhhdCBydW4gYXN5bmNocm9ub3VzbHkgaGF2ZSBhIGNhbGwgYmFj
ayBpZCBwYXJhbWV0ZXIuCisgICAgdmFyIHJlc3VsdCA9IEluamVjdGVkU2NyaXB0W21ldGhvZE5h
bWVdLmFwcGx5KEluamVjdGVkU2NyaXB0LCBhcmdzQXJyYXkpOwogICAgIHJldHVybiBKU09OLnN0
cmluZ2lmeShyZXN1bHQpOwogfQogCkBAIC0xMDM1LDYgKzEwMzgsNDUgQEAgSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorSW5qZWN0ZWRTY3Jp
cHQuZXhlY3V0ZVNxbCA9IGZ1bmN0aW9uKGNhbGxJZCwgZGF0YWJhc2VJZCwgcXVlcnkpCit7Cisg
ICAgZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKHR4LCByZXN1bHQpCisgICAgeworICAgICAgICB2
YXIgcm93cyA9IHJlc3VsdC5yb3dzOworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAg
IHZhciBsZW5ndGggPSByb3dzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsKKyAgICAgICAgICAgIHJl
c3VsdC5wdXNoKGRhdGEpOworICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3MuaXRlbShpKTsKKyAg
ICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gcm93KSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IChCdWcgMTk0MzkpIFdlIHNob3VsZCBzcGVjaWFsbHkgZm9ybWF0IFNR
TCBOVUxMIGhlcmUKKyAgICAgICAgICAgICAgICAvLyAod2hpY2ggaXMgcmVwcmVzZW50ZWQgYnkg
SmF2YVNjcmlwdCBudWxsIGhlcmUsIGFuZCB0dXJuZWQKKyAgICAgICAgICAgICAgICAvLyBpbnRv
IHRoZSBzdHJpbmcgIm51bGwiIGJ5IHRoZSBTdHJpbmcoKSBmdW5jdGlvbikuCisgICAgICAgICAg
ICAgICAgdmFyIHRleHQgPSByb3dbY29sdW1uSWRlbnRpZmllcl07CisgICAgICAgICAgICAgICAg
ZGF0YVtjb2x1bW5JZGVudGlmaWVyXSA9IFN0cmluZyh0ZXh0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLnJlcG9ydERpZERpc3BhdGNoT25J
bmplY3RlZFNjcmlwdChjYWxsSWQsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCksIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBlcnJvckNhbGxiYWNrKHR4LCBlcnJvcikKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIucmVwb3J0RGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0
KGNhbGxJZCwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpLCBmYWxzZSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gcXVlcnlUcmFuc2FjdGlvbih0eCkKKyAgICB7CisgICAgICAgIHR4LmV4ZWN1dGVTcWwo
cXVlcnksIG51bGwsIEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjayksIEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKGVycm9yQ2FsbGJhY2spKTsK
KyAgICB9CisKKyAgICB2YXIgZGF0YWJhc2UgPSBJbnNwZWN0b3JDb250cm9sbGVyLmRhdGFiYXNl
Rm9ySWQoZGF0YWJhc2VJZCk7CisgICAgaWYgKCFkYXRhYmFzZSkKKyAgICAgICAgZXJyb3JDYWxs
YmFjayhudWxsLCAiTm8gZGF0YWJhc2UiKTsKKyAgICBkYXRhYmFzZS50cmFuc2FjdGlvbihJbnNw
ZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhxdWVyeVRyYW5zYWN0aW9uKSwgSW5zcGVjdG9y
Q29udHJvbGxlci53cmFwQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykpOworICAgIHJldHVybiB0cnVl
OworfQorCiBPYmplY3QudHlwZSA9IGZ1bmN0aW9uKG9iaikKIHsKICAgICBpZiAob2JqID09PSBu
dWxsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2Ny
aXB0QWNjZXNzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0
QWNjZXNzLmpzCmluZGV4IGRhODVkMDMuLmRkMDUwN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKQEAgLTMxLDcgKzMxLDcg
QEAKIAogdmFyIEluamVjdGVkU2NyaXB0QWNjZXNzID0ge307CiAKLUluamVjdGVkU2NyaXB0QWNj
ZXNzLl9pbnN0YWxsSGFuZGxlciA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUpCitJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIgPSBmdW5jdGlvbihtZXRob2ROYW1lLCBhc3luYykKIHsK
ICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzc1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkKICAgICB7
CkBAIC00NywzMiArNDcsMzcgQEAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVy
ID0gZnVuY3Rpb24obWV0aG9kTmFtZSkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29u
c29sZS5hZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRleHRNZXNzYWdlKCJFcnJv
ciBkaXNwYXRjaGluZzogIiArIG1ldGhvZE5hbWUpKTsKICAgICAgICAgfQogICAgICAgICB2YXIg
Y2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAobXlDYWxsYmFjayk7Ci0gICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgbWV0
aG9kTmFtZSwgYXJnc1N0cmluZyk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlzcGF0
Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgbWV0aG9kTmFtZSwgYXJnc1N0cmluZywgISFhc3lu
Yyk7CiAgICAgfTsKIH0KIAotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJn
ZXRTdHlsZXMiKTsKKy8vIFdlIGtlZXAgdGhlc2Ugc29ydGVkLgorSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuX2luc3RhbGxIYW5kbGVyKCJhZGRJbnNwZWN0ZWROb2RlIik7CitJbmplY3RlZFNjcmlwdEFj
Y2Vzcy5faW5zdGFsbEhhbmRsZXIoImFkZEluc3BlY3RlZE5vZGUiKTsKK0luamVjdGVkU2NyaXB0
QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiYWRkU3R5bGVTZWxlY3RvciIpOworSW5qZWN0ZWRTY3Jp
cHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJhcHBseVN0eWxlUnVsZVRleHQiKTsKK0luamVjdGVk
U2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiYXBwbHlTdHlsZVRleHQiKTsKK0luamVjdGVk
U2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiZXZhbHVhdGUiKTsKK0luamVjdGVkU2NyaXB0
QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiZXZhbHVhdGUiKTsKK0luamVjdGVkU2NyaXB0QWNjZXNz
Ll9pbnN0YWxsSGFuZGxlcigiZXZhbHVhdGVJbkNhbGxGcmFtZSIpOworSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRDb21wbGV0aW9ucyIpOwogSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRDb21wdXRlZFN0eWxlIik7CiBJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdldElubGluZVN0eWxlIik7Ci1JbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImFwcGx5U3R5bGVUZXh0Iik7Ci1JbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInNldFN0eWxlVGV4dCIpOwotSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJ0b2dnbGVTdHlsZUVuYWJsZWQiKTsKLUluamVjdGVkU2Ny
aXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiYXBwbHlTdHlsZVJ1bGVUZXh0Iik7Ci1JbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImFkZFN0eWxlU2VsZWN0b3IiKTsKLUluamVj
dGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigic2V0U3R5bGVQcm9wZXJ0eSIpOwotSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRQcm90b3R5cGVzIik7CiBJbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdldFByb3BlcnRpZXMiKTsKLUluamVj
dGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigic2V0UHJvcGVydHlWYWx1ZSIpOwotSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRDb21wbGV0aW9ucyIpOwotSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJldmFsdWF0ZSIpOwotSW5qZWN0ZWRT
Y3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJhZGRJbnNwZWN0ZWROb2RlIik7CitJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdldFByb3RvdHlwZXMiKTsKK0luamVjdGVk
U2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiZ2V0U3R5bGVzIik7CitJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoIm9wZW5Jbkluc3BlY3RlZFdpbmRvdyIpOworSW5qZWN0
ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJwZXJmb3JtU2VhcmNoIik7CiBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInB1c2hOb2RlVG9Gcm9udGVuZCIpOwotSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJldmFsdWF0ZSIpOwotSW5qZWN0ZWRT
Y3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJhZGRJbnNwZWN0ZWROb2RlIik7CiBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInB1c2hOb2RlVG9Gcm9udGVuZCIpOwotSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJwZXJmb3JtU2VhcmNoIik7CiBJbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInNlYXJjaENhbmNlbGVkIik7Ci1Jbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoIm9wZW5Jbkluc3BlY3RlZFdpbmRvdyIp
OwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJldmFsdWF0ZUluQ2FsbEZy
YW1lIik7CitJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInNldFByb3BlcnR5
VmFsdWUiKTsKK0luamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigic2V0U3R5bGVQ
cm9wZXJ0eSIpOworSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJzZXRTdHls
ZVRleHQiKTsKK0luamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigidG9nZ2xlU3R5
bGVFbmFibGVkIik7CisKKy8vIFNvbWUgbWV0aG9kcyBjYW4ndCBydW4gc3luY2hyb25vdXNseSBl
dmVuIG9uIHRoZSBpbmplY3RlZCBzY3JpcHQgc2lkZSAoc3VjaCBhcyBEQiB0cmFuc2FjdGlvbnMp
LgorLy8gTWFyayB0aGVtIGFzIGFzeW5jaHJvbm91cyBoZXJlLgorSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuX2luc3RhbGxIYW5kbGVyKCJleGVjdXRlU3FsIiwgdHJ1ZSk7CiAKIFdlYkluc3BlY3Rvci5k
aWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vz
c0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3Jh
Z2VQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMK
aW5kZXggMDFjNjU3ZC4uNWM2M2RmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0b3JhZ2VQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3RvcmFnZVBhbmVsLmpzCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCBXZWJJbnNwZWN0b3IuU3RvcmFn
ZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VMaXN0
VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9tU3RvcmFnZVRyZWVFbGVtZW50KTsKICAgICB9LAog
Ci0gICAgc2VsZWN0RGF0YWJhc2U6IGZ1bmN0aW9uKGRiKQorICAgIHNlbGVjdERhdGFiYXNlOiBm
dW5jdGlvbihkYXRhYmFzZUlkKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFiYXNlOwogICAgICAg
ICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5fZGF0YWJhc2VzLmxlbmd0aDsgaSA8IGxlbjsg
KytpKSB7CiAgICAgICAgICAgICBkYXRhYmFzZSA9IHRoaXMuX2RhdGFiYXNlc1tpXTsKLSAgICAg
ICAgICAgIGlmIChkYXRhYmFzZS5pc0RhdGFiYXNlKGRiKSkgeworICAgICAgICAgICAgaWYgKGRh
dGFiYXNlLmlkID09PSBkYXRhYmFzZUlkKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0
YWJhc2UoZGF0YWJhc2UpOwogICAgICAgICAgICAgICAgIGRhdGFiYXNlLl9kYXRhYmFzZXNUcmVl
RWxlbWVudC5zZWxlY3QoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTcsMTUgKzI5
NywxNCBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGF0YWJhc2UuZ2V0VGFibGVOYW1lcyh0YWJsZU5hbWVzQ2FsbGJhY2spOwogICAgIH0sCiAKLSAg
ICBkYXRhR3JpZEZvclJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIGRhdGFHcmlkRm9yUmVz
dWx0OiBmdW5jdGlvbihyb3dzKQogICAgIHsKLSAgICAgICAgaWYgKCFyZXN1bHQucm93cy5sZW5n
dGgpCisgICAgICAgIGlmICghcm93cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsK
IAogICAgICAgICB2YXIgY29sdW1ucyA9IHt9OwogCi0gICAgICAgIHZhciByb3dzID0gcmVzdWx0
LnJvd3M7Ci0gICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gcm93cy5pdGVtKDAp
KSB7CisgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gcm93c1swXSkgewogICAg
ICAgICAgICAgdmFyIGNvbHVtbiA9IHt9OwogICAgICAgICAgICAgY29sdW1uLndpZHRoID0gY29s
dW1uSWRlbnRpZmllci5sZW5ndGg7CiAgICAgICAgICAgICBjb2x1bW4udGl0bGUgPSBjb2x1bW5J
ZGVudGlmaWVyOwpAQCAtMzE4LDEyICszMTcsOSBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsKIAotICAgICAgICAgICAgdmFyIHJvdyA9IHJv
d3MuaXRlbShpKTsKKyAgICAgICAgICAgIHZhciByb3cgPSByb3dzW2ldOwogICAgICAgICAgICAg
Zm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiByb3cpIHsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogKEJ1ZyAxOTQzOSkgV2Ugc2hvdWxkIHNwZWNpYWxseSBmb3JtYXQgU1FMIE5VTEwgaGVy
ZQotICAgICAgICAgICAgICAgIC8vICh3aGljaCBpcyByZXByZXNlbnRlZCBieSBKYXZhU2NyaXB0
IG51bGwgaGVyZSwgYW5kIHR1cm5lZAotICAgICAgICAgICAgICAgIC8vIGludG8gdGhlIHN0cmlu
ZyAibnVsbCIgYnkgdGhlIFN0cmluZygpIGZ1bmN0aW9uKS4KLSAgICAgICAgICAgICAgICB2YXIg
dGV4dCA9IFN0cmluZyhyb3dbY29sdW1uSWRlbnRpZmllcl0pOworICAgICAgICAgICAgICAgIHZh
ciB0ZXh0ID0gcm93W2NvbHVtbklkZW50aWZpZXJdOwogICAgICAgICAgICAgICAgIGRhdGFbY29s
dW1uSWRlbnRpZmllcl0gPSB0ZXh0OwogICAgICAgICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+
IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIGNv
bHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGggPSB0ZXh0Lmxlbmd0aDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDkyMWJiN2EuLjU1OGQxYzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTAwNiw3ICsxMDA2LDcg
QEAgV2ViSW5zcGVjdG9yLnJlbW92ZVJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllcikKIFdl
Ykluc3BlY3Rvci5hZGREYXRhYmFzZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7CiAgICAgdmFyIGRh
dGFiYXNlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZSgKLSAgICAgICAgcGF5bG9hZC5kYXRh
YmFzZSwKKyAgICAgICAgcGF5bG9hZC5pZCwKICAgICAgICAgcGF5bG9hZC5kb21haW4sCiAgICAg
ICAgIHBheWxvYWQubmFtZSwKICAgICAgICAgcGF5bG9hZC52ZXJzaW9uKTsK
</data>
<flag name="review"
          id="21383"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>