<?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>127390</bug_id>
          
          <creation_ts>2014-01-21 18:10:00 -0800</creation_ts>
          <short_desc>WebKit2 View Gestures (Swipe): Snapshots should be purgeable</short_desc>
          <delta_ts>2014-01-28 11:31:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970512</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 18:10:00 -0800</bug_when>
    <thetext>In the interests of allowing the operating system to clean up snapshots when the system is under memory pressure, they should be made purgeable. We could even assign purgeability priority outwards from the current back-forward item to help further-away snapshots get thrown away first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970513</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-21 18:10:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/15876775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972868</commentid>
    <comment_count>2</comment_count>
      <attachid>222427</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-28 03:42:22 -0800</bug_when>
    <thetext>Created attachment 222427
patch take 1

Not sure if scanning the b-f list is too expensive. I&apos;m sure there&apos;s a faster way...
Not sure if we actually want to wait, with a white snapshot view, if the image has been purged/evicted; maybe we should just switch immediately in that case.
I would kind of like ViewSnapshotStore to own the purgeability story, but I&apos;m not totally sure how to make that work yet.
Would love it if someone had an easy way to make CGImage purgeable, but I don&apos;t see anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973005</commentid>
    <comment_count>3</comment_count>
      <attachid>222467</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-28 11:03:41 -0800</bug_when>
    <thetext>Created attachment 222467
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973007</commentid>
    <comment_count>4</comment_count>
      <attachid>222467</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-28 11:12:09 -0800</bug_when>
    <thetext>Comment on attachment 222467
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=222467&amp;action=review

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.mm:51
&gt; +static const uint32_t WebKitIOSurfacePurgeableNonVolatile = 0;
&gt; +static const uint32_t WebKitIOSurfacePurgeableVolatile = 1;
&gt; +static const uint32_t WebKitIOSurfacePurgeableEmpty = 2;

I think you should use a real enum here with real IOSurface names.

&gt; Source/WebKit2/UIProcess/mac/ViewSnapshotStore.mm:46
&gt; +static const uint32_t WebKitIOSurfacePurgeableVolatile = 1;

Real enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973015</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-28 11:29:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973018</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-28 11:31:22 -0800</bug_when>
    <thetext>*** Bug 127389 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222427</attachid>
            <date>2014-01-28 03:42:22 -0800</date>
            <delta_ts>2014-01-28 11:03:41 -0800</delta_ts>
            <desc>patch take 1</desc>
            <filename>purge.diff</filename>
            <type>text/plain</type>
            <size>13548</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMGIxNTY5Li5mNzFhYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDEtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IFNuYXBzaG90cyBzaG91bGQg
YmUgcHVyZ2VhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjczOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1ODc2Nzc1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc25hcHNob3RzIGJl
IHB1cmdlYWJsZSwgYW5kIGltcGxlbWVudCBhIHN0cmFpZ2h0Zm9yd2FyZAorICAgICAgICAoaWYg
cGVyaGFwcyBleHBlbnNpdmUsIGZvciBub3cpIGNhY2hlIGV2aWN0aW9uIHN0cmF0ZWd5IHRvIGxp
bWl0IHRoZQorICAgICAgICBudW1iZXIgb2Ygc25hcHNob3RzIHRvIDIwLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICBXaGVu
IGJlZ2lubmluZyBhIGdlc3R1cmUsIGF0dGVtcHQgdG8gbWFrZSB0aGUgcmV0cmlldmVkIHNuYXBz
aG90CisgICAgICAgIG5vbi12b2xhdGlsZS4gSWYgaXQgd2FzIHB1cmdlZCB3aGlsZSB2b2xhdGls
ZSwgd2Ugd29uJ3QgdXNlIGl0LCBidXQgaWYgaXQKKyAgICAgICAgaXMgc3RpbGwgdmFsaWQsIHdl
J2xsIGdvIGFoZWFkIGFuZCB1c2UgaXQgYXMgdGhlIHN3aXBlIGxheWVyJ3MgY29udGVudHMuCisK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBz
aG90KToKKyAgICAgICAgV2hlbiByZW1vdmluZyB0aGUgc3dpcGUgc25hcHNob3QsIG1ha2UgaXQg
dm9sYXRpbGUgb25jZSBhZ2Fpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBz
aG90U3RvcmUuaDoKKyAgICAgICAgU3RvcmUgYSBjcmVhdGlvbiB0aW1lIGFsb25nIHdpdGggdGhl
IGltYWdlLgorICAgICAgICBTdG9yZSBhbmQgcmV0dXJuIElPU3VyZmFjZXMgaW5zdGVhZCBvZiBD
R0ltYWdlcy4KKyAgICAgICAgU3RvcmUgc25hcHNob3RzIGFuZCByZW5kZXIgdHJlZSBzaXplcyBz
ZXBhcmF0ZWx5LCBzbyB0aGF0IHdlIGNhbgorICAgICAgICB0aHJvdyBhd2F5IHNuYXBzaG90cyBi
dXQga2VlcCB0aGUgcmVuZGVyIHRyZWUgc2l6ZXMgaW5kZWZpbml0ZWx5LgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmll
d1NuYXBzaG90U3RvcmU6OnBydW5lU25hcHNob3RzKToKKyAgICAgICAgQ2FwIHRoZSBudW1iZXIg
b2Ygc25hcHNob3RzIHdlJ2xsIGV2ZXIgaGF2ZSBsaXZlIGF0IDIwLgorICAgICAgICBFbmZvcmNl
IHRoaXMgY2FwIGJ5IGZpcnN0IHRyeWluZyB0byByZW1vdmUgc25hcHNob3RzIGZhcnRoZXN0Cisg
ICAgICAgIGZyb20gdGhlIGN1cnJlbnQgYmFjay1mb3J3YXJkIGxpc3QncyBjdXJyZW50IGl0ZW0s
IGZhbGxpbmcgYmFjaworICAgICAgICB0byByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgY3Jl
YXRlZCBzbmFwc2hvdCBpZiB0aGVyZSBhcmUgbm8KKyAgICAgICAgc25hcHNob3RzIG93bmVkIGJ5
IHRoZSBjdXJyZW50IGJhY2stZm9yd2FyZCBsaXN0LgorCisgICAgICAgIChXZWJLaXQ6OmNyZWF0
ZUlPU3VyZmFjZUZyb21JbWFnZSk6CisgICAgICAgIEJ1aWxkIGFuIElPU3VyZmFjZSBmcm9tIHRo
ZSBDR0ltYWdlIHNuYXBzaG90IHdlIHRvb2ssIGZvciBlYXNlIG9mCisgICAgICAgIHVzZSBvZiBp
dHMgcHVyZ2VhYmlsaXR5IEFQSS4KKworICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9y
ZTo6cmVjb3JkU25hcHNob3QpOgorICAgICAgICBCYWlsIGZyb20gdGFraW5nIHRoZSBzbmFwc2hv
dCBpZiB0aGUgaW1hZ2UgaXMgZW1wdHk7IHRoaXMgY2FuIGhhcHBlbgorICAgICAgICBpZiB0aGUg
dmlldyBpcyBvdXQgb2YgdGhlIHdpbmRvdyB3aGVuIHRoZSBzbmFwc2hvdCBpcyB0YWtlbi4KKwor
ICAgICAgICBNYXJrIHNuYXBzaG90cyBhcyBwdXJnZWFibGUgYXMgc29vbiBhcyB0aGV5IGdvIGlu
dG8gdGhlIGNhY2hlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzbmFw
c2hvdEFuZFJlbmRlclRyZWVTaXplKToKKyAgICAgICAgUmV0dXJuIHRoZSB0YXJnZXQgcmVuZGVy
IHRyZWUgc2l6ZSBldmVuIGlmIHRoZXJlIGlzIG5vIHNuYXBzaG90IGltYWdlLgorICAgICAgICBU
YWtlIGNhcmUgbm90IHRvIGxvb2sgdXAgYW4gZW1wdHkgVVVJRC4KKwogMjAxNC0wMS0yNyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHkgcmVsZXZh
bnQgY29kZSBmcm9tIHRoZSBpT1MgdmVyc2lvbiBvZiBXS1ZpZXcgdG8gV0tXZWJWaWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVy
Lm1tCmluZGV4IDU0NDEwYjEuLjFiNjQ3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCkBAIC00MSw2ICs0MSwxNSBA
QAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVDQUxheWVyRXh0cmFzLmg+CiAKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIF9f
aGFzX2luY2x1ZGUoPElPU3VyZmFjZS9JT1N1cmZhY2VQcml2YXRlLmg+KQorI2ltcG9ydCA8SU9T
dXJmYWNlL0lPU3VyZmFjZVByaXZhdGUuaD4KKyNlbmRpZgorCitJT1JldHVybiBJT1N1cmZhY2VT
ZXRQdXJnZWFibGUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgdWludDMyX3QgbmV3U3RhdGUsIHVpbnQz
Ml90ICpvbGRTdGF0ZSk7CitzdGF0aWMgY29uc3QgdWludDMyX3QgV2ViS2l0SU9TdXJmYWNlUHVy
Z2VhYmxlTm9uVm9sYXRpbGUgPSAwOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFdlYktpdElPU3Vy
ZmFjZVB1cmdlYWJsZVZvbGF0aWxlID0gMTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBXZWJLaXRJ
T1N1cmZhY2VQdXJnZWFibGVFbXB0eSA9IDI7CisKICNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUp
ICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4pCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CiAjZWxzZQpAQCAtMjc5LDggKzI4
OCwxNiBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbQogICAgIG1fc3dpcGVTbmFwc2hvdExheWVy
ID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9zd2lwZVNuYXBzaG90
TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9y
V2hpdGUpXTsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzbmFwc2hvdCA9IFZpZXdTbmFw
c2hvdFN0b3JlOjpzaGFyZWQoKS5zbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKHRhcmdldEl0ZW0p
LmZpcnN0OwotICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRDb250ZW50czooaWQpc25hcHNo
b3QuZ2V0KCldOworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHNuYXBzaG90ID0gVmlld1Nu
YXBzaG90U3RvcmU6OnNoYXJlZCgpLnNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUodGFyZ2V0SXRl
bSkuZmlyc3Q7CisKKyAgICBpZiAoc25hcHNob3QpIHsKKyAgICAgICAgdWludDMyX3QgcHVyZ2Vh
YmlsaXR5U3RhdGU7CisgICAgICAgIElPU3VyZmFjZVNldFB1cmdlYWJsZShzbmFwc2hvdC5nZXQo
KSwgV2ViS2l0SU9TdXJmYWNlUHVyZ2VhYmxlTm9uVm9sYXRpbGUsICZwdXJnZWFiaWxpdHlTdGF0
ZSk7CisKKyAgICAgICAgaWYgKHB1cmdlYWJpbGl0eVN0YXRlICE9IFdlYktpdElPU3VyZmFjZVB1
cmdlYWJsZUVtcHR5KQorICAgICAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRl
bnRzOihpZClzbmFwc2hvdC5nZXQoKV07CisgICAgfQorCiAgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07CiAgICAgW21fc3dpcGVT
bmFwc2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVG
YWN0b3IoKV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEZyYW1lOnJvb3RMYXllci5m
cmFtZV07CkBAIC0zODMsNiArNDAwLDEwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpy
ZW1vdmVTd2lwZVNuYXBzaG90KCkKICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3
R2VzdHVyZVR5cGU6OlN3aXBlKQogICAgICAgICByZXR1cm47CiAKKyAgICBJT1N1cmZhY2VSZWYg
c25hcHNob3RTdXJmYWNlID0gKElPU3VyZmFjZVJlZilbbV9zd2lwZVNuYXBzaG90TGF5ZXIgY29u
dGVudHNdOworICAgIGlmIChzbmFwc2hvdFN1cmZhY2UpCisgICAgICAgIElPU3VyZmFjZVNldFB1
cmdlYWJsZShzbmFwc2hvdFN1cmZhY2UsIFdlYktpdElPU3VyZmFjZVB1cmdlYWJsZVZvbGF0aWxl
LCBudWxscHRyKTsKKwogICAgIFttX3dlYlBhZ2VQcm94eS5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKCkgc2V0UG9zaXRpb246Q0dQb2ludFplcm9dOwogICAgIFttX3N3aXBlU25hcHNo
b3RMYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgbV9zd2lwZVNuYXBzaG90TGF5ZXIg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
U25hcHNob3RTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNo
b3RTdG9yZS5oCmluZGV4IGZkYjQxMDAuLjMwNGVjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgVmlld1NuYXBzaG90U3RvcmVfaAogI2RlZmluZSBWaWV3U25hcHNob3RTdG9yZV9oCiAK
KyNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00NSwxMyAr
NDYsMjMgQEAgcHVibGljOgogICAgIHN0YXRpYyBWaWV3U25hcHNob3RTdG9yZSYgc2hhcmVkKCk7
CiAKICAgICB2b2lkIHJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYpOwotICAgIHN0ZDo6cGFp
cjxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIHVpbnQ2NF90PiBzbmFwc2hvdEFuZFJlbmRlclRyZWVT
aXplKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBzdGQ6OnBhaXI8UmV0YWluUHRyPElP
U3VyZmFjZVJlZj4sIHVpbnQ2NF90PiBzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qKTsKIAogICAgIHZvaWQgZGlzYWJsZVNuYXBzaG90dGluZygpIHsgbV9l
bmFibGVkID0gZmFsc2U7IH0KICAgICB2b2lkIGVuYWJsZVNuYXBzaG90dGluZygpIHsgbV9lbmFi
bGVkID0gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8
UmV0YWluUHRyPENHSW1hZ2VSZWY+LCB1aW50NjRfdD4+IG1fc25hcHNob3RNYXA7CisgICAgdm9p
ZCBwcnVuZVNuYXBzaG90cyhXZWJQYWdlUHJveHkmKTsKKworICAgIHN0cnVjdCBTbmFwc2hvdCB7
CisgICAgICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2U7CisgICAgICAgIFJldGFp
blB0cjxDR0NvbnRleHRSZWY+IHN1cmZhY2VDb250ZXh0OworCisgICAgICAgIHN0ZDo6Y2hyb25v
OjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgY3JlYXRpb25UaW1lOworICAgIH07CisKKyAgICBI
YXNoTWFwPFN0cmluZywgU25hcHNob3Q+IG1fc25hcHNob3RNYXA7CisgICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ2NF90PiBtX3JlbmRlclRyZWVTaXplTWFwOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNo
b3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3Rv
cmUubW0KaW5kZXggYjExODUwNi4uOWI5MjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCkBAIC0yOSwxMCArMjksMjYgQEAKICNp
bXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW1wb3J0IDxJT1N1cmZhY2Uv
SU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VVSUQuaD4KIAorI2lmIGRlZmluZWQoX19o
YXNfaW5jbHVkZSkgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1By
aXZhdGUuaD4pCisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5oPgor
I2VuZGlmCisKK0NHQ29udGV4dFJlZiBDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUoSU9TdXJmYWNl
UmVmIHN1cmZhY2UsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGJpdHNQZXJD
b21wb25lbnQsIHNpemVfdCBiaXRzUGVyUGl4ZWwsIENHQ29sb3JTcGFjZVJlZiBzcGFjZSwgQ0dC
aXRtYXBJbmZvIGJpdG1hcEluZm8pOworCisjaWYgZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBf
X2hhc19pbmNsdWRlKDxJT1N1cmZhY2UvSU9TdXJmYWNlUHJpdmF0ZS5oPikKKyNpbXBvcnQgPElP
U3VyZmFjZS9JT1N1cmZhY2VQcml2YXRlLmg+CisjZW5kaWYKKworSU9SZXR1cm4gSU9TdXJmYWNl
U2V0UHVyZ2VhYmxlKElPU3VyZmFjZVJlZiBidWZmZXIsIHVpbnQzMl90IG5ld1N0YXRlLCB1aW50
MzJfdCAqb2xkU3RhdGUpOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFdlYktpdElPU3VyZmFjZVB1
cmdlYWJsZVZvbGF0aWxlID0gMTsKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRp
YyBjb25zdCBpbnQgbWF4aW11bVNuYXBzaG90Q291bnQgPSAyMDsKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIFZpZXdTbmFwc2hvdFN0b3JlOjpWaWV3U25hcHNob3RTdG9yZSgpCkBAIC01MCw5ICs2
Niw4NiBAQCBWaWV3U25hcHNob3RTdG9yZSYgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpCiAg
ICAgcmV0dXJuIHN0b3JlOwogfQogCit2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpwcnVuZVNuYXBz
aG90cyhXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKK3sKKyAgICBpZiAobV9zbmFwc2hvdE1h
cC5zaXplKCkgPD0gbWF4aW11bVNuYXBzaG90Q291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IHVpbnQzMl90IGN1cnJlbnRJbmRleCA9IHdlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5j
dXJyZW50SW5kZXgoKTsKKyAgICB1aW50MzJfdCBtYXhEaXN0YW5jZSA9IDA7CisgICAgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogbW9zdERpc3RhbnRTbmFwc2hvdHRlZEl0ZW0gPSBudWxscHRyOwor
ICAgIGF1dG8gYmFja0ZvcndhcmRFbnRyaWVzID0gd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlz
dCgpLmVudHJpZXMoKTsKKworICAgIC8vIEZpcnN0LCB0cnkgdG8gZXZpY3QgdGhlIHNuYXBzaG90
IGZvciB0aGUgcGFnZSBmYXJ0aGVzdCBmcm9tIHRoZSBjdXJyZW50IGJhY2stZm9yd2FyZCBpdGVt
LgorICAgIGZvciAodWludDMyX3QgaSA9IDAsIGVudHJ5Q291bnQgPSB3ZWJQYWdlUHJveHkuYmFj
a0ZvcndhcmRMaXN0KCkuZW50cmllcygpLnNpemUoKTsgaSA8IGVudHJ5Q291bnQ7IGkrKykgewor
ICAgICAgICB1aW50MzJfdCBkaXN0YW5jZSA9IHN0ZDo6bWF4KGN1cnJlbnRJbmRleCwgaSkgLSBz
dGQ6Om1pbihjdXJyZW50SW5kZXgsIGkpOworCisgICAgICAgIGlmIChpID09IGN1cnJlbnRJbmRl
eCB8fCBkaXN0YW5jZSA8IG1heERpc3RhbmNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IGJhY2tGb3J3YXJkRW50cmllc1tp
XS5nZXQoKTsKKyAgICAgICAgU3RyaW5nIHNuYXBzaG90VVVJRCA9IGl0ZW0tPnNuYXBzaG90VVVJ
RCgpOworICAgICAgICBpZiAoIXNuYXBzaG90VVVJRC5pc0VtcHR5KCkgJiYgbV9zbmFwc2hvdE1h
cC5jb250YWlucyhzbmFwc2hvdFVVSUQpKSB7CisgICAgICAgICAgICBtb3N0RGlzdGFudFNuYXBz
aG90dGVkSXRlbSA9IGl0ZW07CisgICAgICAgICAgICBtYXhEaXN0YW5jZSA9IGRpc3RhbmNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1vc3REaXN0YW50U25hcHNob3R0ZWRJdGVtKSB7
CisgICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG1vc3REaXN0YW50U25hcHNob3R0ZWRJdGVt
LT5zbmFwc2hvdFVVSUQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiB3
ZSBjYW4ndCBmaW5kIGEgbW9zdCBkaXN0YW50IGl0ZW0gKHBlcmhhcHMgYmVjYXVzZSBhbGwgdGhl
IHNuYXBzaG90cyBhcmUgZnJvbQorICAgIC8vIGEgZGlmZmVyZW50IFdlYlBhZ2VQcm94eSdzIGJh
Y2stZm9yd2FyZCBsaXN0KSwgd2Ugc2hvdWxkIGV2aWN0IHRoZSB0aGUgb2xkZXN0IGl0ZW0uCisg
ICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBvbGRlc3RTbmFwc2hvdFRp
bWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50OjptYXgoKTsKKyAgICBT
dHJpbmcgb2xkZXN0U25hcHNob3RVVUlEOworCisgICAgZm9yIChjb25zdCBhdXRvJiB1dWlkQW5k
U25hcHNob3QgOiBtX3NuYXBzaG90TWFwKSB7CisgICAgICAgIGlmICh1dWlkQW5kU25hcHNob3Qu
dmFsdWUuY3JlYXRpb25UaW1lIDwgb2xkZXN0U25hcHNob3RUaW1lKSB7CisgICAgICAgICAgICBv
bGRlc3RTbmFwc2hvdFRpbWUgPSB1dWlkQW5kU25hcHNob3QudmFsdWUuY3JlYXRpb25UaW1lOwor
ICAgICAgICAgICAgb2xkZXN0U25hcHNob3RVVUlEID0gdXVpZEFuZFNuYXBzaG90LmtleTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9sZGVzdFNuYXBzaG90
VVVJRCk7Cit9CisKK3N0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPElPU3VyZmFjZVJlZj4sIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+PiBjcmVhdGVJT1N1cmZhY2VGcm9tSW1hZ2UoQ0dJbWFnZVJl
ZiBpbWFnZSkKK3sKKyAgICB1bnNpZ25lZCBwaXhlbEZvcm1hdCA9ICdCR1JBJzsKKyAgICBzaXpl
X3QgYml0c1BlckNvbXBvbmVudCA9IDg7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IDMyOwor
ICAgIHNpemVfdCBieXRlc1BlckVsZW1lbnQgPSA0OworICAgIHNpemVfdCB3aWR0aCA9IENHSW1h
Z2VHZXRXaWR0aChpbWFnZSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IElPU3VyZmFjZUFsaWduUHJvcGVydHko
a0lPU3VyZmFjZUJ5dGVzUGVyUm93LCB3aWR0aCAqIGJ5dGVzUGVyRWxlbWVudCk7CisgICAgQVNT
RVJUKGJ5dGVzUGVyUm93KTsKKworICAgIHNpemVfdCBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGln
blByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIGhlaWdodCAqIGJ5dGVzUGVyUm93KTsKKyAg
ICBBU1NFUlQoYWxsb2NTaXplKTsKKworICAgIE5TRGljdGlvbmFyeSAqcHJvcGVydGllcyA9IEB7
CisgICAgICAgIChpZClrSU9TdXJmYWNlV2lkdGg6IEAod2lkdGgpLAorICAgICAgICAoaWQpa0lP
U3VyZmFjZUhlaWdodDogQChoZWlnaHQpLAorICAgICAgICAoaWQpa0lPU3VyZmFjZVBpeGVsRm9y
bWF0OiBAKHBpeGVsRm9ybWF0KSwKKyAgICAgICAgKGlkKWtJT1N1cmZhY2VCeXRlc1BlckVsZW1l
bnQ6IEAoYnl0ZXNQZXJFbGVtZW50KSwKKyAgICAgICAgKGlkKWtJT1N1cmZhY2VCeXRlc1BlclJv
dzogQChieXRlc1BlclJvdyksCisgICAgICAgIChpZClrSU9TdXJmYWNlQWxsb2NTaXplOiBAKGFs
bG9jU2l6ZSkKKyAgICB9OworCisgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gc3VyZmFjZSA9
IGFkb3B0Q0YoSU9TdXJmYWNlQ3JlYXRlKChDRkRpY3Rpb25hcnlSZWYpcHJvcGVydGllcykpOwor
ICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRG
aXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBzdXJmYWNlQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKHN1
cmZhY2UuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhl
bCwgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpLCBiaXRtYXBJbmZvKSk7CisgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKHN1cmZhY2VDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRo
LCBoZWlnaHQpLCBpbWFnZSk7CisgICAgQ0dDb250ZXh0Rmx1c2goc3VyZmFjZUNvbnRleHQuZ2V0
KCkpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN1cmZhY2UsIHN1cmZhY2VDb250ZXh0
KTsKK30KKwogdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCiB7Ci0gICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGl0ZW0gPSB3ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0KCkuY3VycmVudEl0ZW0oKTsKKyAg
ICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJk
TGlzdCgpLmN1cnJlbnRJdGVtKCk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwpAQCAtNjAsMjQgKzE1Myw0OSBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRT
bmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzbmFwc2hvdCA9IHdlYlBh
Z2VQcm94eS50YWtlVmlld1NuYXBzaG90KCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNu
YXBzaG90SW1hZ2UgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdCgpOworICAgIGlmICgh
c25hcHNob3RJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJ1bmVTbmFwc2hvdHMod2Vi
UGFnZVByb3h5KTsKIAogICAgIFN0cmluZyBvbGRTbmFwc2hvdFVVSUQgPSBpdGVtLT5zbmFwc2hv
dFVVSUQoKTsKLSAgICBpZiAoIW9sZFNuYXBzaG90VVVJRC5pc0VtcHR5KCkpCisgICAgaWYgKCFv
bGRTbmFwc2hvdFVVSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc25hcHNob3RNYXAucmVtb3Zl
KG9sZFNuYXBzaG90VVVJRCk7CisgICAgICAgIG1fcmVuZGVyVHJlZVNpemVNYXAucmVtb3ZlKG9s
ZFNuYXBzaG90VVVJRCk7CisgICAgfQogCiAgICAgaXRlbS0+c2V0U25hcHNob3RVVUlEKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0gICAgbV9zbmFwc2hvdE1hcC5hZGQoaXRlbS0+c25h
cHNob3RVVUlEKCksIHN0ZDo6bWFrZV9wYWlyKHNuYXBzaG90LCB3ZWJQYWdlUHJveHkucmVuZGVy
VHJlZVNpemUoKSkpOworCisgICAgYXV0byBzdXJmYWNlQW5kQ29udGV4dCA9IGNyZWF0ZUlPU3Vy
ZmFjZUZyb21JbWFnZShzbmFwc2hvdEltYWdlLmdldCgpKTsKKworICAgIFNuYXBzaG90IHNuYXBz
aG90OworICAgIHNuYXBzaG90LnN1cmZhY2UgPSBzdXJmYWNlQW5kQ29udGV4dC5maXJzdDsKKyAg
ICBzbmFwc2hvdC5zdXJmYWNlQ29udGV4dCA9IHN1cmZhY2VBbmRDb250ZXh0LnNlY29uZDsKKyAg
ICBzbmFwc2hvdC5jcmVhdGlvblRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3co
KTsKKworICAgIElPU3VyZmFjZVNldFB1cmdlYWJsZShzbmFwc2hvdC5zdXJmYWNlLmdldCgpLCBX
ZWJLaXRJT1N1cmZhY2VQdXJnZWFibGVWb2xhdGlsZSwgbnVsbHB0cik7CisKKyAgICBtX3NuYXBz
aG90TWFwLmFkZChpdGVtLT5zbmFwc2hvdFVVSUQoKSwgc25hcHNob3QpOworICAgIG1fcmVuZGVy
VHJlZVNpemVNYXAuYWRkKGl0ZW0tPnNuYXBzaG90VVVJRCgpLCB3ZWJQYWdlUHJveHkucmVuZGVy
VHJlZVNpemUoKSk7CiB9CiAKLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIHVpbnQ2
NF90PiBWaWV3U25hcHNob3RTdG9yZTo6c25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBpdGVtKQorc3RkOjpwYWlyPFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
LCB1aW50NjRfdD4gVmlld1NuYXBzaG90U3RvcmU6OnNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKIHsKLSAgICBjb25zdCBhdXRvJiBzbmFwc2hv
dEFuZFJlbmRlclRyZWVTaXplID0gbV9zbmFwc2hvdE1hcC5maW5kKGl0ZW0tPnNuYXBzaG90VVVJ
RCgpKTsKKyAgICBpZiAoaXRlbS0+c25hcHNob3RVVUlEKCkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobnVsbHB0ciwgMCk7CiAKLSAgICBpZiAoc25hcHNob3RBbmRS
ZW5kZXJUcmVlU2l6ZSA9PSBtX3NuYXBzaG90TWFwLmVuZCgpKQorICAgIGNvbnN0IGF1dG8mIHJl
bmRlclRyZWVTaXplID0gbV9yZW5kZXJUcmVlU2l6ZU1hcC5maW5kKGl0ZW0tPnNuYXBzaG90VVVJ
RCgpKTsKKyAgICBpZiAocmVuZGVyVHJlZVNpemUgPT0gbV9yZW5kZXJUcmVlU2l6ZU1hcC5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG51bGxwdHIsIDApOwogCi0gICAgcmV0
dXJuIHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlOworICAgIGNvbnN0IGF1dG8mIHNu
YXBzaG90ID0gbV9zbmFwc2hvdE1hcC5maW5kKGl0ZW0tPnNuYXBzaG90VVVJRCgpKTsKKyAgICBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBzdXJmYWNlOworCisgICAgaWYgKHNuYXBzaG90ICE9IG1f
c25hcHNob3RNYXAuZW5kKCkpCisgICAgICAgIHN1cmZhY2UgPSBzbmFwc2hvdC0+dmFsdWUuc3Vy
ZmFjZTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdXJmYWNlLCByZW5kZXJUcmVlU2l6
ZS0+dmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222467</attachid>
            <date>2014-01-28 11:03:41 -0800</date>
            <delta_ts>2014-01-28 11:12:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>purge.diff</filename>
            <type>text/plain</type>
            <size>15095</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDcwNzNkNy4uZWRmMGY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMyw3ICs5MDMsNiBAQAogCQlBNTAzRkExOTE4
OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87
IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCAyNDFlZGEzLi45OGM0NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTQtMDEt
MjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
S2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IFNuYXBzaG90cyBzaG91bGQgYmUgcHVyZ2VhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczOTAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1ODc2Nzc1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc25hcHNob3RzIGJlIHB1cmdlYWJsZSwg
YW5kIGltcGxlbWVudCBhIHN0cmFpZ2h0Zm9yd2FyZAorICAgICAgICAoaWYgcGVyaGFwcyBleHBl
bnNpdmUsIGZvciBub3cpIGNhY2hlIGV2aWN0aW9uIHN0cmF0ZWd5IHRvIGxpbWl0IHRoZQorICAg
ICAgICBudW1iZXIgb2Ygc25hcHNob3RzIHRvIDIwLgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICBXaGVuIGJlZ2lubmluZyBh
IGdlc3R1cmUsIGF0dGVtcHQgdG8gbWFrZSB0aGUgcmV0cmlldmVkIHNuYXBzaG90CisgICAgICAg
IG5vbi12b2xhdGlsZS4gSWYgaXQgd2FzIHB1cmdlZCB3aGlsZSB2b2xhdGlsZSwgd2Ugd29uJ3Qg
dXNlIGl0LCBidXQgaWYgaXQKKyAgICAgICAgaXMgc3RpbGwgdmFsaWQsIHdlJ2xsIGdvIGFoZWFk
IGFuZCB1c2UgaXQgYXMgdGhlIHN3aXBlIGxheWVyJ3MgY29udGVudHMuCisKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KToKKyAgICAg
ICAgV2hlbiByZW1vdmluZyB0aGUgc3dpcGUgc25hcHNob3QsIG1ha2UgaXQgdm9sYXRpbGUgb25j
ZSBhZ2Fpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaDoK
KyAgICAgICAgU3RvcmUgYSBjcmVhdGlvbiB0aW1lIGFsb25nIHdpdGggdGhlIGltYWdlLgorICAg
ICAgICBTdG9yZSBhbmQgcmV0dXJuIElPU3VyZmFjZXMgaW5zdGVhZCBvZiBDR0ltYWdlcy4KKyAg
ICAgICAgU3RvcmUgc25hcHNob3RzIGFuZCByZW5kZXIgdHJlZSBzaXplcyBzZXBhcmF0ZWx5LCBz
byB0aGF0IHdlIGNhbgorICAgICAgICB0aHJvdyBhd2F5IHNuYXBzaG90cyBidXQga2VlcCB0aGUg
cmVuZGVyIHRyZWUgc2l6ZXMgaW5kZWZpbml0ZWx5LgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9WaWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3Rv
cmU6OnBydW5lU25hcHNob3RzKToKKyAgICAgICAgQ2FwIHRoZSBudW1iZXIgb2Ygc25hcHNob3Rz
IHdlJ2xsIGV2ZXIgaGF2ZSBsaXZlIGF0IDIwLgorICAgICAgICBFbmZvcmNlIHRoaXMgY2FwIGJ5
IGZpcnN0IHRyeWluZyB0byByZW1vdmUgc25hcHNob3RzIGZhcnRoZXN0CisgICAgICAgIGZyb20g
dGhlIGN1cnJlbnQgYmFjay1mb3J3YXJkIGxpc3QncyBjdXJyZW50IGl0ZW0sIGZhbGxpbmcgYmFj
aworICAgICAgICB0byByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgY3JlYXRlZCBzbmFwc2hv
dCBpZiB0aGVyZSBhcmUgbm8KKyAgICAgICAgc25hcHNob3RzIG93bmVkIGJ5IHRoZSBjdXJyZW50
IGJhY2stZm9yd2FyZCBsaXN0LgorCisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUlPU3VyZmFjZUZy
b21JbWFnZSk6CisgICAgICAgIEJ1aWxkIGFuIElPU3VyZmFjZSBmcm9tIHRoZSBDR0ltYWdlIHNu
YXBzaG90IHdlIHRvb2ssIGZvciBlYXNlIG9mCisgICAgICAgIHVzZSBvZiBpdHMgcHVyZ2VhYmls
aXR5IEFQSS4KKworICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25h
cHNob3QpOgorICAgICAgICBCYWlsIGZyb20gdGFraW5nIHRoZSBzbmFwc2hvdCBpZiB0aGUgaW1h
Z2UgaXMgZW1wdHk7IHRoaXMgY2FuIGhhcHBlbgorICAgICAgICBpZiB0aGUgdmlldyBpcyBvdXQg
b2YgdGhlIHdpbmRvdyB3aGVuIHRoZSBzbmFwc2hvdCBpcyB0YWtlbi4KKworICAgICAgICBNYXJr
IHNuYXBzaG90cyBhcyBwdXJnZWFibGUgYXMgc29vbiBhcyB0aGV5IGdvIGludG8gdGhlIGNhY2hl
LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzbmFwc2hvdEFuZFJlbmRl
clRyZWVTaXplKToKKyAgICAgICAgUmV0dXJuIHRoZSB0YXJnZXQgcmVuZGVyIHRyZWUgc2l6ZSBl
dmVuIGlmIHRoZXJlIGlzIG5vIHNuYXBzaG90IGltYWdlLgorICAgICAgICBUYWtlIGNhcmUgbm90
IHRvIGxvb2sgdXAgYW4gZW1wdHkgVVVJRC4KKwogMjAxNC0wMS0yNyAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgU1FMIGRhdGFiYXNlIGNyZWF0
aW9uIGFuZCBtb2RpZmljYXRpb24gdGltZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW0KaW5kZXggNTQ0MTBiMS4uODNlY2Vj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubW0KQEAgLTQxLDYgKzQxLDE1IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KIAor
I2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgX19oYXNfaW5jbHVkZSg8SU9TdXJmYWNlL0lP
U3VyZmFjZVByaXZhdGUuaD4pCisjaW1wb3J0IDxJT1N1cmZhY2UvSU9TdXJmYWNlUHJpdmF0ZS5o
PgorI2VuZGlmCisKK2V4dGVybiAiQyIgSU9SZXR1cm4gSU9TdXJmYWNlU2V0UHVyZ2VhYmxlKElP
U3VyZmFjZVJlZiBidWZmZXIsIHVpbnQzMl90IG5ld1N0YXRlLCB1aW50MzJfdCAqb2xkU3RhdGUp
Oworc3RhdGljIGNvbnN0IHVpbnQzMl90IFdlYktpdElPU3VyZmFjZVB1cmdlYWJsZU5vblZvbGF0
aWxlID0gMDsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBXZWJLaXRJT1N1cmZhY2VQdXJnZWFibGVW
b2xhdGlsZSA9IDE7CitzdGF0aWMgY29uc3QgdWludDMyX3QgV2ViS2l0SU9TdXJmYWNlUHVyZ2Vh
YmxlRW1wdHkgPSAyOworCiAjaWYgZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBfX2hhc19pbmNs
dWRlKDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+KQogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlUHJpdmF0ZS5oPgogI2Vsc2UKQEAgLTI3OSw4ICsyODgsMTYgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHRhcmdldEl0ZW0KICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFkb3B0TlMoW1tD
QUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEJhY2tn
cm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRlKV07CiAKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc25hcHNob3QgPSBWaWV3U25hcHNob3RTdG9yZTo6c2hh
cmVkKCkuc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSh0YXJnZXRJdGVtKS5maXJzdDsKLSAgICBb
bV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Q29udGVudHM6KGlkKXNuYXBzaG90LmdldCgpXTsKKyAg
ICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdFN0b3JlOjpz
aGFyZWQoKS5zbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKHRhcmdldEl0ZW0pLmZpcnN0OworCisg
ICAgaWYgKHNuYXBzaG90KSB7CisgICAgICAgIHVpbnQzMl90IHB1cmdlYWJpbGl0eVN0YXRlOwor
ICAgICAgICBJT1N1cmZhY2VTZXRQdXJnZWFibGUoc25hcHNob3QuZ2V0KCksIFdlYktpdElPU3Vy
ZmFjZVB1cmdlYWJsZU5vblZvbGF0aWxlLCAmcHVyZ2VhYmlsaXR5U3RhdGUpOworCisgICAgICAg
IGlmIChwdXJnZWFiaWxpdHlTdGF0ZSAhPSBXZWJLaXRJT1N1cmZhY2VQdXJnZWFibGVFbXB0eSkK
KyAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRDb250ZW50czooaWQpc25hcHNo
b3QuZ2V0KCldOworICAgIH0KKwogICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRDb250ZW50
c0dyYXZpdHk6a0NBR3Jhdml0eVRvcExlZnRdOwogICAgIFttX3N3aXBlU25hcHNob3RMYXllciBz
ZXRDb250ZW50c1NjYWxlOm1fd2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCldOwogICAg
IFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGcmFtZTpyb290TGF5ZXIuZnJhbWVdOwpAQCAtMzgz
LDYgKzQwMCwxMCBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFw
c2hvdCgpCiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpT
d2lwZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSU9TdXJmYWNlUmVmIHNuYXBzaG90U3VyZmFj
ZSA9IChJT1N1cmZhY2VSZWYpW21fc3dpcGVTbmFwc2hvdExheWVyIGNvbnRlbnRzXTsKKyAgICBp
ZiAoc25hcHNob3RTdXJmYWNlKQorICAgICAgICBJT1N1cmZhY2VTZXRQdXJnZWFibGUoc25hcHNo
b3RTdXJmYWNlLCBXZWJLaXRJT1N1cmZhY2VQdXJnZWFibGVWb2xhdGlsZSwgbnVsbHB0cik7CisK
ICAgICBbbV93ZWJQYWdlUHJveHkuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIHNl
dFBvc2l0aW9uOkNHUG9pbnRaZXJvXTsKICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOwogICAgIG1fc3dpcGVTbmFwc2hvdExheWVyID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaAppbmRl
eCBmZGI0MTAwLi4zMDRlY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3U25hcHNob3RTdG9yZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFZpZXdTbmFw
c2hvdFN0b3JlX2gKICNkZWZpbmUgVmlld1NuYXBzaG90U3RvcmVfaAogCisjaW5jbHVkZSA8Y2hy
b25vPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDUsMTMgKzQ2LDIzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgVmlld1NuYXBzaG90U3RvcmUmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBy
ZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmKTsKLSAgICBzdGQ6OnBhaXI8UmV0YWluUHRyPENH
SW1hZ2VSZWY+LCB1aW50NjRfdD4gc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKik7CisgICAgc3RkOjpwYWlyPFJldGFpblB0cjxJT1N1cmZhY2VSZWY+LCB1
aW50NjRfdD4gc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Kik7CiAKICAgICB2b2lkIGRpc2FibGVTbmFwc2hvdHRpbmcoKSB7IG1fZW5hYmxlZCA9IGZhbHNl
OyB9CiAgICAgdm9pZCBlbmFibGVTbmFwc2hvdHRpbmcoKSB7IG1fZW5hYmxlZCA9IHRydWU7IH0K
IAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFJldGFpblB0cjxDR0lt
YWdlUmVmPiwgdWludDY0X3Q+PiBtX3NuYXBzaG90TWFwOworICAgIHZvaWQgcHJ1bmVTbmFwc2hv
dHMoV2ViUGFnZVByb3h5Jik7CisKKyAgICBzdHJ1Y3QgU25hcHNob3QgeworICAgICAgICBSZXRh
aW5QdHI8SU9TdXJmYWNlUmVmPiBzdXJmYWNlOworICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBzdXJmYWNlQ29udGV4dDsKKworICAgICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2Nr
Ojp0aW1lX3BvaW50IGNyZWF0aW9uVGltZTsKKyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcs
IFNuYXBzaG90PiBtX3NuYXBzaG90TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4g
bV9yZW5kZXJUcmVlU2l6ZU1hcDsKIAogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCmluZGV4IGIx
MTg1MDYuLjlkYWU2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMjksMTAgKzI5LDI2IEBACiAjaW1wb3J0ICJXZWJCYWNr
Rm9yd2FyZExpc3QuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2ltcG9ydCA8SU9TdXJmYWNlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9VVUlELmg+CiAKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYm
IF9faGFzX2luY2x1ZGUoPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+KQorI2lt
cG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNlbmRpZgorCitleHRl
cm4gIkMiIENHQ29udGV4dFJlZiBDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGJpdHNQZXJDb21w
b25lbnQsIHNpemVfdCBiaXRzUGVyUGl4ZWwsIENHQ29sb3JTcGFjZVJlZiBzcGFjZSwgQ0dCaXRt
YXBJbmZvIGJpdG1hcEluZm8pOworCisjaWYgZGVmaW5lZChfX2hhc19pbmNsdWRlKSAmJiBfX2hh
c19pbmNsdWRlKDxJT1N1cmZhY2UvSU9TdXJmYWNlUHJpdmF0ZS5oPikKKyNpbXBvcnQgPElPU3Vy
ZmFjZS9JT1N1cmZhY2VQcml2YXRlLmg+CisjZW5kaWYKKworZXh0ZXJuICJDIiBJT1JldHVybiBJ
T1N1cmZhY2VTZXRQdXJnZWFibGUoSU9TdXJmYWNlUmVmIGJ1ZmZlciwgdWludDMyX3QgbmV3U3Rh
dGUsIHVpbnQzMl90ICpvbGRTdGF0ZSk7CitzdGF0aWMgY29uc3QgdWludDMyX3QgV2ViS2l0SU9T
dXJmYWNlUHVyZ2VhYmxlVm9sYXRpbGUgPSAxOworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAorc3RhdGljIGNvbnN0IGludCBtYXhpbXVtU25hcHNob3RDb3VudCA9IDIwOworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogVmlld1NuYXBzaG90U3RvcmU6OlZpZXdTbmFwc2hvdFN0b3JlKCkKQEAg
LTUwLDkgKzY2LDg2IEBAIFZpZXdTbmFwc2hvdFN0b3JlJiBWaWV3U25hcHNob3RTdG9yZTo6c2hh
cmVkKCkKICAgICByZXR1cm4gc3RvcmU7CiB9CiAKK3ZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnBy
dW5lU25hcHNob3RzKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQoreworICAgIGlmIChtX3Nu
YXBzaG90TWFwLnNpemUoKSA8PSBtYXhpbXVtU25hcHNob3RDb3VudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdWludDMyX3QgY3VycmVudEluZGV4ID0gd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJk
TGlzdCgpLmN1cnJlbnRJbmRleCgpOworICAgIHVpbnQzMl90IG1heERpc3RhbmNlID0gMDsKKyAg
ICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtb3N0RGlzdGFudFNuYXBzaG90dGVkSXRlbSA9IG51
bGxwdHI7CisgICAgYXV0byBiYWNrRm9yd2FyZEVudHJpZXMgPSB3ZWJQYWdlUHJveHkuYmFja0Zv
cndhcmRMaXN0KCkuZW50cmllcygpOworCisgICAgLy8gRmlyc3QsIHRyeSB0byBldmljdCB0aGUg
c25hcHNob3QgZm9yIHRoZSBwYWdlIGZhcnRoZXN0IGZyb20gdGhlIGN1cnJlbnQgYmFjay1mb3J3
YXJkIGl0ZW0uCisgICAgZm9yICh1aW50MzJfdCBpID0gMCwgZW50cnlDb3VudCA9IHdlYlBhZ2VQ
cm94eS5iYWNrRm9yd2FyZExpc3QoKS5lbnRyaWVzKCkuc2l6ZSgpOyBpIDwgZW50cnlDb3VudDsg
aSsrKSB7CisgICAgICAgIHVpbnQzMl90IGRpc3RhbmNlID0gc3RkOjptYXgoY3VycmVudEluZGV4
LCBpKSAtIHN0ZDo6bWluKGN1cnJlbnRJbmRleCwgaSk7CisKKyAgICAgICAgaWYgKGkgPT0gY3Vy
cmVudEluZGV4IHx8IGRpc3RhbmNlIDwgbWF4RGlzdGFuY2UpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gYmFja0ZvcndhcmRF
bnRyaWVzW2ldLmdldCgpOworICAgICAgICBTdHJpbmcgc25hcHNob3RVVUlEID0gaXRlbS0+c25h
cHNob3RVVUlEKCk7CisgICAgICAgIGlmICghc25hcHNob3RVVUlELmlzRW1wdHkoKSAmJiBtX3Nu
YXBzaG90TWFwLmNvbnRhaW5zKHNuYXBzaG90VVVJRCkpIHsKKyAgICAgICAgICAgIG1vc3REaXN0
YW50U25hcHNob3R0ZWRJdGVtID0gaXRlbTsKKyAgICAgICAgICAgIG1heERpc3RhbmNlID0gZGlz
dGFuY2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobW9zdERpc3RhbnRTbmFwc2hvdHRl
ZEl0ZW0pIHsKKyAgICAgICAgbV9zbmFwc2hvdE1hcC5yZW1vdmUobW9zdERpc3RhbnRTbmFwc2hv
dHRlZEl0ZW0tPnNuYXBzaG90VVVJRCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIElmIHdlIGNhbid0IGZpbmQgYSBtb3N0IGRpc3RhbnQgaXRlbSAocGVyaGFwcyBiZWNhdXNl
IGFsbCB0aGUgc25hcHNob3RzIGFyZSBmcm9tCisgICAgLy8gYSBkaWZmZXJlbnQgV2ViUGFnZVBy
b3h5J3MgYmFjay1mb3J3YXJkIGxpc3QpLCB3ZSBzaG91bGQgZXZpY3QgdGhlIHRoZSBvbGRlc3Qg
aXRlbS4KKyAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG9sZGVzdFNu
YXBzaG90VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQ6Om1heCgp
OworICAgIFN0cmluZyBvbGRlc3RTbmFwc2hvdFVVSUQ7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHV1aWRBbmRTbmFwc2hvdCA6IG1fc25hcHNob3RNYXApIHsKKyAgICAgICAgaWYgKHV1aWRBbmRT
bmFwc2hvdC52YWx1ZS5jcmVhdGlvblRpbWUgPCBvbGRlc3RTbmFwc2hvdFRpbWUpIHsKKyAgICAg
ICAgICAgIG9sZGVzdFNuYXBzaG90VGltZSA9IHV1aWRBbmRTbmFwc2hvdC52YWx1ZS5jcmVhdGlv
blRpbWU7CisgICAgICAgICAgICBvbGRlc3RTbmFwc2hvdFVVSUQgPSB1dWlkQW5kU25hcHNob3Qu
a2V5OworICAgICAgICB9CisgICAgfQorCisgICAgbV9zbmFwc2hvdE1hcC5yZW1vdmUob2xkZXN0
U25hcHNob3RVVUlEKTsKK30KKworc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPiwgUmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNyZWF0ZUlPU3VyZmFjZUZyb21JbWFnZShD
R0ltYWdlUmVmIGltYWdlKQoreworICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOwor
ICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gODsKKyAgICBzaXplX3QgYml0c1BlclBpeGVs
ID0gMzI7CisgICAgc2l6ZV90IGJ5dGVzUGVyRWxlbWVudCA9IDQ7CisgICAgc2l6ZV90IHdpZHRo
ID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKKyAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gSU9TdXJmYWNlQWxpZ25Q
cm9wZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIHdpZHRoICogYnl0ZXNQZXJFbGVtZW50KTsK
KyAgICBBU1NFUlQoYnl0ZXNQZXJSb3cpOworCisgICAgc2l6ZV90IGFsbG9jU2l6ZSA9IElPU3Vy
ZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUFsbG9jU2l6ZSwgaGVpZ2h0ICogYnl0ZXNQZXJS
b3cpOworICAgIEFTU0VSVChhbGxvY1NpemUpOworCisgICAgTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0
aWVzID0gQHsKKyAgICAgICAgKGlkKWtJT1N1cmZhY2VXaWR0aDogQCh3aWR0aCksCisgICAgICAg
IChpZClrSU9TdXJmYWNlSGVpZ2h0OiBAKGhlaWdodCksCisgICAgICAgIChpZClrSU9TdXJmYWNl
UGl4ZWxGb3JtYXQ6IEAocGl4ZWxGb3JtYXQpLAorICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVz
UGVyRWxlbWVudDogQChieXRlc1BlckVsZW1lbnQpLAorICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5
dGVzUGVyUm93OiBAKGJ5dGVzUGVyUm93KSwKKyAgICAgICAgKGlkKWtJT1N1cmZhY2VBbGxvY1Np
emU6IEAoYWxsb2NTaXplKQorICAgIH07CisKKyAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBz
dXJmYWNlID0gYWRvcHRDRihJT1N1cmZhY2VDcmVhdGUoKENGRGljdGlvbmFyeVJlZilwcm9wZXJ0
aWVzKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OworICAgIFJldGFpblB0cjxD
R0NvbnRleHRSZWY+IHN1cmZhY2VDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRD
cmVhdGUoc3VyZmFjZS5nZXQoKSwgd2lkdGgsIGhlaWdodCwgYml0c1BlckNvbXBvbmVudCwgYml0
c1BlclBpeGVsLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSksIGJpdG1hcEluZm8pKTsKKyAg
ICBDR0NvbnRleHREcmF3SW1hZ2Uoc3VyZmFjZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgd2lkdGgsIGhlaWdodCksIGltYWdlKTsKKyAgICBDR0NvbnRleHRGbHVzaChzdXJmYWNlQ29u
dGV4dC5nZXQoKSk7CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3VyZmFjZSwgc3VyZmFj
ZUNvbnRleHQpOworfQorCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChX
ZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKLSAgICBSZWZQdHI8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbT4gaXRlbSA9IHdlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5jdXJyZW50SXRl
bSgpOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSB3ZWJQYWdlUHJveHkuYmFj
a0ZvcndhcmRMaXN0KCkuY3VycmVudEl0ZW0oKTsKIAogICAgIGlmICghbV9lbmFibGVkKQogICAg
ICAgICByZXR1cm47CkBAIC02MCwyNCArMTUzLDQ5IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6
OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgIGlmICghaXRl
bSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNuYXBzaG90
ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gc25hcHNob3RJbWFnZSA9IHdlYlBhZ2VQcm94eS50YWtlVmlld1NuYXBzaG90KCk7Cisg
ICAgaWYgKCFzbmFwc2hvdEltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwcnVuZVNuYXBz
aG90cyh3ZWJQYWdlUHJveHkpOwogCiAgICAgU3RyaW5nIG9sZFNuYXBzaG90VVVJRCA9IGl0ZW0t
PnNuYXBzaG90VVVJRCgpOwotICAgIGlmICghb2xkU25hcHNob3RVVUlELmlzRW1wdHkoKSkKKyAg
ICBpZiAoIW9sZFNuYXBzaG90VVVJRC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zbmFwc2hvdE1h
cC5yZW1vdmUob2xkU25hcHNob3RVVUlEKTsKKyAgICAgICAgbV9yZW5kZXJUcmVlU2l6ZU1hcC5y
ZW1vdmUob2xkU25hcHNob3RVVUlEKTsKKyAgICB9CiAKICAgICBpdGVtLT5zZXRTbmFwc2hvdFVV
SUQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLSAgICBtX3NuYXBzaG90TWFwLmFkZChp
dGVtLT5zbmFwc2hvdFVVSUQoKSwgc3RkOjptYWtlX3BhaXIoc25hcHNob3QsIHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKSk7CisKKyAgICBhdXRvIHN1cmZhY2VBbmRDb250ZXh0ID0gY3Jl
YXRlSU9TdXJmYWNlRnJvbUltYWdlKHNuYXBzaG90SW1hZ2UuZ2V0KCkpOworCisgICAgU25hcHNo
b3Qgc25hcHNob3Q7CisgICAgc25hcHNob3Quc3VyZmFjZSA9IHN1cmZhY2VBbmRDb250ZXh0LmZp
cnN0OworICAgIHNuYXBzaG90LnN1cmZhY2VDb250ZXh0ID0gc3VyZmFjZUFuZENvbnRleHQuc2Vj
b25kOworICAgIHNuYXBzaG90LmNyZWF0aW9uVGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xv
Y2s6Om5vdygpOworCisgICAgSU9TdXJmYWNlU2V0UHVyZ2VhYmxlKHNuYXBzaG90LnN1cmZhY2Uu
Z2V0KCksIFdlYktpdElPU3VyZmFjZVB1cmdlYWJsZVZvbGF0aWxlLCBudWxscHRyKTsKKworICAg
IG1fc25hcHNob3RNYXAuYWRkKGl0ZW0tPnNuYXBzaG90VVVJRCgpLCBzbmFwc2hvdCk7CisgICAg
bV9yZW5kZXJUcmVlU2l6ZU1hcC5hZGQoaXRlbS0+c25hcHNob3RVVUlEKCksIHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKIH0KIAotc3RkOjpwYWlyPFJldGFpblB0cjxDR0ltYWdlUmVm
PiwgdWludDY0X3Q+IFZpZXdTbmFwc2hvdFN0b3JlOjpzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXpl
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCitzdGQ6OnBhaXI8UmV0YWluUHRyPElPU3Vy
ZmFjZVJlZj4sIHVpbnQ2NF90PiBWaWV3U25hcHNob3RTdG9yZTo6c25hcHNob3RBbmRSZW5kZXJU
cmVlU2l6ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogewotICAgIGNvbnN0IGF1dG8m
IHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUgPSBtX3NuYXBzaG90TWFwLmZpbmQoaXRlbS0+c25h
cHNob3RVVUlEKCkpOworICAgIGlmIChpdGVtLT5zbmFwc2hvdFVVSUQoKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihudWxscHRyLCAwKTsKIAotICAgIGlmIChzbmFw
c2hvdEFuZFJlbmRlclRyZWVTaXplID09IG1fc25hcHNob3RNYXAuZW5kKCkpCisgICAgY29uc3Qg
YXV0byYgcmVuZGVyVHJlZVNpemUgPSBtX3JlbmRlclRyZWVTaXplTWFwLmZpbmQoaXRlbS0+c25h
cHNob3RVVUlEKCkpOworICAgIGlmIChyZW5kZXJUcmVlU2l6ZSA9PSBtX3JlbmRlclRyZWVTaXpl
TWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobnVsbHB0ciwgMCk7CiAK
LSAgICByZXR1cm4gc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZS0+dmFsdWU7CisgICAgY29uc3Qg
YXV0byYgc25hcHNob3QgPSBtX3NuYXBzaG90TWFwLmZpbmQoaXRlbS0+c25hcHNob3RVVUlEKCkp
OworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2U7CisKKyAgICBpZiAoc25hcHNo
b3QgIT0gbV9zbmFwc2hvdE1hcC5lbmQoKSkKKyAgICAgICAgc3VyZmFjZSA9IHNuYXBzaG90LT52
YWx1ZS5zdXJmYWNlOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN1cmZhY2UsIHJlbmRl
clRyZWVTaXplLT52YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="246459"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>