<?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>38065</bug_id>
          
          <creation_ts>2010-04-23 16:57:53 -0700</creation_ts>
          <short_desc>Merge mac and win DrawingAreaProxyUpdateChunk implementations</short_desc>
          <delta_ts>2010-04-23 17:02:48 -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 Template Framework</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216627</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-23 16:57:53 -0700</bug_when>
    <thetext>Merge mac and win DrawingAreaProxyUpdateChunk implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216629</commentid>
    <comment_count>1</comment_count>
      <attachid>54203</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-23 16:58:33 -0700</bug_when>
    <thetext>Created attachment 54203
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216631</commentid>
    <comment_count>2</comment_count>
      <attachid>54203</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-04-23 16:59:43 -0700</bug_when>
    <thetext>Comment on attachment 54203
patch

great work, r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216632</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-23 17:02:48 -0700</bug_when>
    <thetext>Fixed in r58199.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54203</attachid>
            <date>2010-04-23 16:58:33 -0700</date>
            <delta_ts>2010-04-23 16:59:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>proxy.diff</filename>
            <type>text/plain</type>
            <size>65655</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODE5OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDkgKzEsNTEgQEAKKzIwMTAtMDQtMjMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwNjUKKyAgICAgICAgTWVyZ2UgbWFj
IGFuZCB3aW4gRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rIGltcGxlbWVudGF0aW9ucy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3
IGRyYXdSZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDog
Q29waWVkIGZyb20gVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5Lm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6IENvcGllZCBmcm9tIFVJUHJvY2Vzcy9tYWMv
RHJhd2luZ0FyZWFQcm94eS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
VXBkYXRlQ2h1bmsuY3BwOiBDb3BpZWQgZnJvbSBVSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJv
eHlVcGRhdGVDaHVuay5tbS4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eVVwZGF0
ZUNodW5rOjpEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmspOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpzZXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpkaWRTZXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmg6IENvcGllZCBmcm9tIFVJ
UHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmguCisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsubW06IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmtNYWMubW06
IENvcGllZCBmcm9tIFVJUHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLm1t
LgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OnBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmludmFsaWRhdGVC
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bms6OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5VXBk
YXRlQ2h1bms6OmRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vRHJhd2luZ0FyZWFQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL3dpbi9EcmF3aW5nQXJlYVByb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmtXaW4uY3BwOiBDb3BpZWQgZnJvbSBV
SVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHkuY3BwLgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OnBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5n
QXJlYVByb3h5VXBkYXRlQ2h1bms6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6cGxhdGZvcm1Q
YWludCk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6ZHJh
d1VwZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6Om9uUGFpbnRFdmVudCk6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwog
MjAxMC0wNC0yMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KIAogICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA1OQotICAgICAgICBNZXJnZSBtYWMgYW5kIHdp
biBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rIGltcGxlbWVudGF0aW9uLgorICAgICAgICBNZXJnZSBt
YWMgYW5kIHdpbiBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rIGltcGxlbWVudGF0aW9ucy4KIAogICAg
ICAgICAqIFVJUHJvY2Vzcy93aW4vRHJhd2luZ0FyZWFQcm94eS5jcHA6CiAgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHk6OmRpZFNldFNpemUpOgpJbmRleDogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmNwcAkocmV2aXNpb24gNTgxODQpCShmcm9tIFVJUHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94
eS5tbTo1ODE4NCkKKysrIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAJKHJldmlzaW9u
IDU4MTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDogVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCShyZXZpc2lvbiA1ODE4NCkJKGZyb20gVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVBy
b3h5Lmg6NTgxODQpCisrKyBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiA1ODE4
NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJbnRTaXplOworICAgIGNsYXNzIEludFJlY3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5E
cmF3aW5nQXJlYVByb3h5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3RJbnRvQ29udGV4
dChDR1JlY3QsIENHQ29udGV4dFJlZikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgQ0dDb250ZXh0UmVmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImKSA9IDA7CkluZGV4OiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNwcAkocmV2aXNpb24gNTgxODQpCShmcm9tIFVJUHJv
Y2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLm1tOjU4MTg0KQorKysgVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAJKHdvcmtpbmcgY29weSkKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNw
cAkocmV2aXNpb24gNTgxODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
VXBkYXRlQ2h1bmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyNiArMjMsMjIgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJEcmF3aW5nQXJl
YVByb3h5VXBkYXRlQ2h1bmsuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bmsuaCIKIAotI2ltcG9ydCAiTWVzc2FnZUlELmgiCi0KLSNpbXBvcnQgIkRyYXdpbmdBcmVhTWVz
c2FnZUtpbmRzLmgiCi0jaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0j
aW1wb3J0ICJXS1ZpZXcuaCIKLSNpbXBvcnQgIlVwZGF0ZUNodW5rLmgiCi0jaW1wb3J0ICJXS0FQ
SUNhc3QuaCIKLSNpbXBvcnQgIldlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oIgotI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNs
dWRlICJNZXNzYWdlSUQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgor
I2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJVcGRh
dGVDaHVuay5oIgorI2luY2x1ZGUgIldlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLURyYXdp
bmdBcmVhUHJveHlVcGRhdGVDaHVuazo6RHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rKFdLVmll
dyogd2ViVmlldykKK0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6RHJhd2luZ0FyZWFQcm94
eVVwZGF0ZUNodW5rKFBsYXRmb3JtV2ViVmlldyogd2ViVmlldykKICAgICA6IERyYXdpbmdBcmVh
UHJveHkoRHJhd2luZ0FyZWFVcGRhdGVDaHVua1R5cGUpCi0gICAgLCBtX2lzSW5pdGlhbGl6ZWQo
ZmFsc2UpCiAgICAgLCBtX2lzV2FpdGluZ0ZvckRpZFNldEZyYW1lTm90aWZpY2F0aW9uKGZhbHNl
KQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01MiwxNSArNDgsMTAgQEAgRHJhd2lu
Z0FyZWFQcm94eVVwZGF0ZUNodW5rOjp+RHJhd2luZ0FyZQogewogfQogCi12b2lkIERyYXdpbmdB
cmVhUHJveHlVcGRhdGVDaHVuazo6ZHJhd1JlY3RJbnRvQ29udGV4dChDR1JlY3QgcmVjdCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQpCit2b2lkIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6cGFp
bnQoY29uc3QgSW50UmVjdCYgcmVjdCwgUGxhdGZvcm1EcmF3aW5nQ29udGV4dCBjb250ZXh0KQog
ewotICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7Ci0gICAgICAgIHNldFNpemUoSW50U2l6ZShb
bV93ZWJWaWV3IGZyYW1lXS5zaXplKSk7Ci0gICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7
Ci0gICAgfQotCiAgICAgaWYgKG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24p
IHsKLSAgICAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gdG9XSyhbbV93ZWJWaWV3IHBhZ2VSZWZd
KTsKKyAgICAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgICAgICBp
ZiAoIXBhZ2UtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC02
OSw1MyArNjAsMjUgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRyYXdSZQog
ICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UocGFnZS0+cHJvY2VzcygpLT5jb25uZWN0aW9u
KCksIENvcmVJUEM6Ok1lc3NhZ2VJRChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGlkU2V0U2l6
ZSksICphcmd1bWVudHMuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmICghbV9iaXRtYXBDb250ZXh0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRv
cHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UobV9iaXRtYXBDb250ZXh0LmdldCgpKSk7
Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpLCBp
bWFnZS5nZXQoKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpkcmF3
VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0b3JlKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVuaykKLXsK
LSAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKLQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZSh1cGRhdGVDaHVuay0+Y3JlYXRlSW1hZ2UoKSk7Ci0gICAgY29uc3QgSW50UmVjdCYgdXBk
YXRlQ2h1bmtSZWN0ID0gdXBkYXRlQ2h1bmstPnJlY3QoKTsKLSAgICAKLSAgICBDR0NvbnRleHRE
cmF3SW1hZ2UobV9iaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKHVwZGF0ZUNodW5rUmVj
dC54KCksIG1fdmlld1NpemUuaGVpZ2h0KCkgLSB1cGRhdGVDaHVua1JlY3QuYm90dG9tKCksIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXBkYXRlQ2h1bmtSZWN0LndpZHRoKCksIHVwZGF0ZUNodW5rUmVjdC5oZWlnaHQoKSksIGltYWdl
LmdldCgpKTsKLSAgICBbbV93ZWJWaWV3IHNldE5lZWRzRGlzcGxheUluUmVjdDpOU1JlY3RGcm9t
Q0dSZWN0KHVwZGF0ZUNodW5rUmVjdCldOwotfQotCi12b2lkIERyYXdpbmdBcmVhUHJveHlVcGRh
dGVDaHVuazo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKLXsKLSAgICBpZiAobV9iaXRtYXBDb250ZXh0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBtX2Jp
dG1hcENvbnRleHQuYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbV92aWV3U2l6ZS53
aWR0aCgpLCBtX3ZpZXdTaXplLmhlaWdodCgpLCA4LCBtX3ZpZXdTaXplLndpZHRoKCkgKiA0LCBj
b2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKLSAgICAK
LSAgICAvLyBGbGlwIHRoZSBiaXRtYXAgY29udGV4dCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0obV9iaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3ZpZXdTaXpl
LmhlaWdodCgpKTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShtX2JpdG1hcENvbnRleHQuZ2V0KCks
IDEsIC0xKTsKKyAgICBwbGF0Zm9ybVBhaW50KHJlY3QsIGNvbnRleHQpOwogfQogCiB2b2lkIERy
YXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3U2l6
ZSkKIHsKLSAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gdG9XSyhbbV93ZWJWaWV3IHBhZ2VSZWZdKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICh2aWV3U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fdmlld1NpemUgPSB2aWV3U2l6ZTsKICAgICBtX2xhc3RTZXRWaWV3U2l6ZSA9IHZpZXdTaXpl
OwotICAgIAorCiAgICAgaWYgKG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24p
CiAgICAgICAgIHJldHVybjsKICAgICBtX2lzV2FpdGluZ0ZvckRpZFNldEZyYW1lTm90aWZpY2F0
aW9uID0gdHJ1ZTsKLSAgICAKKwogICAgIHBhZ2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdGFydCgpOwogICAgIHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5zZW5k
KERyYXdpbmdBcmVhTWVzc2FnZTo6U2V0U2l6ZSwgcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6Oklu
KHZpZXdTaXplKSk7CiB9CkBAIC0xMzAsMTkgKzkzLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94
eVVwZGF0ZUNodW5rOjpkaWRTZXQKICAgICBpZiAodmlld1NpemUgIT0gbV9sYXN0U2V0Vmlld1Np
emUpCiAgICAgICAgIHNldFNpemUobV9sYXN0U2V0Vmlld1NpemUpOwogCi0gICAgLy8gSW52YWxp
ZGF0ZSB0aGUgYmFja2luZyBzdG9yZS4KLSAgICBtX2JpdG1hcENvbnRleHQgPSAwOworICAgIGlu
dmFsaWRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBkcmF3VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0
b3JlKHVwZGF0ZUNodW5rKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHRvV0soW21fd2Vi
VmlldyBwYWdlUmVmXSk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gdGhpcy0+cGFnZSgpOwog
ICAgIHBhZ2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiB9CiAK
IHZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjp1cGRhdGUoVXBkYXRlQ2h1bmsqIHVw
ZGF0ZUNodW5rKQogewogICAgIGRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUodXBkYXRl
Q2h1bmspOwotICAgIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHRvV0soW21fd2ViVmlldyBw
YWdlUmVmXSk7CisKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAg
cGFnZS0+cHJvY2VzcygpLT5jb25uZWN0aW9uKCktPnNlbmQoRHJhd2luZ0FyZWFNZXNzYWdlOjpE
aWRVcGRhdGUsIHBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpKTsKIH0KIApAQCAtMTUzLDYg
KzExNSw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpkaWRSZWMKICAgICAg
ICAgICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVu
dHMuZGVjb2RlKHVwZGF0ZUNodW5rKSkKICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgICAgIHVwZGF0ZSgmdXBkYXRlQ2h1bmspOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KSW5kZXg6IFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmgJKHJldmlzaW9u
IDU4MTg0KQkoZnJvbSBVSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5o
OjU4MTg0KQorKysgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oCSh3b3Jr
aW5nIGNvcHkpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5VXBkYXRl
Q2h1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
VXBkYXRlQ2h1bmsuaAkocmV2aXNpb24gNTgxODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjQgKzI4LDM2
IEBACiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCisjaWYgUExBVEZPUk0oTUFD
KQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIFdL
VmlldzsKICNlbHNlCiBjbGFzcyBXS1ZpZXc7CiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgVXBkYXRlQ2h1bms7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKKyNp
ZiBQTEFURk9STShNQUMpCit0eXBlZGVmIFdLVmlldyBQbGF0Zm9ybVdlYlZpZXc7Cit0eXBlZGVm
IENHQ29udGV4dFJlZiBQbGF0Zm9ybURyYXdpbmdDb250ZXh0OworI2VsaWYgUExBVEZPUk0oV0lO
KQorY2xhc3MgV2ViVmlldzsKK3R5cGVkZWYgV2ViVmlldyBQbGF0Zm9ybVdlYlZpZXc7Cit0eXBl
ZGVmIEhEQyBQbGF0Zm9ybURyYXdpbmdDb250ZXh0OworI2VuZGlmCiAKIGNsYXNzIERyYXdpbmdB
cmVhUHJveHlVcGRhdGVDaHVuayA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsKIHB1YmxpYzoK
LSAgICBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsoV0tWaWV3Kik7CisgICAgRHJhd2luZ0Fy
ZWFQcm94eVVwZGF0ZUNodW5rKFBsYXRmb3JtV2ViVmlldyopOwogICAgIHZpcnR1YWwgfkRyYXdp
bmdBcmVhUHJveHlVcGRhdGVDaHVuaygpOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0SW50
b0NvbnRleHQoQ0dSZWN0LCBDR0NvbnRleHRSZWYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGxhdGZvcm1EcmF3aW5nQ29udGV4dCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYpOwpAQCAtNTcsMjEgKzY5LDI5IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3VXBkYXRlQ2h1bmtJbnRv
QmFja2luZ1N0b3JlKFVwZGF0ZUNodW5rKik7Ci0gICAgdm9pZCBlbnN1cmVCYWNraW5nU3RvcmUo
KTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKTsKIAotICAgIHZvaWQgZGlkU2V0U2l6ZShVcGRh
dGVDaHVuayogdXBkYXRlQ2h1bmspOworICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3JlKCk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgdm9pZCBwbGF0Zm9ybVBhaW50
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0KTsKKyAgICB2
b2lkIGRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqKTsKKyAgICB2
b2lkIGRpZFNldFNpemUoVXBkYXRlQ2h1bmsqKTsKICAgICB2b2lkIHVwZGF0ZShVcGRhdGVDaHVu
ayopOwogCi0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgYm9vbCBtX2lzV2FpdGluZ0Zv
ckRpZFNldEZyYW1lTm90aWZpY2F0aW9uOwotCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdT
aXplOyAvLyBTaXplIG9mIHRoZSBCYWNraW5nU3RvcmUgYXMgd2VsbC4KICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fbGFzdFNldFZpZXdTaXplOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIEJh
Y2tpbmdTdG9yZQogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fYml0bWFwQ29udGV4dDsK
KyNlbGlmIFBMQVRGT1JNKFdJTikKKyAgICAvLyBCYWNraW5nU3RvcmUKKyAgICBPd25QdHI8SERD
PiBtX2JhY2tpbmdTdG9yZURDOworICAgIE93blB0cjxIQklUTUFQPiBtX2JhY2tpbmdTdG9yZUJp
dG1hcDsKKyNlbmRpZgogCi0gICAgV0tWaWV3KiBtX3dlYlZpZXc7CisgICAgUGxhdGZvcm1XZWJW
aWV3KiBtX3dlYlZpZXc7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gNTgxODQpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCiAvLyBDIEFQSQogI2ltcG9ydCAiV0tBUElDYXN0LmgiCi0jaW1wb3J0ICJXS1BhZ2Uu
aCIKIAogLy8gSW1wbGVtZW50YXRpb24KICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlVcGRhdGVD
aHVuay5oIgpAQCAtNDEsNyArNDAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50
UmVjdC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtMjQ5LDcgKzI0OCw3IEBAIC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0CiAKICAg
ICBpZiAoX2RhdGEtPl9wYWdlLT5pc1ZhbGlkKCkgJiYgX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJl
YSgpKSB7CiAgICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dDb250
ZXh0UmVmPihbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRd
KTsKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpLT5kcmF3UmVjdEludG9Db250
ZXh0KE5TUmVjdFRvQ0dSZWN0KHJlY3QpLCBjb250ZXh0KTsKKyAgICAgICAgX2RhdGEtPl9wYWdl
LT5kcmF3aW5nQXJlYSgpLT5wYWludChJbnRSZWN0KHJlY3QpLCBjb250ZXh0KTsKICAgICB9CiB9
CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNp
b24gNTgxODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERyYXdp
bmdBcmVhUHJveHlfaAotI2RlZmluZSBEcmF3aW5nQXJlYVByb3h5X2gKLQotI2luY2x1ZGUgIkFy
Z3VtZW50RW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgQ29yZUlQQyB7Ci0gICAgY2xhc3MgQXJndW1l
bnREZWNvZGVyOwotICAgIGNsYXNzIENvbm5lY3Rpb247Ci0gICAgY2xhc3MgTWVzc2FnZUlEOwot
fQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgSW50U2l6ZTsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIERyYXdpbmdBcmVhUHJveHkgewotcHVibGljOgotICAgIGVu
dW0gVHlwZSB7Ci0gICAgICAgIERyYXdpbmdBcmVhVXBkYXRlQ2h1bmtUeXBlCi0gICAgfTsKLQot
ICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhUHJveHkoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdEludG9Db250ZXh0KENHUmVjdCwgQ0dDb250ZXh0UmVmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImKSA9IDA7Ci0KLSAgICAvLyBUaGUgRHJh
d2luZ0FyZWFQcm94eSBzaG91bGQgbmV2ZXIgYmUgZGVjb2RlZCBpdHNlbGYuIEluc3RlYWQsIHRo
ZSBEcmF3aW5nQXJlYSBzaG91bGQgYmUgZGVjb2RlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpKTsKLSAgICB9Ci0K
LXByb3RlY3RlZDoKLSAgICBEcmF3aW5nQXJlYVByb3h5KFR5cGUpOwotCi0gICAgVHlwZSBtX3R5
cGU7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEcmF3aW5n
QXJlYVByb3h5X2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5
Lm1tCShyZXZpc2lvbiA1ODE4NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJl
YVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1EcmF3
aW5nQXJlYVByb3h5OjpEcmF3aW5nQXJlYVByb3h5KFR5cGUgdHlwZSkKLSAgICA6IG1fdHlwZSh0
eXBlKQotewotfQotCi1EcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0FyZWFQcm94eSgpCi17Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0Ry
YXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaAkocmV2aXNpb24gNTgxODQpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRHJhd2lu
Z0FyZWFQcm94eVVwZGF0ZUNodW5rX2gKLSNkZWZpbmUgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNo
dW5rX2gKLQotI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ludFNpemUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZmRlZiBfX09CSkNf
XwotQGNsYXNzIFdLVmlldzsKLSNlbHNlCi1jbGFzcyBXS1ZpZXc7Ci0jZW5kaWYKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFVwZGF0ZUNodW5rOwotCi1jbGFzcyBEcmF3aW5nQXJlYVBy
b3h5VXBkYXRlQ2h1bmsgOiBwdWJsaWMgRHJhd2luZ0FyZWFQcm94eSB7Ci1wdWJsaWM6Ci0gICAg
RHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rKFdLVmlldyopOwotICAgIHZpcnR1YWwgfkRyYXdp
bmdBcmVhUHJveHlVcGRhdGVDaHVuaygpOwotCi0gICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0SW50
b0NvbnRleHQoQ0dSZWN0LCBDR0NvbnRleHRSZWYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXImKTsKLQotICAgIC8vIFRoZSBEcmF3aW5nQXJlYVByb3h5IHNob3Vs
ZCBuZXZlciBiZSBkZWNvZGVkIGl0c2VsZi4gSW5zdGVhZCwgdGhlIERyYXdpbmdBcmVhIHNob3Vs
ZCBiZSBkZWNvZGVkLgotICAgIHZpcnR1YWwgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgRHJhd2luZ0FyZWFQcm94eTo6
ZW5jb2RlKGVuY29kZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGRyYXdVcGRhdGVD
aHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqKTsKLSAgICB2b2lkIGVuc3VyZUJhY2tp
bmdTdG9yZSgpOwotCi0gICAgdm9pZCBkaWRTZXRTaXplKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVu
ayk7Ci0gICAgdm9pZCB1cGRhdGUoVXBkYXRlQ2h1bmsqKTsKLQotICAgIGJvb2wgbV9pc0luaXRp
YWxpemVkOwotICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbjsK
LQotICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3U2l6ZTsgLy8gU2l6ZSBvZiB0aGUgQmFja2lu
Z1N0b3JlIGFzIHdlbGwuCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RTZXRWaWV3U2l6ZTsK
LQotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fYml0bWFwQ29udGV4dDsKLQotICAgIFdL
VmlldyogbV93ZWJWaWV3OwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5tbQkocmV2aXNp
b24gNTgxODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRHJhd2luZ0FyZWFQcm94eVVwZGF0
ZUNodW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmgiCi0KLSNpbXBvcnQgIk1lc3Nh
Z2VJRC5oIgotCi0jaW1wb3J0ICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgotI2ltcG9ydCAi
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIgotI2ltcG9ydCAiV0tWaWV3LmgiCi0jaW1w
b3J0ICJVcGRhdGVDaHVuay5oIgotI2ltcG9ydCAiV0tBUElDYXN0LmgiCi0jaW1wb3J0ICJXZWJD
b3JlVHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgot
I2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpEcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsoV0tWaWV3KiB3ZWJWaWV3KQotICAgIDogRHJhd2luZ0Fy
ZWFQcm94eShEcmF3aW5nQXJlYVVwZGF0ZUNodW5rVHlwZSkKLSAgICAsIG1faXNJbml0aWFsaXpl
ZChmYWxzZSkKLSAgICAsIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24oZmFs
c2UpCi0gICAgLCBtX3dlYlZpZXcod2ViVmlldykKLXsKLX0KLQotRHJhd2luZ0FyZWFQcm94eVVw
ZGF0ZUNodW5rOjp+RHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rKCkKLXsKLX0KLQotdm9pZCBE
cmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRyYXdSZWN0SW50b0NvbnRleHQoQ0dSZWN0IHJl
Y3QsIENHQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7
Ci0gICAgICAgIHNldFNpemUoSW50U2l6ZShbbV93ZWJWaWV3IGZyYW1lXS5zaXplKSk7Ci0gICAg
ICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1faXNXYWl0aW5n
Rm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24pIHsKLSAgICAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gdG9XSyhbbV93ZWJWaWV3IHBhZ2VSZWZdKTsKLSAgICAgICAgaWYgKCFwYWdlLT5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmF1dG9fcHRy
PENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzID0gcGFnZS0+cHJvY2VzcygpLT5j
b25uZWN0aW9uKCktPndhaXRGb3IoRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkRpZFNldFNpemUs
IHBhZ2UtPnBhZ2VJRCgpLCAwLjA0KTsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5nZXQoKSkKLSAg
ICAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlKHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigp
LCBDb3JlSVBDOjpNZXNzYWdlSUQoRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkRpZFNldFNpemUp
LCAqYXJndW1lbnRzLmdldCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYml0bWFwQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0
Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKG1fYml0bWFwQ29udGV4dC5nZXQoKSkpOwot
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSwgaW1h
Z2UuZ2V0KCkpOwotfQotCi12b2lkIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6ZHJhd1Vw
ZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZShVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17Ci0g
ICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UodXBkYXRlQ2h1bmstPmNyZWF0ZUltYWdlKCkpOwotICAgIGNvbnN0IEludFJlY3QmIHVwZGF0
ZUNodW5rUmVjdCA9IHVwZGF0ZUNodW5rLT5yZWN0KCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKG1fYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSh1cGRhdGVDaHVua1JlY3Qu
eCgpLCBtX3ZpZXdTaXplLmhlaWdodCgpIC0gdXBkYXRlQ2h1bmtSZWN0LmJvdHRvbSgpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVw
ZGF0ZUNodW5rUmVjdC53aWR0aCgpLCB1cGRhdGVDaHVua1JlY3QuaGVpZ2h0KCkpLCBpbWFnZS5n
ZXQoKSk7Ci0gICAgW21fd2ViVmlldyBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6TlNSZWN0RnJvbUNH
UmVjdCh1cGRhdGVDaHVua1JlY3QpXTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRl
Q2h1bms6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCi17Ci0gICAgaWYgKG1fYml0bWFwQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgbV9iaXRt
YXBDb250ZXh0LmFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIG1fdmlld1NpemUud2lk
dGgoKSwgbV92aWV3U2l6ZS5oZWlnaHQoKSwgOCwgbV92aWV3U2l6ZS53aWR0aCgpICogNCwgY29s
b3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7Ci0gICAgCi0g
ICAgLy8gRmxpcCB0aGUgYml0bWFwIGNvbnRleHQgY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKG1fYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV92aWV3U2l6ZS5o
ZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0obV9iaXRtYXBDb250ZXh0LmdldCgpLCAx
LCAtMSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpzZXRTaXplKGNv
bnN0IEludFNpemUmIHZpZXdTaXplKQotewotICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Ci0K
LSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB0b1dLKFttX3dlYlZpZXcgcGFnZVJlZl0pOwotICAg
IGlmICghcGFnZS0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ZpZXdTaXpl
ID0gdmlld1NpemU7Ci0gICAgbV9sYXN0U2V0Vmlld1NpemUgPSB2aWV3U2l6ZTsKLSAgICAKLSAg
ICBpZiAobV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0
dXJuOwotICAgIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSB0cnVlOwot
ICAgIAotICAgIHBhZ2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgp
OwotICAgIHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5zZW5kKERyYXdpbmdBcmVhTWVz
c2FnZTo6U2V0U2l6ZSwgcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHZpZXdTaXplKSk7Ci19
Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpkaWRTZXRTaXplKFVwZGF0ZUNo
dW5rKiB1cGRhdGVDaHVuaykKLXsKLSAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFt
ZU5vdGlmaWNhdGlvbik7Ci0gICAgbV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlv
biA9IGZhbHNlOwotCi0gICAgSW50U2l6ZSB2aWV3U2l6ZSA9IHVwZGF0ZUNodW5rLT5yZWN0KCku
c2l6ZSgpOwotCi0gICAgaWYgKHZpZXdTaXplICE9IG1fbGFzdFNldFZpZXdTaXplKQotICAgICAg
ICBzZXRTaXplKG1fbGFzdFNldFZpZXdTaXplKTsKLQotICAgIC8vIEludmFsaWRhdGUgdGhlIGJh
Y2tpbmcgc3RvcmUuCi0gICAgbV9iaXRtYXBDb250ZXh0ID0gMDsKLSAgICBkcmF3VXBkYXRlQ2h1
bmtJbnRvQmFja2luZ1N0b3JlKHVwZGF0ZUNodW5rKTsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHRvV0soW21fd2ViVmlldyBwYWdlUmVmXSk7Ci0gICAgcGFnZS0+cHJvY2VzcygpLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBk
YXRlQ2h1bms6OnVwZGF0ZShVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17Ci0gICAgZHJhd1Vw
ZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZSh1cGRhdGVDaHVuayk7Ci0gICAgCi0gICAgV2ViUGFn
ZVByb3h5KiBwYWdlID0gdG9XSyhbbV93ZWJWaWV3IHBhZ2VSZWZdKTsKLSAgICBwYWdlLT5wcm9j
ZXNzKCktPmNvbm5lY3Rpb24oKS0+c2VuZChEcmF3aW5nQXJlYU1lc3NhZ2U6OkRpZFVwZGF0ZSwg
cGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKCkpOwotfQotCi12b2lkIERyYXdpbmdBcmVhUHJv
eHlVcGRhdGVDaHVuazo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgYXJn
dW1lbnRzKQotewotICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZTo6S2luZD4oKSkgewotICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpV
cGRhdGU6IHsKLSAgICAgICAgICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rOwotICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMuZGVjb2RlKHVwZGF0ZUNodW5rKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB1cGRhdGUoJnVwZGF0ZUNodW5rKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkRp
ZFNldFNpemU6IHsKLSAgICAgICAgICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rOwotICAgICAg
ICAgICAgaWYgKCFhcmd1bWVudHMuZGVjb2RlKENvcmVJUEM6Ok91dCh1cGRhdGVDaHVuaykpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgZGlkU2V0U2l6ZSgmdXBkYXRl
Q2h1bmspOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBVSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVD
aHVua01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHlV
cGRhdGVDaHVua01hYy5tbQkocmV2aXNpb24gNTgxODQpCShmcm9tIFVJUHJvY2Vzcy9tYWMvRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLm1tOjU4MTg0KQorKysgVUlQcm9jZXNzL21hYy9EcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmtNYWMubW0JKHdvcmtpbmcgY29weSkKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL21hYy9EcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmtNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVu
a01hYy5tbQkocmV2aXNpb24gNTgxODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRHJhd2lu
Z0FyZWFQcm94eVVwZGF0ZUNodW5rTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2OSArMjMs
MjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0
ICJEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5VXBkYXRlQ2h1bmsuaCIKIAotI2ltcG9ydCAiTWVzc2FnZUlELmgiCi0KLSNpbXBvcnQgIkRy
YXdpbmdBcmVhTWVzc2FnZUtpbmRzLmgiCi0jaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZUtpbmRzLmgiCi0jaW1wb3J0ICJXS1ZpZXcuaCIKLSNpbXBvcnQgIlVwZGF0ZUNodW5rLmgiCi0j
aW1wb3J0ICJXS0FQSUNhc3QuaCIKLSNpbXBvcnQgIldlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFs
bGluZy5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIkRy
YXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNs
dWRlICJVcGRhdGVDaHVuay5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLURyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6RHJhd2luZ0FyZWFQcm94eVVw
ZGF0ZUNodW5rKFdLVmlldyogd2ViVmlldykKLSAgICA6IERyYXdpbmdBcmVhUHJveHkoRHJhd2lu
Z0FyZWFVcGRhdGVDaHVua1R5cGUpCi0gICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAg
LCBtX2lzV2FpdGluZ0ZvckRpZFNldEZyYW1lTm90aWZpY2F0aW9uKGZhbHNlKQotICAgICwgbV93
ZWJWaWV3KHdlYlZpZXcpCi17Ci19Ci0KLURyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6fkRy
YXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuaygpCi17Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94
eVVwZGF0ZUNodW5rOjpkcmF3UmVjdEludG9Db250ZXh0KENHUmVjdCByZWN0LCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKLXsKLSAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewotICAgICAgICBzZXRT
aXplKEludFNpemUoW21fd2ViVmlldyBmcmFtZV0uc2l6ZSkpOwotICAgICAgICBtX2lzSW5pdGlh
bGl6ZWQgPSB0cnVlOwotICAgIH0KLQotICAgIGlmIChtX2lzV2FpdGluZ0ZvckRpZFNldEZyYW1l
Tm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHRvV0soW21fd2Vi
VmlldyBwYWdlUmVmXSk7Ci0gICAgICAgIGlmICghcGFnZS0+aXNWYWxpZCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgc3RkOjphdXRvX3B0cjxDb3JlSVBDOjpBcmd1
bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT53
YWl0Rm9yKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplLCBwYWdlLT5wYWdlSUQo
KSwgMC4wNCk7Ci0gICAgICAgIGlmIChhcmd1bWVudHMuZ2V0KCkpCi0gICAgICAgICAgICBkaWRS
ZWNlaXZlTWVzc2FnZShwYWdlLT5wcm9jZXNzKCktPmNvbm5lY3Rpb24oKSwgQ29yZUlQQzo6TWVz
c2FnZUlEKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplKSwgKmFyZ3VtZW50cy5n
ZXQoKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2JpdG1hcENvbnRleHQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBDR0JpdG1hcENv
bnRleHRDcmVhdGVJbWFnZShtX2JpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSksIGltYWdlLmdldCgpKTsKLX0K
LQotdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRyYXdVcGRhdGVDaHVua0ludG9C
YWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqIHVwZGF0ZUNodW5rKQorV2ViUGFnZVByb3h5KiBEcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OnBhZ2UoKQogewotICAgIGVuc3VyZUJhY2tpbmdTdG9y
ZSgpOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKHVwZGF0ZUNodW5rLT5jcmVh
dGVJbWFnZSgpKTsKLSAgICBjb25zdCBJbnRSZWN0JiB1cGRhdGVDaHVua1JlY3QgPSB1cGRhdGVD
aHVuay0+cmVjdCgpOwotICAgIAotICAgIENHQ29udGV4dERyYXdJbWFnZShtX2JpdG1hcENvbnRl
eHQuZ2V0KCksIENHUmVjdE1ha2UodXBkYXRlQ2h1bmtSZWN0LngoKSwgbV92aWV3U2l6ZS5oZWln
aHQoKSAtIHVwZGF0ZUNodW5rUmVjdC5ib3R0b20oKSwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDaHVua1JlY3Qud2lkdGgo
KSwgdXBkYXRlQ2h1bmtSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwotICAgIFttX3dlYlZp
ZXcgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Ok5TUmVjdEZyb21DR1JlY3QodXBkYXRlQ2h1bmtSZWN0
KV07CisgICAgcmV0dXJuIHRvV0soW21fd2ViVmlldyBwYWdlUmVmXSk7CiB9CiAKIHZvaWQgRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjplbnN1cmVCYWNraW5nU3RvcmUoKQpAQCAtMTAxLDcy
ICs1NCwzMCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6ZW5zdXJlCiAgICAg
Q0dDb250ZXh0U2NhbGVDVE0obV9iaXRtYXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiB9CiAKLXZv
aWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHZp
ZXdTaXplKQordm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmludmFsaWRhdGVCYWNr
aW5nU3RvcmUoKQogewotICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Ci0KLSAgICBXZWJQYWdl
UHJveHkqIHBhZ2UgPSB0b1dLKFttX3dlYlZpZXcgcGFnZVJlZl0pOwotICAgIGlmICghcGFnZS0+
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ZpZXdTaXplID0gdmlld1NpemU7
Ci0gICAgbV9sYXN0U2V0Vmlld1NpemUgPSB2aWV3U2l6ZTsKLSAgICAKLSAgICBpZiAobV9pc1dh
aXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
aXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSB0cnVlOwotICAgIAotICAgIHBh
Z2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwotICAgIHBhZ2Ut
PnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5zZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6U2V0U2l6
ZSwgcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHZpZXdTaXplKSk7CisgICAgbV9iaXRtYXBD
b250ZXh0ID0gMDsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRpZFNl
dFNpemUoVXBkYXRlQ2h1bmsqIHVwZGF0ZUNodW5rKQordm9pZCBEcmF3aW5nQXJlYVByb3h5VXBk
YXRlQ2h1bms6OnBsYXRmb3JtUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCwgQ0dDb250ZXh0UmVm
IGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmlj
YXRpb24pOwotICAgIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSBmYWxz
ZTsKLQotICAgIEludFNpemUgdmlld1NpemUgPSB1cGRhdGVDaHVuay0+cmVjdCgpLnNpemUoKTsK
LQotICAgIGlmICh2aWV3U2l6ZSAhPSBtX2xhc3RTZXRWaWV3U2l6ZSkKLSAgICAgICAgc2V0U2l6
ZShtX2xhc3RTZXRWaWV3U2l6ZSk7Ci0KLSAgICAvLyBJbnZhbGlkYXRlIHRoZSBiYWNraW5nIHN0
b3JlLgotICAgIG1fYml0bWFwQ29udGV4dCA9IDA7Ci0gICAgZHJhd1VwZGF0ZUNodW5rSW50b0Jh
Y2tpbmdTdG9yZSh1cGRhdGVDaHVuayk7CisgICAgaWYgKCFtX2JpdG1hcENvbnRleHQpCisgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHRvV0soW21fd2ViVmlldyBw
YWdlUmVmXSk7Ci0gICAgcGFnZS0+cHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0
b3AoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UobV9iaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpLCBpbWFnZS5nZXQoKSk7CiB9
CiAKLXZvaWQgRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rOjp1cGRhdGUoVXBkYXRlQ2h1bmsq
IHVwZGF0ZUNodW5rKQordm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRyYXdVcGRh
dGVDaHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1bmsqIHVwZGF0ZUNodW5rKQogewotICAg
IGRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUodXBkYXRlQ2h1bmspOwotICAgIAotICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IHRvV0soW21fd2ViVmlldyBwYWdlUmVmXSk7Ci0gICAgcGFn
ZS0+cHJvY2VzcygpLT5jb25uZWN0aW9uKCktPnNlbmQoRHJhd2luZ0FyZWFNZXNzYWdlOjpEaWRV
cGRhdGUsIHBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpKTsKLX0KKyAgICBlbnN1cmVCYWNr
aW5nU3RvcmUoKTsKIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGFyZ3VtZW50cykKLXsKLSAgICBzd2l0Y2gg
KG1lc3NhZ2VJRC5nZXQ8RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OktpbmQ+KCkpIHsKLSAgICAg
ICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6VXBkYXRlOiB7Ci0gICAgICAgICAgICBV
cGRhdGVDaHVuayB1cGRhdGVDaHVuazsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmRlY29k
ZSh1cGRhdGVDaHVuaykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdXBk
YXRlKCZ1cGRhdGVDaHVuayk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplOiB7Ci0gICAgICAgICAg
ICBVcGRhdGVDaHVuayB1cGRhdGVDaHVuazsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmRl
Y29kZShDb3JlSVBDOjpPdXQodXBkYXRlQ2h1bmspKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgICAgIGRpZFNldFNpemUoJnVwZGF0ZUNodW5rKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICB9CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKHVwZGF0
ZUNodW5rLT5jcmVhdGVJbWFnZSgpKTsKKyAgICBjb25zdCBJbnRSZWN0JiB1cGRhdGVDaHVua1Jl
Y3QgPSB1cGRhdGVDaHVuay0+cmVjdCgpOworCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKG1fYml0
bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSh1cGRhdGVDaHVua1JlY3QueCgpLCBtX3ZpZXdT
aXplLmhlaWdodCgpIC0gdXBkYXRlQ2h1bmtSZWN0LmJvdHRvbSgpLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNodW5rUmVj
dC53aWR0aCgpLCB1cGRhdGVDaHVua1JlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAg
W21fd2ViVmlldyBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6TlNSZWN0RnJvbUNHUmVjdCh1cGRhdGVD
aHVua1JlY3QpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vRHJhd2luZ0FyZWFQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHkuY3BwCShyZXZpc2lvbiA1ODE4OSkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL3dpbi9EcmF3aW5nQXJlYVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
LmgiCi0KLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNz
YWdlS2luZHMuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0j
aW5jbHVkZSAiTWVzc2FnZUlELmgiCi0jaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKLSNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9CaXRtYXBJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotRHJhd2luZ0FyZWFQ
cm94eTo6RHJhd2luZ0FyZWFQcm94eShXZWJWaWV3KiB3ZWJWaWV3KQotICAgIDogbV9pc1dhaXRp
bmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbihmYWxzZSkKLSAgICAsIG1fd2ViVmlldyh3ZWJW
aWV3KQotewotfQotCi1EcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0FyZWFQcm94eSgpCi17Ci19
Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKLXsKLSAgICBp
ZiAobV9iYWNraW5nU3RvcmVCaXRtYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIEJpdG1hcElu
Zm8gYml0bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJvdHRvbVVwKG1fdmlld1NpemUpOwot
Ci0gICAgdm9pZCogcGl4ZWxzID0gMDsKLSAgICBtX2JhY2tpbmdTdG9yZUJpdG1hcC5zZXQoOjpD
cmVhdGVESUJTZWN0aW9uKDAsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywg
MCwgMCkpOwotCi0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZURDKSB7Ci0gICAgICAgIC8vIENyZWF0
ZSBhIERDIGZvciB0aGUgYmFja2luZyBzdG9yZS4KLSAgICAgICAgSERDIHNjcmVlbkRDID0gOjpH
ZXREQygwKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmVEQy5zZXQoOjpDcmVhdGVDb21wYXRpYmxl
REMoc2NyZWVuREMpKTsKLSAgICAgICAgOjpSZWxlYXNlREMoMCwgc2NyZWVuREMpOwotICAgIH0K
LQotICAgIDo6U2VsZWN0T2JqZWN0KG1fYmFja2luZ1N0b3JlREMuZ2V0KCksIG1fYmFja2luZ1N0
b3JlQml0bWFwLmdldCgpKTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpwYWludChIREMg
aGRjLCBSRUNUIGRpcnR5UmVjdCkKLXsKLSAgICBpZiAobV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFt
ZU5vdGlmaWNhdGlvbikgewotICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBtX3dlYlZpZXct
PnBhZ2UoKTsKLSAgICAgICAgaWYgKCFwYWdlLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmF1dG9fcHRyPENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcj4gYXJndW1lbnRzID0gcGFnZS0+cHJvY2VzcygpLT5jb25uZWN0aW9uKCktPndhaXRGb3Io
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkRpZFNldFNpemUsIHBhZ2UtPnBhZ2VJRCgpLCAwLjA0
KTsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5nZXQoKSkKLSAgICAgICAgICAgIGRpZFJlY2VpdmVN
ZXNzYWdlKHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLCBDb3JlSVBDOjpNZXNzYWdlSUQo
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkRpZFNldFNpemUpLCAqYXJndW1lbnRzLmdldCgpKTsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlQml0bWFwKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBCaXRCbHQgZnJvbSB0aGUgYmFja2luZy1zdG9yZSB0byB0aGUgcGFzc2VkIGlu
IGhkYy4KLSAgICBJbnRSZWN0IHJlY3QoZGlydHlSZWN0KTsKLSAgICA6OkJpdEJsdChoZGMsIHJl
Y3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBtX2JhY2tpbmdT
dG9yZURDLmdldCgpLCByZWN0LngoKSwgcmVjdC55KCksIFNSQ0NPUFkpOwotfQotCi12b2lkIERy
YXdpbmdBcmVhUHJveHk6OmRyYXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUoVXBkYXRlQ2h1
bmsqIHVwZGF0ZUNodW5rKQotewotICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwotCi0gICAgT3du
UHRyPEhEQz4gdXBkYXRlQ2h1bmtCaXRtYXBEQyg6OkNyZWF0ZUNvbXBhdGlibGVEQyhtX2JhY2tp
bmdTdG9yZURDLmdldCgpKSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBiaXRtYXAuCi0gICAgQml0bWFw
SW5mbyBiaXRtYXBJbmZvID0gQml0bWFwSW5mbzo6Y3JlYXRlQm90dG9tVXAodXBkYXRlQ2h1bmst
PmZyYW1lKCkuc2l6ZSgpKTsKLQotICAgIC8vIER1cGxpY2F0ZSB0aGUgdXBkYXRlIGNodW5rIGhh
bmRsZS4KLSAgICBIQU5ETEUgdXBkYXRlQ2h1bmtIYW5kbGU7Ci0gICAgQk9PTCByZXN1bHQgPSA6
OkR1cGxpY2F0ZUhhbmRsZShtX3dlYlZpZXctPnBhZ2UoKS0+cHJvY2VzcygpLT5wcm9jZXNzSWRl
bnRpZmllcigpLCB1cGRhdGVDaHVuay0+bWVtb3J5KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6OkdldEN1cnJlbnRQcm9jZXNzKCksICZ1cGRhdGVDaHVua0hhbmRsZSwg
U1RBTkRBUkRfUklHSFRTX1JFUVVJUkVEIHwgRklMRV9NQVBfUkVBRCB8IEZJTEVfTUFQX1dSSVRF
LCBmYWxzZSwgRFVQTElDQVRFX0NMT1NFX1NPVVJDRSk7Ci0KLSAgICB2b2lkKiBwaXhlbHMgPSAw
OwotICAgIE93blB0cjxIQklUTUFQPiBoQml0bWFwKDo6Q3JlYXRlRElCU2VjdGlvbigwLCAmYml0
bWFwSW5mbywgRElCX1JHQl9DT0xPUlMsICZwaXhlbHMsIHVwZGF0ZUNodW5rSGFuZGxlLCAwKSk7
Ci0gICAgOjpTZWxlY3RPYmplY3QodXBkYXRlQ2h1bmtCaXRtYXBEQy5nZXQoKSwgaEJpdG1hcC5n
ZXQoKSk7Ci0KLSAgICAvLyBCaXRCbHQgZnJvbSB0aGUgVXBkYXRlQ2h1bmsgdG8gdGhlIGJhY2tp
bmcgc3RvcmUuCi0gICAgOjpCaXRCbHQobV9iYWNraW5nU3RvcmVEQy5nZXQoKSwgdXBkYXRlQ2h1
bmstPmZyYW1lKCkueCgpLCB1cGRhdGVDaHVuay0+ZnJhbWUoKS55KCksIHVwZGF0ZUNodW5rLT5m
cmFtZSgpLndpZHRoKCksIHVwZGF0ZUNodW5rLT5mcmFtZSgpLmhlaWdodCgpLCB1cGRhdGVDaHVu
a0JpdG1hcERDLmdldCgpLCAwLCAwLCBTUkNDT1BZKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgbm90IGRvIHRoaXMgaGVyZS4KLSAgICA6OkNsb3NlSGFuZGxlKHVwZGF0ZUNodW5rSGFuZGxl
KTsKLQotICAgIC8vIEludmFsaWRhdGUgdGhlIFdlYlZpZXcncyBIV05ELgotICAgIFJFQ1QgcmVj
dCA9IHVwZGF0ZUNodW5rLT5mcmFtZSgpOwotICAgIDo6SW52YWxpZGF0ZVJlY3QobV93ZWJWaWV3
LT53aW5kb3coKSwgJnJlY3QsIGZhbHNlKTsKLX0KLQotdm9pZCBEcmF3aW5nQXJlYVByb3h5Ojpz
ZXRTaXplKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQotewotICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIGlmICghcGFnZS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAodmlld1NpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3ZpZXdTaXplID0gdmlld1NpemU7Ci0gICAgbV9sYXN0U2V0Vmlld1NpemUgPSB2
aWV3U2l6ZTsKLSAgICAKLSAgICBpZiAobV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNh
dGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3Rp
ZmljYXRpb24gPSB0cnVlOwotICAgIAotICAgIHBhZ2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLT5zdGFydCgpOwotICAgIHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5z
ZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6U2V0U2l6ZSwgcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6
OkluKHZpZXdTaXplKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eTo6ZGlkU2V0U2l6ZShV
cGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17Ci0gICAgQVNTRVJUKG1faXNXYWl0aW5nRm9yRGlk
U2V0RnJhbWVOb3RpZmljYXRpb24pOwotICAgIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3Rp
ZmljYXRpb24gPSBmYWxzZTsKLQotICAgIEludFNpemUgdmlld1NpemUgPSB1cGRhdGVDaHVuay0+
ZnJhbWUoKS5zaXplKCk7Ci0gICAgaWYgKHZpZXdTaXplICE9IG1fbGFzdFNldFZpZXdTaXplKQot
ICAgICAgICBzZXRTaXplKG1fbGFzdFNldFZpZXdTaXplKTsKLQotICAgIC8vIEludmFsaWRhdGUg
dGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgbV9iYWNraW5nU3RvcmVCaXRtYXAuY2xlYXIoKTsKLSAg
ICBkcmF3VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0b3JlKHVwZGF0ZUNodW5rKTsKLQotICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIHBhZ2UtPnByb2Nlc3Mo
KS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQ
cm94eTo6dXBkYXRlKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVuaykKLXsKLSAgICBkcmF3VXBkYXRl
Q2h1bmtJbnRvQmFja2luZ1N0b3JlKHVwZGF0ZUNodW5rKTsKLQotICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlv
bigpLT5zZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6RGlkVXBkYXRlLCBwYWdlLT5wYWdlSUQoKSwg
Q29yZUlQQzo6SW4oKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgYXJndW1lbnRzKQotewotICAgIHN3aXRjaCAobWVz
c2FnZUlELmdldDxEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6S2luZD4oKSkgewotICAgICAgICBj
YXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpVcGRhdGU6IHsKLSAgICAgICAgICAgIFVwZGF0
ZUNodW5rIHVwZGF0ZUNodW5rOwotICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMuZGVjb2RlKHVw
ZGF0ZUNodW5rKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIHVwZGF0ZSgmdXBkYXRlQ2h1bmspOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGlkU2V0U2l6ZTogewot
ICAgICAgICAgICAgVXBkYXRlQ2h1bmsgdXBkYXRlQ2h1bms7Ci0gICAgICAgICAgICBpZiAoIWFy
Z3VtZW50cy5kZWNvZGUoQ29yZUlQQzo6T3V0KHVwZGF0ZUNodW5rKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICBkaWRTZXRTaXplKCZ1cGRhdGVDaHVuayk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNpb24g
NTgxODkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vRHJhd2luZ0FyZWFQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERyYXdpbmdB
cmVhUHJveHlfaAotI2RlZmluZSBEcmF3aW5nQXJlYVByb3h5X2gKLQotI2luY2x1ZGUgIkFyZ3Vt
ZW50RW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIENvcmVJUEMgewotICAgIGNsYXNzIEFyZ3VtZW50RGVj
b2RlcjsKLSAgICBjbGFzcyBDb25uZWN0aW9uOwotICAgIGNsYXNzIE1lc3NhZ2VJRDsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFVwZGF0ZUNodW5rOwotY2xhc3MgV2ViVmlldzsK
LQotY2xhc3MgRHJhd2luZ0FyZWFQcm94eSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKLSAg
ICAgICAgRHJhd2luZ0FyZWFVcGRhdGVDaHVua1R5cGUKLSAgICB9OwotCi0gICAgRHJhd2luZ0Fy
ZWFQcm94eShXZWJWaWV3Kik7Ci0gICAgfkRyYXdpbmdBcmVhUHJveHkoKTsKLQotICAgIHZvaWQg
cGFpbnQoSERDLCBSRUNUKTsKLSAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImKTsKLQotICAgIC8v
IFRoZSBEcmF3aW5nQXJlYVByb3h5IHNob3VsZCBuZXZlciBiZSBkZWNvZGVkIGl0c2VsZi4gSW5z
dGVhZCwgdGhlIERyYXdpbmdBcmVhIHNob3VsZCBiZSBkZWNvZGVkLgotICAgIHZvaWQgZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihEcmF3aW5nQXJlYVVwZGF0ZUNo
dW5rVHlwZSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGVuc3VyZUJhY2tpbmdTdG9y
ZSgpOwotICAgIHZvaWQgZHJhd1VwZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZShVcGRhdGVDaHVu
ayopOwotICAgIHZvaWQgZGlkU2V0U2l6ZShVcGRhdGVDaHVuayopOwotICAgIHZvaWQgdXBkYXRl
KFVwZGF0ZUNodW5rKik7Ci0KLSAgICBPd25QdHI8SERDPiBtX2JhY2tpbmdTdG9yZURDOwotICAg
IE93blB0cjxIQklUTUFQPiBtX2JhY2tpbmdTdG9yZUJpdG1hcDsKLQotICAgIGJvb2wgbV9pc1dh
aXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbjsKLQotICAgIFdlYkNvcmU6OkludFNpemUg
bV92aWV3U2l6ZTsgLy8gU2l6ZSBvZiB0aGUgQmFja2luZ1N0b3JlIGFzIHdlbGwuCi0gICAgV2Vi
Q29yZTo6SW50U2l6ZSBtX2xhc3RTZXRWaWV3U2l6ZTsKLQotICAgIFdlYlZpZXcqIG1fd2ViVmll
dzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRHJhd2luZ0FyZWFQ
cm94eV9oCkluZGV4OiBVSVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVua1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVUlQcm9jZXNzL3dpbi9EcmF3aW5nQXJlYVByb3h5VXBkYXRl
Q2h1bmtXaW4uY3BwCShyZXZpc2lvbiA1ODE4OSkJKGZyb20gVUlQcm9jZXNzL3dpbi9EcmF3aW5n
QXJlYVByb3h5LmNwcDo1ODE4OSkKKysrIFVJUHJvY2Vzcy93aW4vRHJhd2luZ0FyZWFQcm94eVVw
ZGF0ZUNodW5rV2luLmNwcAkod29ya2luZyBjb3B5KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVua1dpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVua1dpbi5jcHAJKHJl
dmlzaW9uIDU4MTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL0RyYXdpbmdBcmVhUHJveHlV
cGRhdGVDaHVua1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMzICsyMywyMyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5LmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmgiCiAK
LSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlS2lu
ZHMuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZUlELmgiCiAjaW5jbHVkZSAiVXBkYXRlQ2h1bmsuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9C
aXRtYXBJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotRHJhd2luZ0FyZWFQcm94eTo6
RHJhd2luZ0FyZWFQcm94eShXZWJWaWV3KiB3ZWJWaWV3KQotICAgIDogbV9pc1dhaXRpbmdGb3JE
aWRTZXRGcmFtZU5vdGlmaWNhdGlvbihmYWxzZSkKLSAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQor
V2ViUGFnZVByb3h5KiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bms6OnBhZ2UoKQogeworICAg
IHJldHVybiBtX3dlYlZpZXctPnBhZ2UoKTsKIH0KIAotRHJhd2luZ0FyZWFQcm94eTo6fkRyYXdp
bmdBcmVhUHJveHkoKQotewotfQotCi12b2lkIERyYXdpbmdBcmVhUHJveHk6OmVuc3VyZUJhY2tp
bmdTdG9yZSgpCit2b2lkIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6ZW5zdXJlQmFja2lu
Z1N0b3JlKCkKIHsKICAgICBpZiAobV9iYWNraW5nU3RvcmVCaXRtYXApCiAgICAgICAgIHJldHVy
bjsKQEAgLTY5LDI3ICs1OSwyMSBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHk6OmVuc3VyZUJhY2tp
bmdTdG9yCiAgICAgOjpTZWxlY3RPYmplY3QobV9iYWNraW5nU3RvcmVEQy5nZXQoKSwgbV9iYWNr
aW5nU3RvcmVCaXRtYXAuZ2V0KCkpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJveHk6OnBhaW50
KEhEQyBoZGMsIFJFQ1QgZGlydHlSZWN0KQordm9pZCBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bms6OmludmFsaWRhdGVCYWNraW5nU3RvcmUoKQogewotICAgIGlmIChtX2lzV2FpdGluZ0ZvckRp
ZFNldEZyYW1lTm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IG1f
d2ViVmlldy0+cGFnZSgpOwotICAgICAgICBpZiAoIXBhZ2UtPmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6YXV0b19wdHI8Q29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBwYWdlLT5wcm9jZXNzKCktPmNvbm5lY3Rpb24oKS0+
d2FpdEZvcihEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGlkU2V0U2l6ZSwgcGFnZS0+cGFnZUlE
KCksIDAuMDQpOwotICAgICAgICBpZiAoYXJndW1lbnRzLmdldCgpKQotICAgICAgICAgICAgZGlk
UmVjZWl2ZU1lc3NhZ2UocGFnZS0+cHJvY2VzcygpLT5jb25uZWN0aW9uKCksIENvcmVJUEM6Ok1l
c3NhZ2VJRChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGlkU2V0U2l6ZSksICphcmd1bWVudHMu
Z2V0KCkpOwotICAgIH0KKyAgICBtX2JhY2tpbmdTdG9yZUJpdG1hcC5jbGVhcigpOworfQogCit2
b2lkIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuazo6cGxhdGZvcm1QYWludChjb25zdCBJbnRS
ZWN0JiByZWN0LCBIREMgaGRjKQorewogICAgIGlmICghbV9iYWNraW5nU3RvcmVCaXRtYXApCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIEJpdEJsdCBmcm9tIHRoZSBiYWNraW5nLXN0b3JlIHRv
IHRoZSBwYXNzZWQgaW4gaGRjLgotICAgIEludFJlY3QgcmVjdChkaXJ0eVJlY3QpOwogICAgIDo6
Qml0Qmx0KGhkYywgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCksIG1fYmFja2luZ1N0b3JlREMuZ2V0KCksIHJlY3QueCgpLCByZWN0LnkoKSwgU1JDQ09QWSk7
CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFQcm94eTo6ZHJhd1VwZGF0ZUNodW5rSW50b0JhY2tpbmdT
dG9yZShVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCit2b2lkIERyYXdpbmdBcmVhUHJveHlVcGRh
dGVDaHVuazo6ZHJhd1VwZGF0ZUNodW5rSW50b0JhY2tpbmdTdG9yZShVcGRhdGVDaHVuayogdXBk
YXRlQ2h1bmspCiB7CiAgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CiAKQEAgLTExOCw3MyArMTAy
LDQgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpkcmF3VXBkYXRlQ2h1bmtJbgogICAgIDo6SW52
YWxpZGF0ZVJlY3QobV93ZWJWaWV3LT53aW5kb3coKSwgJnJlY3QsIGZhbHNlKTsKIH0KIAotdm9p
ZCBEcmF3aW5nQXJlYVByb3h5OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQotewot
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIGlmICghcGFn
ZS0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodmlld1NpemUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ZpZXdTaXplID0gdmlld1NpemU7Ci0gICAg
bV9sYXN0U2V0Vmlld1NpemUgPSB2aWV3U2l6ZTsKLSAgICAKLSAgICBpZiAobV9pc1dhaXRpbmdG
b3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNXYWl0
aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSB0cnVlOwotICAgIAotICAgIHBhZ2UtPnBy
b2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwotICAgIHBhZ2UtPnByb2Nl
c3MoKS0+Y29ubmVjdGlvbigpLT5zZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6U2V0U2l6ZSwgcGFn
ZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHZpZXdTaXplKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0Fy
ZWFQcm94eTo6ZGlkU2V0U2l6ZShVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCi17Ci0gICAgQVNT
RVJUKG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24pOwotICAgIG1faXNXYWl0
aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSBmYWxzZTsKLQotICAgIEludFNpemUgdmll
d1NpemUgPSB1cGRhdGVDaHVuay0+ZnJhbWUoKS5zaXplKCk7Ci0gICAgaWYgKHZpZXdTaXplICE9
IG1fbGFzdFNldFZpZXdTaXplKQotICAgICAgICBzZXRTaXplKG1fbGFzdFNldFZpZXdTaXplKTsK
LQotICAgIC8vIEludmFsaWRhdGUgdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgbV9iYWNraW5nU3Rv
cmVCaXRtYXAuY2xlYXIoKTsKLSAgICBkcmF3VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0b3JlKHVw
ZGF0ZUNodW5rKTsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgp
OwotICAgIHBhZ2UtPnByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7Ci19
Ci0KLXZvaWQgRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVu
aykKLXsKLSAgICBkcmF3VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0b3JlKHVwZGF0ZUNodW5rKTsK
LQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOwotICAgIHBhZ2Ut
PnByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5zZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6RGlkVXBk
YXRlLCBwYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oKSk7Ci19Ci0KLXZvaWQgRHJhd2luZ0Fy
ZWFQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgYXJndW1lbnRz
KQotewotICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6
S2luZD4oKSkgewotICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpVcGRhdGU6
IHsKLSAgICAgICAgICAgIFVwZGF0ZUNodW5rIHVwZGF0ZUNodW5rOwotICAgICAgICAgICAgaWYg
KCFhcmd1bWVudHMuZGVjb2RlKHVwZGF0ZUNodW5rKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHVwZGF0ZSgmdXBkYXRlQ2h1bmspOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZTo6RGlkU2V0U2l6ZTogewotICAgICAgICAgICAgVXBkYXRlQ2h1bmsgdXBkYXRlQ2h1bms7
Ci0gICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5kZWNvZGUoQ29yZUlQQzo6T3V0KHVwZGF0ZUNo
dW5rKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBkaWRTZXRTaXpl
KCZ1cGRhdGVDaHVuayk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDU4MTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKLSNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eVVw
ZGF0ZUNodW5rLmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFj
dG9yeS5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKQEAgLTE2OSw3ICsxNjksNyBA
QCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzCiAKICAgICBtX3BhZ2Ug
PSBwYWdlTmFtZXNwYWNlLT5jcmVhdGVXZWJQYWdlKCk7CiAgICAgbV9wYWdlLT5zZXRQYWdlQ2xp
ZW50KHRoaXMpOwotICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50UmVjdChyZWN0KS5z
aXplKCksIG5ldyBEcmF3aW5nQXJlYVByb3h5KHRoaXMpKTsKKyAgICBtX3BhZ2UtPmluaXRpYWxp
emVXZWJQYWdlKEludFJlY3QocmVjdCkuc2l6ZSgpLCBuZXcgRHJhd2luZ0FyZWFQcm94eVVwZGF0
ZUNodW5rKHRoaXMpKTsKIAogICAgIG1fd2luZG93ID0gOjpDcmVhdGVXaW5kb3dFeCgwLCBrV2Vi
S2l0MldlYlZpZXdXaW5kb3dDbGFzc05hbWUsIDAsIFdTX0NISUxEIHwgV1NfQ0xJUFNJQkxJTkdT
IHwgV1NfQ0xJUENISUxEUkVOLAogICAgICAgICByZWN0LnRvcCwgcmVjdC5sZWZ0LCByZWN0LnJp
Z2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJlY3QudG9wLCBtX2hvc3RXaW5kb3cgPyBt
X2hvc3RXaW5kb3cgOiBIV05EX01FU1NBR0UsIDAsIGluc3RhbmNlSGFuZGxlKCksIHRoaXMpOwpA
QCAtMzA1LDcgKzMwNSw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25QYWludEV2ZW50KEhXTkQgaFdu
ZCwKICAgICBQQUlOVFNUUlVDVCBwYWludFN0cnVjdDsKICAgICBIREMgaGRjID0gOjpCZWdpblBh
aW50KG1fd2luZG93LCAmcGFpbnRTdHJ1Y3QpOwogCi0gICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5wYWludChoZGMsIHBhaW50U3RydWN0LnJjUGFpbnQpOworICAgIG1fcGFnZS0+ZHJhd2luZ0Fy
ZWEoKS0+cGFpbnQoSW50UmVjdChwYWludFN0cnVjdC5yY1BhaW50KSwgaGRjKTsKIAogICAgIDo6
RW5kUGFpbnQobV93aW5kb3csICZwYWludFN0cnVjdCk7CiAKSW5kZXg6IFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1ODE4OSkKKysrIFdlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2
ICs5OSwxMSBAQAogCQlCQzIwRUMwNzExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwRUMwNTEx
NkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5jcHAgKi87IH07CiAJCUJDMjBFRDY2MTE2Rjk3
MTEwMDA5NEE1MCAvKiBXS1VSTENGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzIwRUQ2NDExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkMyMEVENjcxMTZG
OTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyMEVENjUxMTZGOTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuY3Bw
ICovOyB9OworCQlCQzI2NTFGNjExODI1RUY4MDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVw
ZGF0ZUNodW5rTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVD
aHVua01hYy5tbSAqLzsgfTsKKwkJQkMyNjUyMTYxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdB
cmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovOyB9
OworCQlCQzI2NTIxNzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUyMTMxMTgyNjA4
MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLzsgfTsKKwkJQkMyNjUyMTgxMTgyNjA4
MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxNDExODI2MDgxMDAyNDNF
MTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNwcCAqLzsgfTsKKwkJQkMyNjUyMTkx
MTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUyMTUxMTgyNjA4MTAw
MjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oICovOyB9OwogCQlCQzJFNkU4
NzExNDE5NzE1MDBBNjNCMUUgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3NzExNDE5NzBDMDBBNjNCMUUgLyogUnVuTG9v
cC5jcHAgKi87IH07CiAJCUJDMkU2RTg4MTE0MTk3MTUwMEE2M0IxRSAvKiBSdW5Mb29wLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3ODExNDE5
NzBDMDBBNjNCMUUgLyogUnVuTG9vcC5oICovOyB9OwogCQlCQzJFNkU4QzExNDE5NzE1MDBBNjNC
MUUgLyogV29ya0l0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMkU2RTdDMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrSXRlbS5oICovOyB9OwpAQCAt
MTI2LDggKzEzMSw2IEBACiAJCUJDOUU5NUQ0MTE0NDlCMDMwMDg3MEU3MSAvKiBVcGRhdGVDaHVu
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlF
OTVEMjExNDQ5QjAzMDA4NzBFNzEgLyogVXBkYXRlQ2h1bmsuY3BwICovOyB9OwogCQlCQzlFOTY5
QTExNDU3RURFMDA4NzBFNzEgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RTk2OTkxMTQ1N0VE
RTAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCAqLzsgfTsKIAkJQkM5
RTk2OUMxMTQ1N0YzRjAwODcwRTcxIC8qIERyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlFOTY5QjExNDU3RjNG
MDA4NzBFNzEgLyogRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCAqLzsgfTsKLQkJQkM5RTk3MDIx
MTQ1QTk1NjAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RTk3MDAxMTQ1QTk1NjAw
ODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oICovOyB9OwotCQlCQzlFOTcw
MzExNDVBOTU2MDA4NzBFNzEgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RTk3MDExMTQ1QTk1
NjAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5tbSAqLzsgfTsKIAkJQkNC
NjM0NzgxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJL
aXQyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlC
Q0I5RTI0MzExMjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOUUyNDExMTIwREFDQTAwQTEzN0UwIC8q
IFdlYkNvbnRleHQuaCAqLzsgfTsKIAkJQkNCOUUyNDQxMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCOUUyNDIxMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovOyB9OwpAQCAtMTQ1
LDggKzE0OCw2IEBACiAJCUJDQzU3MTVDMTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRl
cmZhY2UubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QzU3MTVBMTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubSAqLzsgfTsKIAkJ
QkNDNTcxNjIxMTVBREI0MjAwMUNDQUY5IC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzE2MTExNUFEQjQyMDAxQ0NB
RjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLzsgfTsKIAkJQkNDOTM4RTExMTgwREU0NDAwODVFNUZF
IC8qIFdLQ29udGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQzkzOEUwMTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkND
RjA4NUYxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQ0YwODVEMTEzRjNCODYwMEM2NTBD
NSAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi87IH07Ci0JCUJDQ0YwODYwMTEzRjNCODYwMEM2NTBD
NSAvKiBEcmF3aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNDRjA4NUUxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJv
eHkubW0gKi87IH07CiAJCUJDRDAwNDJEMTEwQzFFMjcwMDNCOEE2NyAvKiBDb3JlU2VydmljZXMu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEMDA0MkMxMTBDMUUyNzAwM0I4QTY3IC8qIENvcmVTZXJ2aWNlcy5mcmFtZXdvcmsgKi87
IH07CiAJCUJDRDAxMzlCMTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwMTM5NzExMEZBNDIwMDAzQjhB
NjcgLyogV0tGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJQkNEMDEzOUMxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMDEzOTgxMTBGQTQyMDAw
M0I4QTY3IC8qIFdLRnJhbWUuY3BwICovOyB9OwpAQCAtMjk3LDYgKzI5OCwxMSBAQAogCQlCQzIw
RUMwNTExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1N0cmluZ0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMEVENjQxMTZGOTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzIwRUQ2NTExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJv
eHlVcGRhdGVDaHVua01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVua01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjY1MjEzMTE4MjYwODEwMDI0
M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
NjUyMTQxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5VXBk
YXRlQ2h1bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzI2NTIxNTExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNkU3NzExNDE5NzBDMDBBNjNCMUUgLyogUnVu
TG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTZFNzgxMTQxOTcwQzAwQTYzQjFF
IC8qIFJ1bkxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNkU3QzExNDE5NzBDMDBBNjNCMUUg
LyogV29ya0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya0l0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNCw4ICszMzAsNiBAQAogCQlCQzlF
OTVEMjExNDQ5QjAzMDA4NzBFNzEgLyogVXBkYXRlQ2h1bmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVXBkYXRlQ2h1bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzlFOTY5OTExNDU3RURFMDA4NzBFNzEgLyogRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUU5
NjlCMTE0NTdGM0YwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzlFOTcwMDExNDVBOTU2MDA4NzBFNzEgLyogRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oOyBwYXRoID0gbWFjL0RyYXdpbmdBcmVh
UHJveHlVcGRhdGVDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzlFOTcw
MTExNDVBOTU2MDA4NzBFNzEgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHJhd2luZ0FyZWFQcm94eVVwZGF0
ZUNodW5rLm1tOyBwYXRoID0gbWFjL0RyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjM0NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdl
YktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Mi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I4NkY0QjExNkFBQUNEMDBDRTIwQjcgLyogV2Vi
S2l0Mi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXQyLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I5RTI0MTExMjBEQUNBMDBB
MTM3RTAgLyogV2ViQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDQsOCArMzQ4LDYg
QEAKIAkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJTeXN0ZW1JbnRlcmZhY2UubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNTcxNjExMTVBREI0MjAwMUNDQUY5IC8q
IE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdElt
cGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzkzOEUwMTE4MERF
NDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29udGV4dFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQkNDRjA4NUQxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhd2luZ0FyZWFQcm94eS5oOyBwYXRoID0gbWFj
L0RyYXdpbmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNDRjA4
NUUxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJveHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmF3aW5nQXJlYVByb3h5Lm1tOyBwYXRoID0gbWFj
L0RyYXdpbmdBcmVhUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDAw
NDJDMTEwQzFFMjcwMDNCOEE2NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBDb3JlU2VydmljZXMuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+
IjsgfTsKIAkJQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU5Miw2ICs1OTQsMTAgQEAKIAkJCQlCQzAzMkRDNDEwRjQzODdDMDA1
OEMxNUEgLyogQVBJICovLAogCQkJCUJDMTExQjE4MTEyRjVGQjQwMDMzN0JBQiAvKiBMYXVuY2hl
ciAqLywKIAkJCQlCQ0NGMDg1QzExM0YzQjc1MDBDNjUwQzUgLyogbWFjICovLAorCQkJCUJDMjY1
MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKKwkJCQlCQzI2
NTIxMzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovLAorCQkJCUJDMjY1
MjE0MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuY3BwICov
LAorCQkJCUJDMjY1MjE1MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRl
Q2h1bmsuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5o
ICovLAogCQkJCUJDNTk3MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLywK
IAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
Ki8sCkBAIC04MTcsMTIgKzgyMyw5IEBACiAJCUJDQ0YwODVDMTEzRjNCNzUwMEM2NTBDNSAvKiBt
YWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDQ0Yw
ODVEMTEzRjNCODYwMEM2NTBDNSAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8sCi0JCQkJQkNDRjA4
NUUxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJveHkubW0gKi8sCi0JCQkJQkM5RTk3
MDAxMTQ1QTk1NjAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oICovLAot
CQkJCUJDOUU5NzAxMTE0NUE5NTYwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bmsubW0gKi8sCisJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJv
eHlVcGRhdGVDaHVua01hYy5tbSAqLywKIAkJCSk7Ci0JCQluYW1lID0gbWFjOworCQkJcGF0aCA9
IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAvKiBFbmQgUEJYR3JvdXAg
c2VjdGlvbiAqLwpAQCAtODc5LDE0ICs4ODIsMTIgQEAKIAkJCQlCQ0VFOThDNzExMzMxNEQ3MDA2
QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk4Q0Qx
MTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFdlYlByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkNDRjA4NUYxMTNGM0I4NjAwQzY1MEM1IC8qIERyYXdpbmdBcmVhUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkU2RTg4MTE0MTk3MTUwMEE2M0IxRSAvKiBSdW5Mb29w
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJFNkU4QzExNDE5NzE1MDBBNjNCMUUgLyogV29ya0l0
ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkU2RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3Jr
UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOUU5NUQzMTE0NDlCMDMwMDg3MEU3MSAvKiBV
cGRhdGVDaHVuay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5RTk2OUExMTQ1N0VERTAwODcwRTcx
IC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OUU5NjlDMTE0NTdGM0YwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQkM5RTk3MDIxMTQ1QTk1NjAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJv
eHlVcGRhdGVDaHVuay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFE
QUYzIC8qIFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0M1NzE1QjExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTkwOSw2ICs5MTAsOCBAQAogCQkJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3
MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M5MzhFMTEx
ODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1RjdCQjUxMTgyMzc2QzAwNTJDMDJDIC8qIERyYXdpbmdBcmVhVXBkYXRlQ2h1bmsuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMjY1MjE3MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzI2NTIxOTExODI2MDgxMDAyNDNFMTIgLyogRHJh
d2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEwNDIsMTEgKzEw
NDUsOSBAQAogCQkJCUJDRUU5OENDMTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkIxMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBh
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8qIFdl
YlBhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQlCQ0NGMDg2MDExM0YzQjg2MDBDNjUwQzUg
LyogRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMkU2RTg3MTE0MTk3
MTUwMEE2M0IxRSAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkU2RThEMTE0
MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5RTk1
RDQxMTQ0OUIwMzAwODcwRTcxIC8qIFVwZGF0ZUNodW5rLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUJDOUU5NzAzMTE0NUE5NTYwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVuTG9v
cE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBX
b3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNTcxNUMxMTVBREFFRjAwMUND
QUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDYyLDYgKzEw
NjMsOSBAQAogCQkJCUJDRjY5RkFBMTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUY3QkI0MTE4MjM3NkMwMDUyQzAyQyAvKiBEcmF3
aW5nQXJlYVVwZGF0ZUNodW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUY3QkI5MTE4MjM3
OTkwMDUyQzAyQyAvKiBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rTWFjLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDMjY1MUY2MTE4MjVFRjgwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRl
Q2h1bmtNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIg
LyogRHJhd2luZ0FyZWFQcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzI2NTIxODExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDU4MTg5KQorKysgV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw2ICs3MDQsMjIgQEAKIAkJCU5h
bWU9IlVJUHJvY2VzcyINCiAJCQk+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcRHJhd2luZ0FyZWFQcm94eS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcRHJhd2luZ0FyZWFQcm94eS5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcRHJhd2lu
Z0FyZWFQcm94eVVwZGF0ZUNodW5rLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcUGFnZUNsaWVudC5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KQEAgLTk5NSwxMSArMTAxMSw3IEBACiAJCQkJTmFtZT0id2luIg0KIAkJCQk+
DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5cRHJhd2lu
Z0FyZWFQcm94eS5jcHAiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxEcmF3aW5nQXJlYVByb3h5LmgiDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5cRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNo
dW5rV2luLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
</data>
<flag name="review"
          id="38109"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>