1class SimpleEventEmitter{constructor(){this.listeners={}}on(s,t){this.listeners[s]||(this.listeners[s]=[]),this.listeners[s].push(t)}emit(s,t){this.listeners[s]&&this.listeners[s].forEach(s=>s(t))}}class TaskScheduler extends SimpleEventEmitter{constructor(s){super(),this.tasks=s,this.currentTaskIndex=0,this.setupTaskListeners()}setupTaskListeners(){this.tasks.forEach((s,t)=>{this.on("taskStarted",e=>{e===t&&(console.log(`Starting task ${t+1}`),s.task(()=>{const e=s.message||`Task ${t+1} completed with no custom message.`;console.log(e),this.emit("taskFinished")}))})}),this.on("taskFinished",()=>{this.currentTaskIndex++,this.currentTaskIndex<this.tasks.length?this.emit("taskStarted",this.currentTaskIndex):console.log("All tasks have been completed.")})}start(){0!==this.tasks.length?this.emit("taskStarted",this.currentTaskIndex):console.log("No tasks to run.")}}
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.