1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[98784],{83239:function(e,t){var n,i;(i=n||(n={}))[i.Member=0]="Member",i[i.Admin=1]="Admin",i[i.Owner=2]="Owner",t.Z=n},98784:function(e,t,n){n.d(t,{V2:function(){return A},fC:function(){return U},PT:function(){return y},Oc:function(){return M},Dv:function(){return k},Tv:function(){return P},Kw:function(){return C},E2:function(){return q},Eh:function(){return N},po:function(){return u},fQ:function(){return j},Oi:function(){return x},h_:function(){return H},rl:function(){return L},dc:function(){return F},iU:function(){return p},PD:function(){return m},q4:function(){return _},Yx:function(){return E},JZ:function(){return s},Yi:function(){return h},pm:function(){return g},uQ:function(){return v},C7:function(){return f},eZ:function(){return d},FV:function(){return S},zT:function(){return O},Cy:function(){return D},wD:function(){return b},SP:function(){return w}});var i,a,r=n(26249),o=n(83239);async function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=[],i=0;for(;;){let{data:a,error:r}=await e(i,i+t-1);if(r)throw r;if(a&&n.push(...a),!a||a.length<t)break;i+=t}return n}(i=a||(a={})).CHECK_IN="Check-in",i.PICKED_UP_TO_PHARM_ACCT="Picked-Up to Pharm-Acct",i.PHARM_ACCT_COMPLETE="Pharm - Acct Complete",i.PHARM_IWRS_SUBMITTED="Pharm - IWRS Submitted",i.DRUG_DISPENSED="Drug Dispensed",i.SUBJECT_DOSED="Subject Dosed";let d=async(e,t,n,i)=>{let{data:a,error:o}=await e.from(r.B7).update({[n]:i}).eq("id",t);if(o)throw o;return a},u=async(e,t)=>{let{data:n,error:i}=await e.from(r.B7).select("\n enable_notifications,\n email_notifications,\n team_notifications\n ").eq("id",t).single();if(i)throw i;return n},s=async(e,t,n,i)=>await l((a,o)=>{let l=e.from(r.RA).select("\n id,\n teamName: team_name,\n site_ids,\n membersCount: patient_routing_team_members (count)\n ").eq("organization_id",t).order("team_name",{ascending:!0});return n&&(l=l.ilike("team_name","%".concat(n,"%"))),i&&(l=l.contains("site_ids",[i])),l.range(a,o)}),c=async(e,t,n)=>l((i,a)=>{let o=e.from(r.t9).select("\n id,\n name,\n team,\n site_ids,\n created_type,\n team_data:patient_routing_teams!patient_routing_studies_team_fkey(\n id,\n team_name\n )\n ").eq("organization_id",t).or("archived.is.null,archived.eq.false").order("name",{ascending:!0});return n&&n.length>0&&(o=o.or("site_ids.ov.{".concat(n.join(","),"},site_ids.cs.{-1}"))),o.range(i,a)}),_=async(e,t,n)=>{if(!(null==n?void 0:n.userStudy)||!(null==n?void 0:n.userId))return c(e,t);let i=null==n?void 0:n.userId,{teamIds:a,siteIds:r,hasAllSites:o}=await B(e,i,t);if(0===a.length||o||0===r.length)return c(e,t);let l=await c(e,t,r);return 0===l.length?c(e,t):l},m=async(e,t,n)=>{let{data:i,error:a}=await e.from(r.t9).select(" name,\n id,\n team,\n site_ids,\n visits: patient_routing_visits!patient_routing_visits_study_id_fkey (\n id,\n name,\n createdAt : created_at,\n visit_order\n ),\n team_data:patient_routing_teams!patient_routing_studies_team_fkey(\n id,\n team_name\n )\n ").eq("id",t).eq("organization_id",n).order("created_at",{ascending:!1}).single();if(a)throw a;return i},v=async(e,t,n)=>{let{data:i,error:a}=await e.from(r.de).select("id, name, visit_order").eq("study_id",t).eq("organization_id",n).order("visit_order",{ascending:!0,nullsFirst:!1});if(a)throw a;return i},f=async(e,t,n)=>{let{data:i,error:a}=await e.from(r.de).select("\n id,\n name,\n studyDetails : patient_routing_studies (\n id,\n name\n )\n ").in("study_id",t).eq("organization_id",n).order("created_at",{ascending:!1});if(a)throw a;return i},p=async(e,t)=>l((n,i)=>e.from(r.uL).select("\n id,\n uuid,\n mrn,\n patientName: patient_name,\n scheduledTime: scheduled_time,\n visitClassification: visit_classification,\n status,\n study: patient_routing_studies (id, name),\n team: patient_routing_teams (id, name: team_name),\n visit: patient_routing_visits (id, name)\n ").eq("organization_id",t).eq("status","pen
1ding").order("created_at",{ascending:!0}).range(n,i)),g=async(e,t,n)=>await l((i,a)=>{let o=e.from(r.Nb).select("\n name: view_name,\n displayName: display_name,\n id,\n order\n ").eq("organization_id",t).order("created_at",{ascending:!1});return(null==n?void 0:n.length)&&(o=o.in("id",n)),o.range(i,a)}),h=async(e,t,n)=>{var i,a,o,l,d;let{data:u,error:s}=await e.from(r.Nb).select("\n viewName: view_name,\n displayName: display_name,\n displayColumns: display_columns,\n filters: patient_routing_view_filters (\n teams,\n staffs,\n statuses\n )\n ").eq("id",t).eq("organization_id",n).single();if(s)throw s;if((null==u?void 0:null===(a=u.filters[0])||void 0===a?void 0:null===(i=a.teams)||void 0===i?void 0:i.length)>0){let{data:t}=await e.from(r.RA).select("value: id, label: team_name").in("id",null==u?void 0:null===(d=u.filters[0])||void 0===d?void 0:d.teams);u.filters[0].teams=t}return(null==u?void 0:null===(l=u.filters[0])||void 0===l?void 0:null===(o=l.statuses)||void 0===o?void 0:o.length)>0&&(u.filters[0].statuses=u.filters[0].statuses.map((e,t)=>({value:e,label:e}))),u},y=async(e,t,n)=>{let{error:i}=await e.from(r.Nb).delete().eq("id",t).eq("organization_id",n);if(i)throw i;return{success:!0}},w=async(e,t,n)=>{let{error:i}=await e.from(r.B7).update({patient_routing_views:n}).eq("feature_flags","patient_routing").eq("id",t);if(i)throw i;return{success:!0}},D=async(e,t)=>{let{data:n,error:i}=await e.from(r.B7).select("patient_routing_views").eq("feature_flags","patient_routing").eq("id",t).single();if(i)throw i;return n},q=async(e,t,n,i,a)=>{let o=await l((n,o)=>{let l=e.from(r.B7).select("\n id,\n name: display_name,\n memberDetails: memberships !inner (\n id\n )\n ").eq("feature_flags","patient_routing").eq("memberDetails.organization_id",t);return i||(l=l.neq("is_registered",!1)),(null==a?void 0:a.length)&&(l=l.in("id",a)),l.range(n,o)});return n?o.sort((e,t)=>e.id===n?-1:t.id===n?1:0):o},b=async(e,t,n)=>{let{error:i}=await e.from(r.qs).update({unread:!1}).eq("to_recipient",n).eq("organization_id",t);if(i)throw i;return{success:!0}},S=async(e,t)=>{let{error:n}=await e.from(r.qs).delete().eq("id",t);if(n)throw n;return{success:!0}},P=async(e,t,n)=>{let{data:i,error:a}=await e.from(r.qs).select("count",{count:"exact"}).eq("to_recipient",t).eq("unread",!0).eq("organization_id",n);if(a)throw a;return i[0].count},I=e=>{var t,n,i,r,o,l,d,u,s,c,_,m,v,f,p,g,h;let{eventType:y,appintmentData:w,receiverName:D}=e;if(!y)return{sender:"",recipient:"",msg:""};switch(y){case a.CHECK_IN:return{sender:(null===(t=w.team)||void 0===t?void 0:t.name)||"",recipient:D||"",msg:"Appt Time: ".concat(null==w?void 0:w.app_time,", Subject MRN: ").concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name," is here for ").concat(null==w?void 0:null===(n=w.study_protocol)||void 0===n?void 0:n.name)};case a.PICKED_UP_TO_PHARM_ACCT:return{sender:"".concat(null===(i=w.team)||void 0===i?void 0:i.name," / ").concat(null===(r=w.staff)||void 0===r?void 0:r.name)||"",recipient:D||"",msg:'"Subject MRN: '.concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name,", Study: ").concat(null==w?void 0:null===(o=w.study_protocol)||void 0===o?void 0:o.name," the drug has been placed in the safe/jail.â")};case a.PHARM_IWRS_SUBMITTED:return{sender:(null===(l=w.team)||void 0===l?void 0:l.name)||"",recipient:(null===(d=w.staff)||void 0===d?void 0:d.name)||"",msg:'"Subject MRN: '.concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name,", Study: ").concat(null==w?void 0:null===(u=w.study_protocol)||void 0===u?void 0:u.name," IP Reconciliation/Accounting has been completed.â")};case a.PHARM_ACCT_COMPLETE:return{sender:"".concat(null===(s=w.team)||void 0===s?void 0:s.name," / ").concat(null===(c=w.staff)||void 0===c?void 0:c.name)||"",recipient:D||"",msg:'"Subject MRN: '.concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name,", Study: ").concat(null==w?void 0:null===(_=w.study_protocol)||void 0===_?void 0:_.name," IWRS has been completed.â")};case a.DRUG_DISPENSED:return{sender:(null===(m=w.team)||void 0===m?void 0:m.name)||"",recipient:(null===(v=w.staff)||void 0===v?void 0:v.name)||"",msg:"Subject MRN: ".concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name,", Study: ").concat(null==w?void 0:null===(f=w.study_protocol)||void 0===f?void 0:f.name," IP has been dispensed and is currently in safe/jail ready for pickup.")};case a.SUBJECT_DOSED:return{sender:(null===(p=w.team)||void 0===p?void 0:p.name)||"",recipient:(null===(g=w.staff)||void 0===g?void 0:g.name)||"",msg:"Subject MRN: ".concat(null==w?void 0:w.mrn,", Name: ").concat(null==w?void 0:w.patient_name,", Study: ").concat(null==w?void 0:null===(h=w.study_protocol)||void 0===h?void 0:h.name," subject has been dosed.")};default:return{sender:"",recipient:"",msg:""}}},C=async(e,t,n,i,o)=>{let l=[a.CHECK_IN,a.PICKED_UP_TO_PHARM_ACCT,a.PHARM_IWRS_SUBMITTED,a.PHARM_ACCT_COMPLETE,a.DRUG_DISPENSED,a.SUBJECT_DOSED],d=e.from(r.qs).select("\n id,\n unread,\n event_type,\n to_recipient : users!patient_routing_notifications_to_recipient_fkey !inner (\n display_name\n ),\n status,\n created_at,\n appointment: patient_routing_appointments (\n mrn: mrn_number,\n patient_name,\n app_time: appointment_time,\n team: patient_routing_teams !inner (\n name: team_name\n ),\n staff: users!patient_routing_appointments_staff_id_fkey (\n name: display_name\n ),\n study_protocol: patient_routing_studies !inner (\n name\n )\n )\n ").eq("to_recipient",t).in("event_type",l).eq("organization_id",n).order("created_at",{ascending:!1});void 0!==i&&(d=d.limit(i)),void 0!==o&&(d=d.range(o,o+(i||50)-1));let{data:u,error:s}=await d;if(s)throw s;return u.map(e=>{var t;let n=new Date(e.created_at),i=new Intl.DateTimeFormat("en-US",{weekday:"long",month:"long",day:"numeric"}).format(n),a=new Intl.DateTimeFormat("en-US",{month:"long",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(n);return{...I({eventType:e.event_type,receiverName:(null===(t=e.to_recipient)||void 0===t?void 0:t.display_name)||"",appintmentData:e.appointment||{}}),id:e.id,date:i,time:a,status:null==e?void 0:e.status,unread:e.unread}})},A=async(e,t,n)=>{let{error:i}=await e.from(r.U2).delete().eq("id",n).eq("organization_id",t);if(i)throw i;return{success:!0}},N=async(e,t,n,i,a,r,o)=>{var l,d,u,s,c,_;let m=(null==i?void 0:i.staff)||null;if(m&&o){m.includes("USER")&&!m.includes(o)&&(m=[...m,o]);let s=m.filter(e=>"USER"!==e),c=e.rpc("get_appointment_list",{org_id:t,search_term:n||"",status_filter:(null==i?void 0:i.status)||null,staff_id_filter:s.length>0?s:null,team_filter:(null==i?void 0:null===(l=i.team)||void 0===l?void 0:l.map(Number))||null,visit_filter:(null==i?void 0:null===(d=i.visit)||void 0===d?void 0:d.map(Number))||null,app_time_filter:(null==i?void 0:i.app_time)||null,mrn_filter:(null==i?void 0:i.mrn)||null,patient_name_filter:(null==i?void 0:i.patient_name)||null,study_protocol_filter:(null==i?void 0:null===(u=i.study_protocol)||void 0===u?void 0:u.map(Number))||null,created_at_filter:(null==i?void 0:i.created_at)||null,room_number_filter:(null==i?void 0:i.room_number)||null,page_limit:a||null,page_offset:r||null,sort_column:(null==i?void 0:i.sort_by)||"created_at",sort_direction:(null==i?void 0:i.sort_order)||"asc"}),{data:_,error:v}=await c;if(v)throw v;return _}{let o=e.rpc("get_appointment_list",{org_id:t,search_term:n||"",status_filter:(null==i?void 0:i.status)||null,staff_id_filter:m,team_filter:(null==i?void 0:null===(s=i.team)||void 0===s?void 0:s.map(Number))||null,visit_filter:(null==i?void 0:null===(c=i.visit)||void 0===c?void 0:c.map(Number))||null,app_time_filter:(null==i?void 0:i.app_time)||null,mrn_filter:(null==i?void 0:i.mrn)||null,patient_name_filter:(null==i?void 0:i.patient_name)||null,study_protocol_filter:(null==i?void 0:null===(_=i.study_protocol)||void 0===_?void 0:_.map(Number))||null,created_at_filter:(null==i?void 0:i.created_at)||null,room_number_filter:(null==i?void 0:i.room_number)||null,page_limit:a||null,page_offset:r||null,sort_column:(null==i?void 0:i.sort_by)||"created_at",sort_direction:(null==i?void 0:i.sort_order)||"asc"}),{data:l,error:d}=await o;
1if(d)throw d;return l}},E=async(e,t,n,i)=>{let a=[];if(i===o.Z.Admin||i===o.Z.Owner){let{data:t,error:i}=await e.from(r.B7).select("patient_routing_views").eq("id",n).single();if(i)throw i;a=(null==t?void 0:t.patient_routing_views)||[]}else{let{data:t,error:i}=await e.from(r.B7).select("patient_routing_views").eq("id",n).single();if(i)throw i;a=(null==t?void 0:t.patient_routing_views)||[]}let l=Array.from(new Set(a.filter(e=>null!=e)));return l.length>0?await g(e,t,l):[]},R=e=>0===e.length?null:{average:parseFloat((e.reduce((e,t)=>e+t,0)/e.length).toFixed(1)),longest:parseFloat(Math.max(...e).toFixed(1)),shortest:parseFloat(Math.min(...e).toFixed(1)),count:e.length},T=async(e,t,n)=>{let i=[],a=0;return e.forEach(e=>{var r,o;let l=null==e?void 0:null===(r=e.appLogDetails)||void 0===r?void 0:r.find(e=>{var n;return null==e?void 0:null===(n=e.status)||void 0===n?void 0:n.includes(t)}),d=null==e?void 0:null===(o=e.appLogDetails)||void 0===o?void 0:o.find(e=>{var t;return null==e?void 0:null===(t=e.status)||void 0===t?void 0:t.includes(n)});if(l&&d){let e=(new Date(d.updated_at).getTime()-new Date(l.updated_at).getTime())/6e4;i.push(e),a++}}),{times:i,patientsSeen:a}},z=async function(e,t,n){let i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return await l((a,o)=>{let l=e.from(r.gN).select("\n user_id,\n user: users (\n enable_notifications,\n team_notifications,\n email_notifications\n )\n ").in("team_id",t).eq("organization_id",n);return i||(l=l.eq("user.is_registered",!0)),l.range(a,o)})},k=async(e,t,n,i)=>{var a,o,d;let u=(null==i?void 0:i.userIds)||[];if(i.teamIds){let n=await z(e,i.teamIds,t);u=[...u,...n.map(e=>e.user_id)]}let s=await l((n,a)=>{var o,l,d,s;let c=e.from(r.U2).select("\n id,\n team_id,\n staff_id,\n study_protocol,\n visit,\n status,\n appLogDetails : patient_routing_appointment_status_log !inner (\n appointment_id,\n status,\n updated_at\n )\n ").eq("organization_id",t).in("staff_id",Array.from(new Set(u))).in("study_protocol",i.studyIds||[]).in("visit",i.visitIds||[]);return(null==i?void 0:i.date)&&(null==i?void 0:null===(o=i.date)||void 0===o?void 0:o.startDate)&&(null==i?void 0:null===(l=i.date)||void 0===l?void 0:l.endDate)&&(c=c.gte("created_at",null==i?void 0:null===(d=i.date)||void 0===d?void 0:d.startDate).lte("created_at",null==i?void 0:null===(s=i.date)||void 0===s?void 0:s.endDate)),c.range(n,a)}),{times:c,patientsSeen:_}=await T(s.sort((e,t)=>{var n,i;let a=new Date((null===(n=e.appLogDetails[0])||void 0===n?void 0:n.updated_at)||0);return new Date((null===(i=t.appLogDetails[0])||void 0===i?void 0:i.updated_at)||0)-a}),"wait-times"===n?"Checked-In":"Picked-Up","wait-times"===n?"Picked-Up":"Done"),m=R(c);return{averageTime:null!==(a=null==m?void 0:m.average)&&void 0!==a?a:0,patientsSeen:null!=_?_:0,longestTime:null!==(o=null==m?void 0:m.longest)&&void 0!==o?o:0,shortestTime:null!==(d=null==m?void 0:m.shortest)&&void 0!==d?d:0}},M=async(e,t,n)=>{let i=(null==n?void 0:n.userIds)||[];if(n.teamIds&&n.teamIds.length>0){let a=await z(e,n.teamIds,t);i=[...i,...a.map(e=>e.user_id)]}let a=await l((a,o)=>{var l,d,u,s;let c=e.from(r.U2).select("\n id,\n appLogDetails : patient_routing_appointment_status_log !inner (\n appointment_id,\n status,\n updated_at\n )\n ").eq("organization_id",t);return i.length>0&&(c=c.in("staff_id",Array.from(new Set(i)))),n.studyIds&&n.studyIds.length>0&&(c=c.in("study_protocol",n.studyIds)),n.visitIds&&n.visitIds.length>0&&(c=c.in("visit",n.visitIds)),(null==n?void 0:n.date)&&(null==n?void 0:null===(l=n.date)||void 0===l?void 0:l.startDate)&&(null==n?void 0:null===(d=n.date)||void 0===d?void 0:d.endDate)&&(c=c.gte("created_at",null==n?void 0:null===(u=n.date)||void 0===u?void 0:u.startDate).lte("created_at",null==n?void 0:null===(s=n.date)||void 0===s?void 0:s.endDate)),c.range(a,o)}),o={};for(let e of[{from:"Checked-In",to:"Picked-Up",label:"Checked-In"},{from:"Picked-Up",to:"Pharm - Accountability",label:"Picked-Up"},{from:"Pharm - Accountability",to:"Pharm - Acct Complete",label:"Pharm - Accountability"},{from:"Pharm - Acct Complete",to:"Pharm - IWRS",label:"Pharm - Acct Complete"},{from:"Pharm - IWRS",to:"Drug Dispensed",label:"Pharm - IWRS"},{from:"Drug Dispensed",to:"Done",label:"Drug Dispensed"}]){var d;let{times:t}=await T(a,e.from,e.to),n=R(t);o[e.label]=null!==(d=null==n?void 0:n.average)&&void 0!==d?d:0}return o},U=async(e,t,n)=>{let{count:i,error:a}=await e.from(r.hk).select("id",{count:"exact",head:!0}).eq("team_id",t);if(a)throw a;if(i&&i>0)throw Error("This team has associated MS channels. Please remove the channels before deleting the team.");let{error:o}=await e.from(r.RA).delete().eq("id",t).eq("organization_id",n);if(o)throw o;return{success:!0}},O=async(e,t,n)=>{let{error:i}=await e.from(r.gN).delete().eq("id",t).eq("organization_id",n);if(i)throw i;return{success:!0}},B=async(e,t,n)=>{let{data:i,error:a}=await e.from(r.gN).select("\n team_id,\n team:".concat(r.RA,"!inner(\n id,\n site_ids\n )\n ")).eq("user_id",t).eq("organization_id",n);if(a||!i||0===i.length)return{teamIds:[],siteIds:[],hasAllSites:!1};let o=[],l=new Set,d=!1;
1return i.forEach(e=>{var t,n;o.push(e.team_id);let i=null!==(n=null===(t=e.team)||void 0===t?void 0:t.site_ids)&&void 0!==n?n:[];i.includes(-1)&&(d=!0),i.forEach(e=>{-1!==e&&l.add(e)})}),{teamIds:o,siteIds:Array.from(l),hasAllSites:d}},H=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{search:i,page:a,pageSize:o}=n,l=e.from(r.fP).select("id, uuid, organization_id, name, created_at, updated_at",{count:"exact"}).eq("organization_id",t).is("deleted_at",null).order("name",{ascending:!0});if(i&&(l=l.ilike("name","%".concat(i,"%"))),void 0!==a&&void 0!==o){let e=a*o;l=l.range(e,e+o-1)}let{data:d,error:u,count:s}=await l;if(u)throw u;return{data:null!=d?d:[],total:null!=s?s:0}},j=async(e,t)=>l((n,i)=>e.from(r.fP).select("id, uuid, organization_id, name, created_at, updated_at").eq("organization_id",t).is("deleted_at",null).order("name",{ascending:!0}).range(n,i)),F=async(e,t,n)=>{let{data:i}=await e.from(r.RA).select("id, team_name, site_ids").eq("organization_id",n).or("site_ids.cs.{".concat(t,"},site_ids.cs.{-1}")),a=(i||[]).map(e=>({id:e.id,name:e.team_name,allSites:e.site_ids.includes(-1),source:"Patient Routing"})),{data:o}=await e.from(r.t9).select("id, name, site_ids").eq("organization_id",n).eq("archived",!1).or("site_ids.cs.{".concat(t,"},site_ids.cs.{-1}"));return{teams:a,studies:(o||[]).map(e=>({id:e.id,name:e.name,allSites:e.site_ids.includes(-1),source:"Patient Routing"}))}},L=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{search:i,page:a,pageSize:o}=n,l=e.from(r.y5).select("id, uuid, organization_id, region_id, name, description, created_at, updated_at,\n region:patient_routing_regions(id, uuid, name)",{count:"exact"}).eq("organization_id",t).is("deleted_at",null).order("name",{ascending:!0});if(i&&(l=l.ilike("name","%".concat(i,"%"))),void 0!==a&&void 0!==o){let e=a*o;l=l.range(e,e+o-1)}let{data:d,error:u,count:s}=await l;if(u)throw u;return{data:null!=d?d:[],total:null!=s?s:0}},x=async(e,t)=>l((n,i)=>e.from(r.y5).select("id, uuid, organization_id, region_id, name, description, created_at, updated_at,\n region:patient_routing_regions(id, name)").eq("organization_id",t).is("deleted_at",null).order("name",{ascending:!0}).range(n,i))}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.