PageSourceSearch

https://planete-warez.net/assets/admin/manage-privileges.03b2a3e73f3eab9e9fd5.min.js

js planete-warez.net collected 2026-10-08 05:16:22 UTC 20,705 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[1091,4884,11295,13417,34271,34405,49047,69185,86198],{63431(j,k,u){var P,v;P=[u(49897),u(34405),u(33530),u(29930),u(17459),u(65348),u(6411),u(2627),u(54222)],v=(function(S,D,T,g,f,a,p,b,d){const t={};let c;t.init=function(){c=isNaN(parseInt(ajaxify.data.selectedCategory.cid,10))?"admin":ajaxify.data.selectedCategory.cid,b.init(".privilege-table-container"),a.init($('[component="category-selector"]'),{onSelect:function(n){c=parseInt(n.cid,10),c=isNaN(c)?"admin":c,t.refreshPrivilegeTable(),ajaxify.updateHistory("admin/manage/privileges/"+(c||""))},localOnly:!0,localCategories:ajaxify.data.categories,privilege:"find",showLinks:!0}),t.setupPrivilegeTable(),A(),$(".privilege-filters button:first-child").click()},t.setupPrivilegeTable=function(){$(".privilege-table-container").on("change",'input[type="checkbox"]:not(.checkbox-helper)',function(){const n=this,e=$(this),r=e.parents("[data-privilege]"),s=r.index()+1,m=r.attr("data-privilege"),h=e.prop("checked"),C=e.parents("tr"),w=C.attr("data-group-name")||C.attr("data-uid"),I=parseInt(C.attr("data-private")||0,10),N=C.attr("data-group-name")!==void 0,R=N&&C.attr("data-group-name")==="banned-users"||C.attr("data-banned")!==void 0?"banned-users":"registered-users",L=e.prop("checked")===(r.attr("data-value")==="true")?null:h;w?(N&&m==="groups:moderate"&&!I&&h?T.confirm("[[admin/manage/privileges:alert.confirm-moderate]]",function(O){O?(r.attr("data-delta",L),t.applyDeltaState(n,L),t.exposeSingleAssumedPriv(s,R)):e.prop("checked",!e.prop("checked"))}):m.endsWith("admin:admins-mods")&&h?T.confirm("[[admin/manage/privileges:alert.confirm-admins-mods]]",function(O){O?(r.attr("data-delta",L),t.applyDeltaState(n,L),t.exposeSingleAssumedPriv(s,R)):e.prop("checked",!e.prop("checked"))}):(r.attr("data-delta",L),t.applyDeltaState(n,L),t.exposeSingleAssumedPriv(s,R)),b.updateState(e)):g.error("[[error:invalid-data]]")}),t.exposeAssumedPrivileges(),b.updateAll(),t.addEvents()},t.applyDeltaState=(n,e)=>{["bg-success","bg-opacity-75","border-success"].forEach(r=>{n.classList.toggle(r,e===!0)}),["bg-danger","bg-opacity-50","border-danger"].forEach(r=>{n.classList.toggle(r,e===!1)})},t.addEvents=function(){document.getElementById("save").addEventListener("click",function(){r("save",t.commit)}),document.getElementById("discard").addEventListener("click",function(){r("discard",t.discard)});const n=document.querySelector(".privilege-table-container");n.addEventListener("change",s=>{s.target.closest("td[data-privilege] input")&&(document.getElementById("discard").style.display=n.querySelectorAll("td[data-delta]").length?"unset":"none")});const e=$(".privilege-table-container");e.on("click",'[data-action="search.user"]',t.addUserToPrivilegeTable),e.on("click",'[data-action="search.group"]',t.addGroupToPrivilegeTable),e.on("click",'[data-action="copyToChildren"]',function(){r("copyToChildren",t.copyPrivilegesToChildren.bind(null,c,""))}),e.on("click",'[data-action="copyToChildrenGroup"]',function(){const s=$(this).parents("[data-group-name]").attr("data-group-name");r("copyToChildrenGroup",t.copyPrivilegesToChildren.bind(null,c,s))}),e.on("click",'[data-action="copyPrivilegesFrom"]',function(){t.copyPrivilegesFromCategory(c,"")}),e.on("click",'[data-action="copyPrivilegesFromGroup"]',function(){const s=$(this).parents("[data-group-name]").attr("data-group-name");t.copyPrivilegesFromCategory(c,s)}),e.on("click",'[data-action="copyToAll"]',function(){r("copyToAll",t.copyPrivilegesToAllCategories.bind(null,c,""))}),e.on("click",'[data-action="copyToAllGroup"]',function(){const s=$(this).parents("[data-group-name]").attr("data-group-name");r("copyToAllGroup",t.copyPrivilegesToAllCategories.bind(null,c,s))}),e.on("click",".privilege-filters button",W),p.bind("ctrl+s",function(s){r("save",t.commit),s.preventDefault()});function r(s,m){const h=B();T.confirm(`[[admin/manage/privileges:alert.confirm-${s}, ${h}]]<br /><br />[[admin/manage/privileges:alert.no-undo]]`,function(C){C&&m.call()})}},t.commit=function(){const n=document.querySelector(".privilege-table-container"),e=$.map(n.querySelectorAll("td[data-delta]"),function(r){const s=r.getAttribute("data-privilege"),m=r.parentNode,h=m.getAttribute("data-group-name")||m.getAttribute("data-uid"),C=r.getAttribute("data-delta")==="true"?1:0;return t.setPrivilege(h,s,C)});Promise.allSettled(e).then(r=>{t.refreshPrivilegeTable();const s=r.filter(m=>m.status==="rejected");
1s.length?s.forEach(m=>{g.error(m.reason)}):d.toggleSaveSuccess($("#save"))})},t.discard=function(){t.refreshPrivilegeTable(),g.success("[[admin/manage/privileges:alert.discarded]]")},t.refreshPrivilegeTable=function(n){S.get(`/categories/${c}/privileges`,{}).then(e=>{ajaxify.data.privileges={...ajaxify.data.privileges,...e};const r=parseInt(c,10)?"admin/partials/privileges/category":"admin/partials/privileges/global",s=ajaxify.currentPage.endsWith("admin/manage/privileges/admin");app.parseAndTranslate(r,{cid:c,privileges:e,isAdminPriv:s}).then(m=>{const h=$(".privilege-filters button.btn-warning").map((C,w)=>$(w).index()).get();$(".privilege-table-container").html(m),t.exposeAssumedPrivileges(),document.querySelectorAll(".privilege-filters").forEach((C,w)=>{const I=h[w]===void 0?0:h[w];C.querySelectorAll("button")[I].click()}),y("data-group-name",n)})}).catch(alert.error)},t.exposeAssumedPrivileges=function(){const n=(m,h)=>`.privilege-table tr[data-banned] td[data-privilege="${m[h]}"] input`,e=i("banned-users");l(e,n);const r=(m,h)=>`.privilege-table tr[data-group-name]:not([data-group-name="registered-users"],[data-group-name="banned-users"],[data-group-name="guests"],[data-group-name="spiders"],[data-group-name="fediverse"]) td[data-privilege="${m[h]}"] input, .privilege-table tr[data-uid]:not([data-banned]) td[data-privilege="${m[h]}"] input`,s=i("registered-users");l(s,r)},t.exposeSingleAssumedPriv=function(n,e){let r;e==="banned-users"?r=()=>`.privilege-table tr[data-banned] td[data-privilege]:nth-child(${n}) input`:r=()=>`.privilege-table tr[data-group-name]:not([data-group-name="registered-users"],[data-group-name="banned-users"],[data-group-name="guests"],[data-group-name="spiders"],[data-group-name="fediverse"]) td[data-privilege]:nth-child(${n}) input, .privilege-table tr[data-uid]:not([data-banned]) td[data-privilege]:nth-child(${n}) input`;const s=o(e,n);E(r,s)},t.setPrivilege=(n,e,r)=>S[r?"put":"del"](`/categories/${isNaN(c)?0:c}/privileges/${encodeURIComponent(e)}`,{member:n}),t.addUserToPrivilegeTable=function(){const n=T.dialog({title:"[[admin/manage/categories:alert.find-user]]",message:'<input class="form-control input-lg" placeholder="[[admin/manage/categories:alert.user-search]]" />',show:!0});n.on("shown.bs.modal",function(){const e=n.find("input");e.focus(),D.user(e,function(r,s){U(s.item.user,function(){n.modal("hide")})})})},t.addGroupToPrivilegeTable=function(){const n=T.dialog({title:"[[admin/manage/categories:alert.find-group]]",message:'<input class="form-control input-lg" placeholder="[[admin/manage/categories:alert.group-search]]" />',show:!0});n.on("shown.bs.modal",function(){const e=n.find("input");e.focus(),D.group(e,function(r,s){if(s.item.group.name==="administrators")return g.alert({type:"warning",message:"[[admin/manage/privileges:alert.admin-warning]]"});x(s.item.group.name,function(){n.modal("hide")})})})},t.copyPrivilegesToChildren=function(n,e){const r=F();socket.emit("admin.categories.copyPrivilegesToChildren",{cid:n,group:e,filter:r},function(s){if(s)return g.error(s.message);g.success("[[admin/manage/categories:privileges.copy-success]]")})},t.copyPrivilegesFromCategory=function(n,e){const r=B(),s="<br>"+(e?`[[admin/manage/privileges:alert.copyPrivilegesFromGroup-warning, ${r}]]`:`[[admin/manage/privileges:alert.copyPrivilegesFrom-warning, ${r}]]`)+"<br><br>[[admin/manage/privileges:alert.no-undo]]";a.modal({title:"[[admin/manage/privileges:alert.copyPrivilegesFrom-title]]",message:s,localCategories:[],showLinks:!0,onSubmit:function(m){socket.emit("admin.categories.copyPrivilegesFrom",{toCid:n,filter:F(),fromCid:m.cid,group:e},function(h){if(h)return g.error(h);ajaxify.refresh()})}})},t.copyPrivilegesToAllCategories=function(n,e){const r=F();socket.emit("admin.categories.copyPrivilegesToAllCategories",{cid:n,group:e,filter:r},function(s){if(s)return g.error(s);g.success("[[admin/manage/categories:privileges.copy-success]]")})};function i(n){const e=[];return $(`.privilege-table tr[data-group-name="${n}"] td input[type="checkbox"]:not(.checkbox-helper)`).parents("[data-privilege]").each(function(r,s){$(s).find("input").prop("checked")&&e.push(s.getAttribute("data-privilege"))}),e.concat(e.map(function(r){return r.startsWith("groups:")?r.slice(7):!1}
1)).filter(Boolean)}function o(n,e){return $(`.privilege-table tr[data-group-name="${n}"] td:nth-child(${e}) input[type="checkbox"]`)[0].checked}function l(n,e){for(let r=0,s=n.length;r<s;r+=1)$(e(n,r)).each(function(h,C){C.checked||(C.indeterminate=!0)})}function E(n,e){$(n()).each((s,m)=>{m.indeterminate=m.checked?!1:e})}function y(n,e){if(e){const r=$("["+n+"]").filter(function(){return $(this).attr(n)===String(e)});if(r.length)return r.addClass("selected"),!0}return!1}function A(){if(ajaxify.data.group){if(y("data-group-name",ajaxify.data.group))return;x(ajaxify.data.group)}}function x(n,e){if(e=e||function(){},document.querySelector('.privilege-table [data-group-name="'+n+'"]'))return y("data-group-name",n),e();const s={},m=ajaxify.data.privileges.keys.groups.reduce(function(h,C,w){return h[C]=!1,s[C]=ajaxify.data.privileges.labelData[w].type,h},{});app.parseAndTranslate("admin/partials/privileges/"+(isNaN(c)||c===0?"global":"category"),"privileges.groups",{privileges:{groups:[{name:n,nameEscaped:f.escape(n),privileges:m,types:s}]}},function(h){const C=document.querySelector(".privilege-table tbody"),w=$(".privilege-filters").first().find("button.btn-warning").index();C.append(h.get(0)),t.exposeAssumedPrivileges(),y("data-group-name",n),w>=0&&document.querySelector(".privilege-filters").querySelectorAll("button")[w].click(),e()})}async function U(n,e){if(e=e||function(){},document.querySelector('.privilege-table [data-uid="'+n.uid+'"]'))return y("data-uid",n.uid),e();const s={},m=ajaxify.data.privileges.keys.users.reduce(function(I,N,M){return I[N]=!1,s[N]=ajaxify.data.privileges.labelData[M].type,I},{}),h=await app.parseAndTranslate("admin/partials/privileges/"+(isNaN(c)?"global":"category"),"privileges.users",{privileges:{users:[{picture:n.picture,username:n.username,banned:n.banned,uid:n.uid,"icon:text":n["icon:text"],"icon:bgColor":n["icon:bgColor"],privileges:m,types:s}]}}),C=document.querySelectorAll(".privilege-table tbody"),w=$(".privilege-filters").last().find("button.btn-warning").index();C[1].append(h.get(0)),t.exposeAssumedPrivileges(),y("data-uid",n.uid),w>=0&&document.querySelectorAll(".privilege-filters")[1].querySelectorAll("button")[w].click(),e()}function W(n){const e=$(n.target),r=e.attr("data-filter");e.closest("table").find("thead tr:last-child, tbody tr").each((m,h)=>{$(h).find("[data-type]").addClass("hidden"),$(h).find(`[data-type="${r}"]`).removeClass("hidden")}),b.updateAll(),e.siblings("button").removeClass("btn-warning"),e.addClass("btn-warning")}function F(){return $('[component="privileges/groups/filters"] .btn-warning').attr("data-filter")}function B(){const n=document.querySelector(".privilege-filters .btn-warning"),e=n?n.textContent.toLocaleLowerCase():"";return e.indexOf("privileges")>-1?e:`${e} privileges`.trim()}return t}).apply(k,P),v!==void 0&&(j.exports=v)},2627(j,k,u){var P;P=(function(){const v={};let S;v.toggling=!1,v.init=function(g){S=$(g),S.on("change","input.checkbox-helper",D)},v.updateAll=function(){S.find("input.checkbox-helper").each((g,f)=>{v.updateState($(f))})},v.updateState=function(g){if(v.toggling)return;const f=g.closest("tr").find("input:not([disabled]):visible").toArray(),a=$(f.shift()),p=f.length&&f.every(b=>b.checked);a.prop("checked",p)};function D(g){const f=$(g.target);T(f)}function T(g){v.toggling=!0;const f=g.prop("checked");g.closest("tr").find("input:not(.checkbox-helper):visible").each((a,p)=>{const b=$(p);b.prop("checked")!==f&&b.click()}),v.toggling=!1}return v}).call(k,u,k,j),P!==void 0&&(j.exports=P)},49897(j,k,u){u.r(k),u.d(k,{del:()=>c,get:()=>a,head:()=>p,patch:()=>d,post:()=>b,put:()=>t});var P=u(91749),v=u.n(P),S=u(33530),D=u.n(S);const T=config.relative_path+"/api/v3";async function g(i,o){if(i.url=i.url.startsWith("/api")?config.relative_path+i.url:T+i.url,typeof o=="function"){f(i).then(l=>o(null,l),l=>o(l));return}try{return await f(i)}catch(l){if(l.message==="A valid login session was not found. Please log in and try again."){const{url:E}=await(0,P.fire)("filter:admin.reauth",{url:"login"});return(0,S.confirm)("[[error:api.reauth-required]]",y=>{y&&ajaxify.go(E)})}throw l}}async function f(i){const{url:o}=i;delete i.url,i.data&&!(i.data instanceof FormData)&&(i.data=JSON.stringify(i.data||{}),i.headers["content-type"]="application/json; charset=utf-8"),{options:i}=await(0,P.fire)("filter:api.options",{options:i}),i.data&&(i.body=i.data,delete i.data);const l=await fetch(o,i),{headers:E}=l;if(E.get("x-redirect"))return f({url:E.get("x-redirect"),...i});const y=E.get("content-type"),A=y&&y.startsWith("application/json");let x;if(i.method!=="HEAD"&&(A?x=await l.json():x=await l.text()),!l.ok){if(x){const U=A&&(x.status?.message||x.error||"");throw new Error(A&&U?U:x)}throw new Error(l.statusText)}return A&&x&&x.hasOwnProperty("status")&&x.hasOwnProperty("response")?x.response:x}function a(i,o,l){return g({url:i+(o&&Object.keys(o).length?"?"+$.param(o):"")},l)}function p(i,o,l){return g({url:i+(o&&Object.keys(o).length?"?"+$.param(o):""),method:"HEAD"},l)}function b(i,o,l){return g({url:i,method:"POST",data:o,headers:{"x-csrf-token":config.csrf_token}},l)}function d(i,o,l){return g({url:i,method:"PATCH",data:o,headers:{"x-csrf-token":config.csrf_token}},l)}function t(i,o,l){return g({url:i,method:"PUT",data:o,headers:{"x-csrf-token":config.csrf_token}},l)}function c(i,o,l){return g({url:i,method:"DELETE",data:o,headers:{"x-csrf-token":config.csrf_token}},l)}},34405(j,k,u){var P,v;P=[u(49897),u(29930),u(36e3),u(9787),u(35786)],v=(function(S,D,{Textcomplete:T},{TextareaEditor:g},{ContenteditableEditor:f}){const a={},p={delay:200,appendTo:null};a.init=d=>{const t={...p,...d},{input:c,onSelect:i}=t;app.loadJQueryUI(function(){c.autocomplete({...t,open:function(){$(this).autocomplete("widget").css("z-index",100005)},select:function(o,l){b(c,i,o,l)}})})},a.user=function(d,t,c){typeof t=="function"&&(c=t,t={}),t=t||{},a.init({input:d,onSelect:c,source:(i,o)=>{t.query=i.term,S.get("/api/users",t,function(l,E){if(l)return D.error(l);
1if(E&&E.users){const y=E.users.map(function(A){const x=$("<div></div>").html(A.username).text();return A&&{label:x,value:x,user:{uid:A.uid,name:A.username,slug:A.userslug,username:A.username,userslug:A.userslug,displayname:A.displayname,picture:A.picture,banned:A.banned,"icon:text":A["icon:text"],"icon:bgColor":A["icon:bgColor"]}}});o(y)}$(".ui-autocomplete a").attr("data-ajaxify","false")})}})},a.group=function(d,t){a.init({input:d,onSelect:t,source:(c,i)=>{socket.emit("groups.search",{query:c.term},function(o,l){if(o)return D.error(o);if(l&&l.length){const E=l.map(function(y){return y&&{label:y.name,value:y.name,group:y}});i(E)}$(".ui-autocomplete a").attr("data-ajaxify","false")})}})},a.tag=function(d,t){a.init({input:d,onSelect:t,delay:100,source:(c,i)=>{socket.emit("topics.autocompleteTags",{query:c.term,cid:ajaxify.data.cid||0},function(o,l){if(o)return D.error(o);l&&i(l),$(".ui-autocomplete a").attr("data-ajaxify","false")})}})};function b(d,t,c,i){t=t||function(){};const o=jQuery.Event("keypress");o.which=13,o.keyCode=13,setTimeout(function(){d.trigger(o)},100),t(c,i)}return a.setup=function({element:d,strategies:t,options:c}){const i=d.get(0);if(!i)return;let o;if(i.nodeName==="TEXTAREA"||i.nodeName==="INPUT"?o=new g(i):i.nodeName==="DIV"&&i.getAttribute("contenteditable")==="true"&&(o=new f(i)),!o)throw new Error("unknown target element type");i.setAttribute("dir",document.querySelector("html").getAttribute("data-dir"));const l=new T(o,t,{dropdown:c});return l.on("rendered",function(){l.dropdown.items.length&&l.dropdown.items[0].activate()}),l},a}).apply(k,P),v!==void 0&&(j.exports=v)},96349(j,k,u){var P,v;P=[u(29930),u(89336),u(49897)],v=(function(S,D,T){const g={};return g.init=function(f,a){let p=a.defaultCategories||null;a=a||{},a.privilege=a.privilege||"topics:read",a.states=a.states||["watching","tracking","notwatching","ignoring"],a.cacheList=a.hasOwnProperty("cacheList")?a.cacheList:!0;let b=[];Array.isArray(a.localCategories)&&(b=a.localCategories.map(o=>({...o})),p&&(p=[...b,...p])),a.selectedCids=a.selectedCids||ajaxify.data.selectedCids||[];const d=f.find('[component="category-selector-search"]');if(!d.length)return;const t=d.parents('[component="category/dropdown"]').length>0||d.parents('[component="category-selector"]').length>0;f.on("show.bs.dropdown",function(){t&&d.removeClass("hidden");function o(){const l=d.find("input").val();l.length>1||!l&&!p?c(l,function(E){p=a.cacheList&&(p||E),i(E)}):!l&&p&&i(p)}d.on("click",function(l){l.preventDefault(),l.stopPropagation()}),d.find("input").val("").on("keyup",utils.debounce(o,300)),o()}),f.on("shown.bs.dropdown",function(){["xs","sm"].includes(utils.findBootstrapEnvironment())||d.find("input").focus()}),f.on("hide.bs.dropdown",function(){t&&d.addClass("hidden"),d.off("click"),d.find("input").off("keyup")});function c(o,l){T.get("/search/categories",{search:o,query:utils.params(),parentCid:a.parentCid||0,selectedCids:a.selectedCids,privilege:a.privilege,states:a.states,showLinks:a.showLinks,localOnly:a.localOnly,hideUncategorized:a.hideUncategorized},function(E,{categories:y}){if(E)return S.error(E);l(b.concat(y))})}function i(o){const l=a.selectedCids.map(String),E=(a.disabledCids||[]).map(String);o.forEach(function(y){y.selected=l.includes(String(y.cid)),E.includes(String(y.cid))&&(y.disabledClass=!0)}),app.parseAndTranslate(a.template,{categoryItems:o.slice(0,200),selectedCategory:ajaxify.data.selectedCategory,allCategoriesUrl:ajaxify.data.allCategoriesUrl,hideAll:a.hideAll},function(y){f.find('[component="category/list"]').html(y.find('[component="category/list"]').html()),f.find('[component="category/list"] [component="category/no-matches"]').toggleClass("hidden",!!o.length);const A=D.Dropdown.getInstance(f.find(".dropdown-toggle").get(0));A&&A.update()})}},g}).apply(k,P),v!==void 0&&(j.exports=v)},65348(j,k,u){var P,v;P=[u(96349),u(33530),u(91749),u(17459)],v=(function(S,D,T,g){const f={};return f.init=function(a,p){if(!a||!a.length)return;p=p||{};const b=p.onSelect||function(){};p.states=p.states||["watching","tracking","notwatching","ignoring"],p.template=p.template||"partials/category/selector-dropdown-left",T.fire("action:category.selector.options",{el:a,options:p}),S.init(a,p);const d={el:a,selectedCategory:null};a.on("click","[data-cid]",function(){const c=$(this);return c.hasClass("disabled")?!1:(d.selectCategory(c.attr("data-cid")),b({...d.selectedCategory,categoryEl:c}))});let t=d.el.find('[component="category-selector-selected"]').html();return g.translate(t,c=>{t=c}),d.selectCategory=function(c,i=null){const o=i||d.el.find('[data-cid="'+c+'"]');d.selectedCategory={cid:c,name:o.attr("data-name")},o.length?d.el.find('[component="category-selector-selected"]').html(o.find('[component="category-markup"]').html()):d.el.find('[component="category-selector-selected"]').html(t)},d.getSelectedCategory=function(){return d.selectedCategory},d.getSelectedCid=function(){return d.selectedCategory?d.selectedCategory.cid:0},p.hasOwnProperty("selectedCategory")&&app.parseAndTranslate(p.template,{selectedCategory:p.selectedCategory},function(c){d.el.find('[component="category-selector-selected"]').html(c.find('[component="category-selector-selected"]').html())}),d},f.modal=function(a){a=a||{},a.onSelect=a.onSelect||function(){},a.onSubmit=a.onSubmit||function(){},app.parseAndTranslate("admin/partials/categories/select-category",{message:a.message},function(p){const b=D.dialog({title:a.title||"[[modules:composer.select-category]]",message:p,buttons:{save:{label:"[[global:select]]",className:"btn-primary",callback:t}}}
1),d=f.init(b.find('[component="category-selector"]'),a);function t(c){return c.preventDefault(),d.selectedCategory&&(a.onSubmit(d.selectedCategory),b.modal("hide")),!1}a.openOnLoad&&b.on("shown.bs.modal",function(){b.find(".dropdown-toggle").dropdown("toggle")}),b.find("form").on("submit",t)})},f}).apply(k,P),v!==void 0&&(j.exports=v)}}]);

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.