{"ok":true,"site":{"host":"lostloop-memory.imre9012.workers.dev","url":"https://lostloop-memory.imre9012.workers.dev/","type":"live","desc":"A private, local-first recovery companion where ChatGPT stages the next move and only the person confirms physical reality.","tools":[{"name":"lostloop_get_snapshot","kind":"answer","impl":"imperative","description":"Inspect the current local LostLoop workspace: memory count, active search, One-Step Companion, learned-route count, personal patterns, action receipts, and Ready Journeys. Use this before choosing a follow-up action.","title":"Get LostLoop snapshot","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_live_handoff","kind":"answer","impl":"imperative","description":"Read one atomic LostLoop handoff before staging or continuing any reviewed workflow. Returns the exact revision, pending review, active Ready and Search state, plus the same sanitized LostLoop Companion and Home Canvas step visible to the human, without changing local data.","title":"Get live handoff","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_home_memory_map","kind":"answer","impl":"imperative","description":"Read the same bounded Home Canvas visible to the human, together with provenance-labelled map evidence, the exact ranked next check, one scoped trail, and a separately labelled schematic layout projection. Room geometry, doors, and configured pins are presentation only: never search evidence, a measured floor plan, or live tracking.","title":"Get Home Memory Map","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"Optional item name used to focus the evidence map.","minLength":1,"maxLength":80},"searchId":{"type":"string","description":"Optional exact search id used to focus the reported trail.","minLength":1,"maxLength":160}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_stage_plan_shift","kind":"act","impl":"imperative","description":"Stage one bounded, revision-locked Plan Shift for a saved Ready Journey. The draft changes no routine or physical fact until the human reviews and applies the exact diff in LostLoop.","title":"Stage Plan Shift","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Unique idempotency key for this exact Plan Shift draft.","minLength":1,"maxLength":80},"baseRevision":{"type":"integer","minimum":1,"description":"Exact state revision from lostloop_get_live_handoff."},"routineId":{"type":"string","description":"The saved Ready Journey id to adapt.","minLength":1,"maxLength":160},"contextSummary":{"type":"string","description":"Short explanation of the changed situation.","minLength":1,"maxLength":240},"additions":{"type":"array","minItems":0,"maxItems":12,"items":{"type":"object","properties":{"label":{"type":"string","description":"Item to add to the reviewed journey.","minLength":1,"maxLength":120},"reason":{"type":"string","description":"Why this item is useful in the changed situation.","minLength":1,"maxLength":240}},"required":["label","reason"],"additionalProperties":false}},"removals":{"type":"array","minItems":0,"maxItems":12,"items":{"type":"object","properties":{"label":{"type":"string","description":"Exact existing item label to remove from the reviewed journey.","minLength":1,"maxLength":120},"reason":{"type":"string","description":"Why this item is not needed in the changed situation.","minLength":1,"maxLength":240}},"required":["label","reason"],"additionalProperties":false}}},"required":["requestId","baseRevision","routineId","contextSummary"],"additionalProperties":false,"anyOf":[{"required":["additions"],"properties":{"additions":{"type":"array","minItems":1}}},{"required":["removals"],"properties":{"removals":{"type":"array","minItems":1}}}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_foresight_brief","kind":"answer","impl":"imperative","description":"Read a compact, deterministic Foresight brief from reviewed local memories, chosen homes, learned routes, Ready history, and approved Moments. Returns exact evidence and no prediction or physical-status claim.","title":"Get Foresight brief","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"momentId":{"type":"string","description":"Optional approved Foresight Moment id.","minLength":1,"maxLength":160},"routineId":{"type":"string","description":"Optional saved Ready Journey id.","minLength":1,"maxLength":160},"itemNames":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","description":"An optional item name to include in the brief.","minLength":1,"maxLength":80}}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_memory_twin","kind":"answer","impl":"imperative","description":"Read the bounded Personal Memory Twin projection derived from human-confirmed locations, chosen homes, approved routes, and reviewed Moments. The Twin is not separately stored and is never live tracking.","title":"Get Personal Memory Twin","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":40,"description":"Maximum nodes and links to return."}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_risk_radar","kind":"answer","impl":"imperative","description":"Read explainable check-order cues for one approved Foresight Moment. Returns exact reasons and evidence labels without probability, severity, sensing, or a claim that an item is present or absent.","title":"Get risk radar","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"momentId":{"type":"string","description":"The approved Foresight Moment id.","minLength":1,"maxLength":160}},"required":["momentId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_stage_foresight_moment","kind":"act","impl":"imperative","description":"Stage an inert Foresight Moment draft for visible human review. This cannot approve or start a Moment, create a Ready Run, record a finding, or confirm physical possession.","title":"Stage Foresight Moment","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Unique idempotency key for this exact proposal.","minLength":1,"maxLength":80},"baseRevision":{"type":"integer","minimum":1,"description":"Exact global revision from the latest Foresight brief."},"title":{"type":"string","description":"Short name for the situation.","minLength":1,"maxLength":80},"contextSummary":{"type":"string","description":"Concise situation summary for human review.","minLength":1,"maxLength":240},"items":{"type":"array","minItems":1,"maxItems":12,"items":{"type":"object","properties":{"label":{"type":"string","description":"Short item label.","minLength":1,"maxLength":80},"why":{"type":"string","description":"Why the item belongs in this situation; this is proposal text, not physical evidence.","minLength":1,"maxLength":240},"required":{"type":"boolean","description":"Whether the proposal marks the item as normally needed."}},"required":["label","why"],"additionalProperties":false}}},"required":["requestId","baseRevision","title","items"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_remember_location","kind":"act","impl":"imperative","description":"Save a human-confirmed item location to the private local Memory Vault. Only call after the user states or confirms where the item is. Optionally make it the item's usual home.","title":"Remember confirmed location","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"The everyday name of the object, such as Keys.","minLength":1,"maxLength":80},"location":{"type":"string","description":"The human-confirmed place where the item is.","minLength":1,"maxLength":120},"context":{"type":"string","description":"Optional short context that may help a later search.","minLength":1,"maxLength":240},"makeHome":{"type":"boolean","description":"Whether this location should become the item's usual home."},"operationId":{"type":"string","description":"Required idempotency key for this exact confirmed finding.","minLength":1,"maxLength":80}},"required":["itemName","location","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_list_memories","kind":"answer","impl":"imperative","description":"List the user's locally saved object memories, including confirmed locations, chosen homes, repeated patterns, and human-approved learned routes. Does not search the web or infer unconfirmed facts.","title":"List saved memories","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"Optional exact item name to filter the list.","minLength":1,"maxLength":80}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_start_search","kind":"act","impl":"imperative","description":"Start a calm, step-by-step search for one missing object. Reuses an already-active search for the same object instead of creating a duplicate.","title":"Start item search","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"The object the user wants to find.","minLength":1,"maxLength":80},"context":{"type":"string","description":"Optional situation clue, such as 'came home in the rain'.","minLength":1,"maxLength":240},"lastSeen":{"type":"string","description":"Optional last place the user remembers seeing the object.","minLength":1,"maxLength":120}},"required":["itemName"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_propose_search_mission","kind":"act","impl":"imperative","description":"Stage a ChatGPT-drafted search mission for human review. This does not start a search, record a check, or change Memory. The LostLoop interface will show an editable approval gate.","title":"Propose search mission","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Unique idempotency key for this mission draft.","minLength":1,"maxLength":120},"baseRevision":{"type":"integer","minimum":1,"description":"Exact global revision from lostloop_get_live_handoff."},"itemName":{"type":"string","description":"The object the user wants to find.","minLength":1,"maxLength":80},"lastSeen":{"type":"string","description":"Optional last place the user remembers.","minLength":1,"maxLength":120},"contextSummary":{"type":"string","description":"Optional concise situation summary based on the conversation.","minLength":1,"maxLength":360},"suggestions":{"type":"array","minItems":1,"maxItems":6,"description":"One to six proposed places. The human may edit or remove any of them.","items":{"type":"object","properties":{"location":{"type":"string","description":"A proposed search location.","minLength":1,"maxLength":120},"reason":{"type":"string","description":"Why this place may be useful, without claiming certainty.","minLength":1,"maxLength":240},"basis":{"type":"string","enum":["confirmed_memory","human_reported_route","checked_history","general_search_pattern"],"description":"Exact source category for this suggestion."},"sourceRefs":{"type":"array","minItems":1,"maxItems":6,"uniqueItems":true,"items":{"type":"string","description":"Exact current source ref from the Home Memory Map catalog.","minLength":1,"maxLength":200}}},"required":["location","reason","basis","sourceRefs"],"additionalProperties":false}}},"required":["requestId","baseRevision","itemName","suggestions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_search_plan","kind":"answer","impl":"imperative","description":"Get the current phased Search Coach plan, approved Memory Route, and explainable order. Returns priorities and reasons using only local confirmed or source-labelled evidence plus general search patterns.","title":"Get search plan","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_stage_rewind_route","kind":"act","impl":"imperative","description":"Stage a structured Rewind route for human review. Include only transitions the human actually reported; label any connective suggestion as inferred. Staging is inert and cannot approve or save route memory.","title":"Stage Rewind route","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Unique idempotency key for this exact Rewind route draft.","minLength":1,"maxLength":80},"searchId":{"type":"string","description":"The exact active search id.","minLength":1,"maxLength":120},"baseRevision":{"type":"integer","minimum":1,"description":"The exact current search revision."},"title":{"type":"string","description":"A short route title for human review.","minLength":1,"maxLength":120},"steps":{"type":"array","minItems":2,"maxItems":8,"description":"Two to eight ordered transitions. Use confirmed for a human-reported step and inferred for a connective suggestion.","items":{"type":"object","properties":{"label":{"type":"string","description":"The reported place, container, or activity.","minLength":1,"maxLength":120},"kind":{"type":"string","enum":["place","container","activity"]},"evidence":{"type":"string","enum":["confirmed","inferred"],"description":"confirmed means human-reported, never sensor-verified."},"note":{"type":"string","description":"Optional short explanation visible during review.","minLength":1,"maxLength":240}},"required":["label","kind","evidence"],"additionalProperties":false}}},"required":["requestId","searchId","baseRevision","title","steps"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_record_check","kind":"act","impl":"imperative","description":"Record what the human reports after checking one place. 'found' creates a proposed learning receipt but never silently adds the location to long-term memory.","title":"Record reported check","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"location":{"type":"string","description":"The place the user checked.","minLength":1,"maxLength":120},"searchId":{"type":"string","description":"The exact active search id returned by the current search plan.","minLength":1,"maxLength":120},"baseRevision":{"type":"integer","minimum":1,"description":"The exact current search revision."},"outcome":{"type":"string","description":"How complete the check was, or whether the object was found.","enum":["thorough_absent","glance_absent","inaccessible","unsure","found"]},"note":{"type":"string","description":"Optional short note from the human.","minLength":1,"maxLength":240},"operationId":{"type":"string","description":"Required unique idempotency key for this exact check.","minLength":1,"maxLength":120}},"required":["searchId","baseRevision","location","outcome","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_stage_search_update","kind":"act","impl":"imperative","description":"Turn one or more human-reported search observations into an editable review packet. Staging is inert: it does not alter the live search until the human approves the packet in LostLoop.","title":"Stage search update","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"packetId":{"type":"string","description":"Unique idempotency key for this exact packet.","minLength":1,"maxLength":120},"searchId":{"type":"string","description":"The active search id returned by the snapshot or search plan.","minLength":1,"maxLength":120},"baseRevision":{"type":"integer","minimum":1,"description":"The exact current search revision."},"observations":{"type":"array","minItems":1,"maxItems":8,"description":"Structured observations from the human's report. If found, it must be the final observation.","items":{"type":"object","properties":{"location":{"type":"string","description":"The place the human reports checking.","minLength":1,"maxLength":120},"outcome":{"type":"string","enum":["thorough_absent","glance_absent","inaccessible","unsure","found"]},"note":{"type":"string","description":"Optional short human-reported note.","minLength":1,"maxLength":240}},"required":["location","outcome"],"additionalProperties":false}}},"required":["packetId","searchId","baseRevision","observations"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_confirm_learning","kind":"act","impl":"imperative","description":"Resolve an ordered learning receipt after a human-confirmed find. The optional gate defaults to location; route learning becomes available only after location learning is remembered or set as home.","title":"Confirm learning choice","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"gate":{"type":"string","description":"The learning gate to resolve. Omit for backward-compatible location learning.","enum":["location","route"]},"decision":{"type":"string","description":"The user's explicit choice. Route learning accepts remember or skip; location learning also accepts make_home.","enum":["remember","make_home","skip"]},"searchId":{"type":"string","description":"The exact search id whose learning receipt the human is resolving.","minLength":1,"maxLength":120},"baseRevision":{"type":"integer","minimum":1,"description":"The exact current search revision."},"operationId":{"type":"string","description":"Required idempotency key for this exact learning choice.","minLength":1,"maxLength":80}},"required":["decision","searchId","baseRevision","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_ready_check","kind":"act","impl":"imperative","description":"Get a departure checklist of important everyday items. It is a user-controlled reminder list, not a claim that LostLoop can sense whether an item is physically present.","title":"Get Ready Check","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_prevention_plan","kind":"act","impl":"imperative","description":"Inspect reusable Ready Journeys, the current persistent Ready Run, and Home Reset suggestions. Physical possession remains human-confirmed.","title":"Get prevention plan","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_get_prevention_insights","kind":"answer","impl":"imperative","description":"Read evidence-bounded prevention insights from human-learned Rewind routes and repeated Ready Journey recovery reports. Returns exact counts, never probabilities, and makes no changes.","title":"Get prevention insights","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"Optional exact item name for filtering learned route patterns.","minLength":1,"maxLength":80}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_update_ready_check","kind":"act","impl":"imperative","description":"Replace the items in the Everyday essentials Ready Check. Call only when the user asks to customize the checklist.","title":"Update Everyday essentials","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"items":{"type":"array","description":"One to twenty item labels to check before leaving.","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","description":"A short item label.","minLength":1,"maxLength":60}}},"required":["items"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_save_ready_plan","kind":"act","impl":"imperative","description":"Create a reusable Ready Journey or replace the contents of one named plan. Call only when the user asks to create or edit a checklist.","title":"Save Ready Journey","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"planId":{"type":"string","description":"Optional existing plan id. Omit to create a new plan.","minLength":1,"maxLength":120},"name":{"type":"string","description":"Ready Journey name, such as School morning.","minLength":1,"maxLength":80},"operationId":{"type":"string","description":"Required idempotency key for this exact plan save.","minLength":1,"maxLength":80},"items":{"type":"array","minItems":1,"maxItems":20,"uniqueItems":true,"items":{"type":"string","description":"A short item label.","minLength":1,"maxLength":60}}},"required":["name","items","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_start_ready_run","kind":"act","impl":"imperative","description":"Start a persistent Ready Run from a saved Ready Journey. This initializes every item as unchecked and makes no claim about physical possession.","title":"Start Ready Run","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"routineId":{"type":"string","description":"The saved Ready Journey id.","minLength":1,"maxLength":120},"operationId":{"type":"string","description":"Required idempotency key for this exact run start.","minLength":1,"maxLength":80}},"required":["routineId","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_record_ready_item","kind":"act","impl":"imperative","description":"Record the user's explicit status for one item in the active Ready Run. Never infer with_me from a search result; the human must say they physically have it.","title":"Record Ready item status","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"runId":{"type":"string","description":"The active Ready Run id.","minLength":1,"maxLength":120},"itemId":{"type":"string","description":"The Ready Run item id.","minLength":1,"maxLength":120},"status":{"type":"string","enum":["with_me","missing","not_needed"],"description":"The user's explicit status."},"operationId":{"type":"string","description":"Unique idempotency key for this exact status update.","minLength":1,"maxLength":120}},"required":["runId","itemId","status","operationId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_delete_memory","kind":"transact","impl":"imperative","description":"Permanently delete one named item, its related searches, pending reviews, and the unscoped local activity trail. This is destructive and should only be called after the user explicitly asks to remove that exact memory.","title":"Delete item memory","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"itemName":{"type":"string","description":"The exact object name to delete.","minLength":1,"maxLength":80}},"required":["itemName"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_stage_place_phrase","kind":"act","impl":"imperative","description":"Stage one private personal phrase for an exact visible Home Canvas room or landmark. This teaches navigation vocabulary only: it changes no memory fact, search evidence, check, finding, or physical status. The phrase remains a temporary visible draft until the human approves it in My Home Language.","title":"Stage personal place phrase","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Unique id for this exact phrase proposal and safe retry.","minLength":1,"maxLength":80},"baseRevision":{"type":"integer","minimum":1,"description":"Exact global revision from lostloop_get_live_handoff."},"phrase":{"type":"string","description":"The person's private phrase for the visible place.","minLength":1,"maxLength":60},"targetId":{"type":"string","description":"Exact area or landmark id copied from the current Home Canvas.","minLength":1,"maxLength":160}},"required":["requestId","baseRevision","phrase","targetId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lostloop_export_data","kind":"act","impl":"imperative","description":"Create a local JSON download containing the user's LostLoop data. The private contents stay in the browser; the tool result reports only the filename and byte count.","title":"Export LostLoop data","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/lostloop-memory.imre9012.workers.dev.svg","apiSurface":"spec","category":"Media & Personal","toolCount":27}}